← Back to Skills Marketplace
uchibeke

Aport Complete

by Uchi Uchibeke · GitHub ↗ · v0.1.0 · MIT-0
cross-platform ⚠ suspicious
246
Downloads
0
Stars
0
Active Installs
1
Versions
Install in OpenClaw
/install aport-complete
Description
Verify a completed task against your APort passport's deliverable contract before marking it done. Enforces acceptance criteria, summary requirements, test s...
README (SKILL.md)

/aport-complete — Verify Before Done

Your APort passport defines what you must deliver before a task is complete. This skill enforces that contract. Do not mark any task done without running this first.

When to use this skill

  • Before telling a user "I'm done" or "it's complete"
  • Before closing a task, ticket, or GitHub issue
  • Before opening a PR and considering work finished
  • Before handing off to another agent
  • Any time you would otherwise call a task complete

Prerequisites

You must have an APort passport with a deliverable contract.

If you don't have one, create a passport first:

You need APORT_AGENT_ID in your environment. This is returned when you create your passport and saved to aport-passport.json.

Step 1 — Compile your completion context

Before calling the API, gather:

Field Required How to get it
task_id Yes The task/ticket/issue identifier
output_type Yes code, document, analysis, plan, data, or other
summary If passport requires it Write a clear summary of what you did
tests_passing If passport requires it Run your test suite, report result
author_agent_id If reviewer required Your own APORT_AGENT_ID
reviewer_agent_id If reviewer required The agent_id of the reviewing agent
criteria_attestations Always One entry per criterion in your passport
output_content If scan_output enabled Your full output (for pattern scanning)

Step 2 — Build your attestations

Your passport defines acceptance criteria as a list of descriptions. Each criterion maps to a criterion_id — the description slugified to lowercase with spaces replaced by hyphens.

Example:

Criterion description: "A concrete output artifact must be produced"
criterion_id:          "a-concrete-output-artifact-must-be-produced"

For each criterion in your passport, you must submit:

{
  "criterion_id": "a-concrete-output-artifact-must-be-produced",
  "met": true,
  "evidence": "Concrete evidence — a file path, PR URL, CI run id, command output"
}

Evidence must be non-empty. "I believe this is met" is not evidence. Good evidence: PR #47 at github.com/org/repo/pull/47 Good evidence: grep -r "TODO" src/ returned 0 results Good evidence: CI run #1234 passed — https://ci.example.com/runs/1234

Step 3 — Call the verify endpoint

POST https://aport.io/api/verify/policy/deliverable.task.complete.v1
Content-Type: application/json

{
  "context": {
    "agent_id": "YOUR_APORT_AGENT_ID",
    "task_id": "TASK_IDENTIFIER",
    "output_type": "code",
    "author_agent_id": "YOUR_APORT_AGENT_ID",
    "summary": "What you did — must meet minimum word count in your passport",
    "tests_passing": true,
    "criteria_attestations": [
      {
        "criterion_id": "criterion-slug-here",
        "met": true,
        "evidence": "Concrete evidence string"
      }
    ]
  }
}

Note: agent_id goes inside context, alongside the policy-specific fields.

Step 4 — Handle the response

ALLOW response

{
  "decision": {
    "decision_id": "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx",
    "allow": true,
    "reasons": [
      { "code": "capability_verified", "message": "...", "severity": "info" }
    ],
    "created_at": "2026-03-13T09:00:00Z",
    "signature": "...",
    "policy_id": "deliverable.task.complete.v1",
    "agent_id": "ap_..."
  },
  "request_id": "..."
}

The task is done. You may mark it complete, close the ticket, open the PR. Reference the decision_id in your completion message for the audit trail.

DENY response

{
  "decision": {
    "decision_id": "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx",
    "allow": false,
    "reasons": [
      { "code": "oap.summary_insufficient", "message": "Summary is required...", "severity": "error" }
    ]
  },
  "request_id": "..."
}

Do not mark the task done. Check decision.reasons[].code for the deny code. Fix the issue and retry.

deny_code What it means What to do
oap.summary_insufficient Summary too short or missing Rewrite summary with more detail
oap.tests_not_passing Tests failing or not submitted Fix tests, resubmit with tests_passing: true
oap.criteria_not_met A criterion has met: false Resolve the criterion, re-attest
oap.evidence_missing An attestation has no evidence Add a concrete evidence string
oap.criteria_incomplete Missing attestation for a criterion Add attestations for all passport criteria
oap.self_review_not_allowed Reviewer and author are the same Get a different agent to review
oap.blocked_pattern_detected Output contains blocked content Remove blocked patterns, resubmit
oap.passport_suspended Passport is suspended Contact APort — your passport needs attention
oap.unknown_capability Passport missing deliverable.task.complete Create a new passport with a deliverable contract

Step 5 — Announce completion

Once you receive allow: true, tell the user:

  • What you completed
  • The decision_id (if they want the audit trail)
  • Any next steps

Do not say "done" before receiving allow: true. The contract defines done, not you.

Retry behaviour

