/aport-standup — What Did You Actually Ship?
Most standup updates are written from memory. This one is written from decisions.
APort policy decisions are cryptographically signed records of what you
delivered, when, and what evidence you provided. This skill turns those decisions
into a standup update.
When to use this skill
- - At the start of a work session ("what did I do yesterday?")
- At the end of a work session ("what did I ship today?")
- When a user asks "what have you been doing?"
- Before a team sync or status update
- As input to a weekly retrospective
Prerequisites
You must have an APort passport. If you don't have one:
- - Web: https://aport.id
- CLI: INLINECODE0
- Agent skill: Read https://aport.id/skill and follow the instructions
You need APORT_AGENT_ID in your environment.
Step 1 — Fetch your recent decisions
CODEBLOCK0
This returns your decision history — every policy verification result,
signed and timestamped.
Step 2 — Parse the decisions
Each decision includes:
CODEBLOCK1
Filter to recent decisions based on the standup window.
Sort by created_at descending. Group by policy_id if multiple types present.
Step 3 — Generate the standup
Format the standup based on what the user needs:
Daily standup (default)
CODEBLOCK2
Weekly summary
CODEBLOCK3
Team standup (multiple agents)
If the user has multiple agents with APort passports, offer to generate
a combined standup by fetching decisions for each agent_id.
Step 4 — Highlight blockers
If any tasks were denied in the time window, surface them prominently:
CODEBLOCK4
Repeated denials on the same policy signal something needs human attention.
A task denied more than 3 times should always be surfaced.
Step 5 — Offer the decision trail
At the end of any standup, offer:
CODEBLOCK5
These decision_ids are cryptographically signed. The user or any
auditor can verify them independently at:
CODEBLOCK6
Tone
Keep standups factual and brief. No padding. No "I worked hard on".
The decisions speak. The standup reports what the decisions say.
Good: "Implemented OAuth2 refresh token flow — PR #47"
Bad: "Spent significant time working on the authentication system"
Links
- - Create a passport: https://aport.id (web) or
npx aport-id (CLI) or https://aport.id/skill (agent) - Your decisions: GET https://aport.io/api/verify/decisions/YOURAGENTID
- Verify a decision: GET https://aport.io/api/verify/decisions/get/DECISIONID
- Your passport: https://aport.id/passport/YOURSLUG
技能名称: aport-standup
详细描述:
/aport-standup — 你实际交付了什么?
大多数站会更新都是凭记忆写出来的。而这份站会更新是基于决策生成的。
APort 策略决策是经过加密签名的记录,记载了你交付了什么、何时交付以及提供了哪些证据。本技能将这些决策转化为站会更新。
何时使用本技能
- - 工作会话开始时(我昨天做了什么?)
- 工作会话结束时(我今天交付了什么?)
- 当用户询问你一直在做什么?时
- 在团队同步或状态更新之前
- 作为周回顾的输入
前置条件
你必须拥有 APort 护照。如果没有:
- - 网页端: https://aport.id
- 命令行: npx aport-id
- 智能体技能: 阅读 https://aport.id/skill 并按照说明操作
你需要在环境中设置 APORTAGENTID。
步骤 1 — 获取近期决策
GET https://aport.io/api/verify/decisions/YOURAGENTID
这将返回你的决策历史——每一项策略验证结果,均经过签名并带有时间戳。
步骤 2 — 解析决策
每项决策包含:
json
{
decision_id: xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx,
allow: true,
policy_id: deliverable.task.complete.v1,
created_at: 2026-03-13T09:00:00Z,
agentid: ap...,
reasons: [
{ code: capability_verified, message: ..., severity: info }
],
signature: ...
}
根据站会时间窗口筛选近期决策。
按 createdat 降序排列。如果存在多种类型,则按 policyid 分组。
步骤 3 — 生成站会更新
根据用户需求格式化站会更新:
每日站会(默认)
站会 — [日期] — [智能体名称]
已完成(经 APort 验证)
- [决策中的任务上下文] — [decision_id] — [时间]
- [决策中的任务上下文] — [decision_id] — [时间]
被拒绝 / 进行中
- [decision_id] — 受阻于 [原因代码] — [上次尝试时间]
统计
- 完成任务数:X
- 尝试任务数:Y
- 完成率:Z%
周总结
周报 [日期范围] — [智能体名称]
已交付
[允许决策列表及上下文]
受阻
[拒绝决策列表,最近的原因代码]
模式
[最常见的拒绝原因(如有)—— 表明系统性问题]
决策轨迹
[用于审计的 decision_id 列表 —— 每行一个]
团队站会(多个智能体)
如果用户拥有多个带有 APort 护照的智能体,可提供选项,通过获取每个 agent_id 的决策来生成合并的站会更新。
步骤 4 — 突出显示阻塞项
如果在时间窗口内有任何任务被拒绝,请突出显示:
需要关注的阻塞项
- [decision_id] — 被拒绝 — [原因代码]
此任务需要:[原因代码所指示的内容]
同一策略的重复拒绝表明需要人工关注。
一项任务被拒绝超过 3 次,应始终予以突出显示。
步骤 5 — 提供决策轨迹
在任何站会更新结束时,提供:
用于审计的决策 ID:
dec_001 — 允许 — deliverable.task.complete.v1 — 2026-03-13T09:00:00Z
dec_002 — 允许 — deliverable.task.complete.v1 — 2026-03-13T11:30:00Z
这些 decision_id 经过加密签名。用户或任何审计员可以独立验证它们:
GET https://aport.io/api/verify/decisions/get/DECISION_ID
语气
保持站会更新客观简洁。不要添加冗余内容。不要写我努力工作了。
决策本身会说话。站会更新只报告决策所表达的内容。
正确示例:实现了 OAuth2 刷新令牌流程 — PR #47
错误示例:花了大量时间在认证系统上工作
链接
- - 创建护照:https://aport.id(网页端)或 npx aport-id(命令行)或 https://aport.id/skill(智能体)
- 你的决策:GET https://aport.io/api/verify/decisions/YOURAGENTID
- 验证决策:GET https://aport.io/api/verify/decisions/get/DECISIONID
- 你的护照:https://aport.id/passport/YOURSLUG