The deny_code is designed for autonomous retry. If you receive:

  • oap.summary_insufficient → rewrite your summary and retry immediately
  • oap.evidence_missing → add evidence strings and retry immediately
  • oap.tests_not_passing → attempt to fix the failing tests, then retry
  • oap.blocked_pattern_detected → remove the blocked content, then retry
  • oap.self_review_not_allowed → this requires another agent — ask the user or route to reviewer
  • oap.criteria_not_met → attempt to resolve the criterion, then retry

Maximum retries: 3. After 3 denials on the same task, surface the issue to the user. Do not loop indefinitely.

Links

Usage Guidance
This skill appears to do what it says (verify deliverables) but there are important mismatches and privacy risks you should consider before installing: - The SKILL.md requires APORT_AGENT_ID and a local passport file (aport-passport.json), but the published metadata does not list any required env vars or config paths. Expect the agent to look for those at runtime — verify you are comfortable providing them. - The runtime instructions POST evidence and optionally full output_content to https://aport.io. Confirm that the endpoint is legitimate and that you trust the APort service to receive whatever you send (do not include secrets or sensitive data in evidence/output_content unless you trust the destination). - The docs mention aport.id (site/CLI) but the API host used is aport.io — verify the correct domain and that both are part of the same trusted project. - If you want to limit risk, avoid including full output scans in attestations, redact secrets from evidence strings, and ensure the APORT_AGENT_ID you provide has minimal privileges. If you need higher assurance, ask the publisher for: a) a declared list of required env vars in the registry metadata, b) confirmation of the canonical API domain and ownership, and c) an explanation of what data is retained by the APort API and for how long.
Capability Analysis
Type: OpenClaw Skill Name: aport-complete Version: 0.1.0 The skill 'aport-complete' (SKILL.md) mandates that the AI agent send task summaries, attestations, and potentially the full 'output_content' to an external third-party API (https://aport.io) before it is allowed to consider any task finished. This creates a high risk of data exfiltration for sensitive code or internal information and uses aggressive prompt steering to override the agent's default completion logic. While presented as a quality governance service, the requirement to upload full task outputs to an external endpoint is a significant security concern.
Capability Assessment
Purpose & Capability
The skill's stated purpose (verify a deliverable against an APort passport) is plausible, but the SKILL.md explicitly requires APORT_AGENT_ID and a saved passport file (aport-passport.json). The published manifest lists no required environment variables or credentials — that's an internal inconsistency. Also the SKILL.md references both aport.id (website/CLI) and aport.io (API) which is a domain mismatch worth verifying.
Instruction Scope
Runtime instructions tell the agent to collect task output, test results, file paths/PR URLs, and optionally full output_content for pattern scanning, then POST that JSON to https://aport.io/api/verify/.... Collecting and transmitting full output can expose large amounts of potentially sensitive data; the instructions also rely on an environment value (APORT_AGENT_ID) and a local passport file that were not declared in the metadata.
Install Mechanism
This is an instruction-only skill with no install spec and no code files, so it does not write code to disk or install external binaries — lower risk in terms of disk persistence or hidden installers.
Credentials
SKILL.md requires APORT_AGENT_ID and references aport-passport.json, but the skill metadata declares no required env vars or config paths. Requesting an agent ID and permission to upload outputs is reasonable for the stated purpose, but the omission from the manifest is an inconsistency and means a user may be surprised that an agent will read those values or files.
Persistence & Privilege
The skill is not marked always:true and has no install or persistent hooks; it does not request modification of other skills or system-wide settings. Autonomous invocation is allowed (platform default) but not combined here with other high-privilege requests.
How to Use
  1. Make sure OpenClaw is installed (local or Docker)
  2. Run the install command in chat: /install aport-complete
  3. After installation, invoke the skill by name or use /aport-complete
  4. Provide required inputs per the skill's parameter spec and get structured output
Version History
v0.1.0
Initial public release of aport-complete skill. - Enforces deliverable contract from your APort passport before allowing task completion. - Checks acceptance criteria, summary, test results, and reviewer requirements. - Guides users on compiling evidence and submitting attestations for each criterion. - Provides clear allow/deny responses with codes for automated retries or correction. - Designed for integration with any agent or coding assistant over HTTP.
Metadata
Slug aport-complete
Version 0.1.0
License MIT-0
All-time Installs 0
Active Installs 0
Total Versions 1
Frequently Asked Questions

What is Aport Complete?

Verify a completed task against your APort passport's deliverable contract before marking it done. Enforces acceptance criteria, summary requirements, test s... It is an AI Agent Skill for Claude Code / OpenClaw, with 246 downloads so far.

How do I install Aport Complete?

Run "/install aport-complete" in the OpenClaw or Claude Code chat to install it in one step — no extra setup required.

Is Aport Complete free?

Yes, Aport Complete is completely free, licensed under MIT-0. You can download, install and use it at no cost.

Which platforms does Aport Complete support?

Aport Complete is cross-platform and runs anywhere OpenClaw / Claude Code is available (cross-platform).

Who created Aport Complete?

It is built and maintained by Uchi Uchibeke (@uchibeke); the current version is v0.1.0.

💬 Comments