@fitlab-ai/agent-infra 0.8.5 → 0.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bin/cli.ts +2 -2
- package/dist/bin/cli.js +2 -2
- package/dist/bin/internal-cli.js +98 -0
- package/dist/lib/decide.js +81 -90
- package/dist/lib/defaults.json +1 -0
- package/dist/lib/git/review-snapshot.js +79 -0
- package/dist/lib/git/workflow.js +101 -0
- package/dist/lib/internal/git-workflow.js +42 -0
- package/dist/lib/internal/platform-checks.js +119 -0
- package/dist/lib/internal/platform-comment.js +129 -0
- package/dist/lib/internal/platform-context.js +46 -0
- package/dist/lib/internal/platform-issue.js +142 -0
- package/dist/lib/internal/platform-pr.js +146 -0
- package/dist/lib/internal/release-workflow.js +217 -0
- package/dist/lib/internal/task-artifact.js +67 -0
- package/dist/lib/internal/task-context.js +43 -0
- package/dist/lib/internal/task-event.js +70 -0
- package/dist/lib/internal/task-ledger.js +114 -0
- package/dist/lib/internal/task-lifecycle.js +58 -0
- package/dist/lib/internal/task-short-id.js +83 -0
- package/dist/lib/internal/task-snapshot.js +47 -0
- package/dist/lib/internal/task-verify.js +50 -0
- package/dist/lib/internal/task-warning.js +74 -0
- package/dist/lib/platform/adapters.js +14 -0
- package/dist/lib/platform/context.js +146 -0
- package/dist/lib/platform/github-client.js +124 -0
- package/dist/lib/platform/issue-comments.js +409 -0
- package/dist/lib/platform/issue-metadata.js +183 -0
- package/dist/lib/platform/issues.js +617 -0
- package/dist/lib/platform/metadata-labels.js +28 -0
- package/dist/lib/platform/pr-checks.js +216 -0
- package/dist/lib/platform/pr-summary.js +88 -0
- package/dist/lib/platform/pull-request-metadata.js +38 -0
- package/dist/lib/platform/pull-requests.js +338 -0
- package/dist/lib/platform/releases.js +82 -0
- package/dist/lib/platform/types.js +22 -0
- package/dist/lib/platform/verification-required.js +78 -0
- package/dist/lib/platform/verification-sync.js +1014 -0
- package/dist/lib/platform/verification.js +6 -0
- package/dist/lib/release/channels.js +31 -0
- package/dist/lib/release/workflow.js +32 -0
- package/dist/lib/render.js +3 -2
- package/dist/lib/run/index.js +24 -7
- package/dist/lib/sandbox/capture.js +25 -3
- package/dist/lib/sandbox/commands/create.js +36 -22
- package/dist/lib/sandbox/commands/enter.js +34 -11
- package/dist/lib/sandbox/commands/list-running.js +10 -8
- package/dist/lib/sandbox/commands/show.js +2 -2
- package/dist/lib/sandbox/commands/start.js +53 -15
- package/dist/lib/sandbox/index.js +6 -6
- package/dist/lib/sandbox/mounts.js +36 -0
- package/dist/lib/sandbox/recovery.js +562 -0
- package/dist/lib/sandbox/task-resolver.js +5 -1
- package/dist/lib/sandbox/tools.js +19 -0
- package/dist/lib/server/protocol.js +5 -5
- package/dist/lib/task/activity-log.js +61 -0
- package/dist/lib/task/artifact-lifecycle.js +427 -0
- package/dist/lib/task/command-options.js +30 -0
- package/dist/lib/task/commands/cat.js +36 -6
- package/dist/lib/task/commands/decisions.js +80 -46
- package/dist/lib/task/commands/files.js +21 -7
- package/dist/lib/task/commands/grep.js +55 -7
- package/dist/lib/task/commands/issue-body.js +23 -14
- package/dist/lib/task/commands/log.js +27 -70
- package/dist/lib/task/commands/show.js +20 -7
- package/dist/lib/task/commands/status.js +18 -8
- package/dist/lib/task/decision-intents.js +154 -0
- package/dist/lib/task/decision-items.js +53 -0
- package/dist/lib/task/events.js +318 -0
- package/dist/lib/task/frontmatter.js +159 -1
- package/dist/lib/task/implementation-inputs.js +117 -0
- package/dist/lib/task/index.js +12 -9
- package/dist/lib/task/issue-form.js +19 -6
- package/dist/lib/task/ledger-intents.js +185 -0
- package/dist/lib/task/ledger.js +65 -35
- package/dist/lib/task/lifecycle.js +484 -0
- package/dist/lib/task/resolve-ref.js +152 -32
- package/dist/lib/task/review-artifacts.js +101 -0
- package/dist/lib/task/review-fingerprint.js +46 -0
- package/dist/lib/task/sections.js +358 -4
- package/dist/lib/task/short-id.js +292 -7
- package/dist/lib/task/snapshot.js +95 -0
- package/dist/lib/task/verification-checks.js +8 -0
- package/dist/lib/task/verification-config.js +14 -0
- package/dist/lib/task/verification-engine.js +906 -0
- package/dist/lib/task/verification-review.js +3 -0
- package/dist/lib/task/verification-types.js +2 -0
- package/dist/lib/task/verification.js +113 -0
- package/dist/lib/task/workflow-warning-intents.js +131 -0
- package/dist/lib/task/workflow-warnings.js +10 -78
- package/dist/lib/task/write.js +241 -0
- package/lib/decide.ts +57 -97
- package/lib/defaults.json +1 -0
- package/lib/git/review-snapshot.ts +73 -0
- package/lib/git/workflow.ts +101 -0
- package/lib/internal/git-workflow.ts +37 -0
- package/lib/internal/platform-checks.ts +101 -0
- package/lib/internal/platform-comment.ts +99 -0
- package/lib/internal/platform-context.ts +33 -0
- package/lib/internal/platform-issue.ts +116 -0
- package/lib/internal/platform-pr.ts +119 -0
- package/lib/internal/release-workflow.ts +186 -0
- package/lib/internal/task-artifact.ts +47 -0
- package/lib/internal/task-context.ts +35 -0
- package/lib/internal/task-event.ts +51 -0
- package/lib/internal/task-ledger.ts +86 -0
- package/lib/internal/task-lifecycle.ts +41 -0
- package/lib/internal/task-short-id.ts +55 -0
- package/lib/internal/task-snapshot.ts +32 -0
- package/lib/internal/task-verify.ts +33 -0
- package/lib/internal/task-warning.ts +50 -0
- package/lib/platform/adapters.ts +30 -0
- package/lib/platform/context.ts +164 -0
- package/lib/platform/github-client.ts +146 -0
- package/lib/platform/issue-comments.ts +479 -0
- package/lib/platform/issue-metadata.ts +250 -0
- package/lib/platform/issues.ts +691 -0
- package/lib/platform/metadata-labels.ts +33 -0
- package/lib/platform/pr-checks.ts +246 -0
- package/lib/platform/pr-summary.ts +90 -0
- package/lib/platform/pull-request-metadata.ts +69 -0
- package/lib/platform/pull-requests.ts +380 -0
- package/lib/platform/releases.ts +71 -0
- package/lib/platform/types.ts +74 -0
- package/lib/platform/verification-required.ts +83 -0
- package/{runtime/platform-adapters/platform-sync.github.js → lib/platform/verification-sync.ts} +198 -367
- package/lib/platform/verification.ts +11 -0
- package/lib/release/channels.ts +30 -0
- package/lib/release/workflow.ts +31 -0
- package/lib/render.ts +3 -2
- package/lib/run/index.ts +25 -7
- package/lib/sandbox/capture.ts +29 -3
- package/lib/sandbox/commands/create.ts +43 -25
- package/lib/sandbox/commands/enter.ts +38 -11
- package/lib/sandbox/commands/list-running.ts +10 -8
- package/lib/sandbox/commands/show.ts +2 -2
- package/lib/sandbox/commands/start.ts +50 -16
- package/lib/sandbox/index.ts +6 -6
- package/lib/sandbox/mounts.ts +55 -0
- package/lib/sandbox/recovery.ts +828 -0
- package/lib/sandbox/task-resolver.ts +5 -1
- package/lib/sandbox/tools.ts +31 -0
- package/lib/server/protocol.ts +5 -5
- package/lib/task/activity-log.ts +62 -0
- package/lib/task/artifact-lifecycle.ts +484 -0
- package/lib/task/command-options.ts +32 -0
- package/lib/task/commands/cat.ts +22 -9
- package/lib/task/commands/decisions.ts +49 -47
- package/lib/task/commands/files.ts +14 -6
- package/lib/task/commands/grep.ts +34 -7
- package/lib/task/commands/issue-body.ts +16 -16
- package/lib/task/commands/log.ts +17 -70
- package/lib/task/commands/show.ts +14 -6
- package/lib/task/commands/status.ts +17 -7
- package/lib/task/decision-intents.ts +163 -0
- package/lib/task/decision-items.ts +64 -0
- package/lib/task/events.ts +320 -0
- package/lib/task/frontmatter.ts +202 -2
- package/lib/task/implementation-inputs.ts +137 -0
- package/lib/task/index.ts +12 -9
- package/lib/task/issue-form.ts +20 -6
- package/lib/task/ledger-intents.ts +201 -0
- package/lib/task/ledger.ts +77 -31
- package/lib/task/lifecycle.ts +458 -0
- package/lib/task/resolve-ref.ts +197 -36
- package/{templates/.agents/scripts/lib/review-artifacts.js → lib/task/review-artifacts.ts} +11 -12
- package/{templates/.agents/scripts/lib/post-review-commit.js → lib/task/review-fingerprint.ts} +17 -12
- package/lib/task/sections.ts +486 -4
- package/lib/task/short-id.ts +403 -9
- package/lib/task/snapshot.ts +143 -0
- package/lib/task/verification-checks.ts +9 -0
- package/lib/task/verification-config.ts +20 -0
- package/{templates/.agents/scripts/validate-artifact.js → lib/task/verification-engine.ts} +199 -406
- package/lib/task/verification-review.ts +9 -0
- package/lib/task/verification-types.ts +29 -0
- package/lib/task/verification.ts +156 -0
- package/lib/task/workflow-warning-intents.ts +142 -0
- package/lib/task/workflow-warnings.ts +10 -78
- package/lib/task/write.ts +468 -0
- package/package.json +4 -2
- package/templates/.agents/README.en.md +4 -3
- package/templates/.agents/README.zh-CN.md +4 -3
- package/templates/.agents/rules/README.en.md +6 -5
- package/templates/.agents/rules/README.zh-CN.md +6 -5
- package/templates/.agents/rules/create-issue.en.md +1 -1
- package/templates/.agents/rules/create-issue.github.en.md +5 -184
- package/templates/.agents/rules/create-issue.github.zh-CN.md +12 -178
- package/templates/.agents/rules/create-issue.zh-CN.md +1 -1
- package/templates/.agents/rules/human-decision-context.en.md +36 -0
- package/templates/.agents/rules/human-decision-context.zh-CN.md +36 -0
- package/templates/.agents/rules/issue-fields.github.en.md +4 -148
- package/templates/.agents/rules/issue-fields.github.zh-CN.md +9 -144
- package/templates/.agents/rules/issue-pr-commands.en.md +43 -3
- package/templates/.agents/rules/issue-pr-commands.github.en.md +15 -220
- package/templates/.agents/rules/issue-pr-commands.github.zh-CN.md +23 -213
- package/templates/.agents/rules/issue-pr-commands.zh-CN.md +45 -3
- package/templates/.agents/rules/issue-sync.en.md +1 -1
- package/templates/.agents/rules/issue-sync.github.en.md +14 -301
- package/templates/.agents/rules/issue-sync.github.zh-CN.md +36 -287
- package/templates/.agents/rules/issue-sync.zh-CN.md +1 -1
- package/templates/.agents/rules/milestone-inference.en.md +1 -1
- package/templates/.agents/rules/milestone-inference.github.en.md +7 -119
- package/templates/.agents/rules/milestone-inference.github.zh-CN.md +8 -108
- package/templates/.agents/rules/milestone-inference.zh-CN.md +1 -1
- package/templates/.agents/rules/next-step-output.en.md +12 -11
- package/templates/.agents/rules/next-step-output.zh-CN.md +12 -11
- package/templates/.agents/rules/no-mid-flow-questions.en.md +3 -3
- package/templates/.agents/rules/no-mid-flow-questions.zh-CN.md +3 -3
- package/templates/.agents/rules/pr-checks-commands.en.md +16 -3
- package/templates/.agents/rules/pr-checks-commands.github.en.md +10 -54
- package/templates/.agents/rules/pr-checks-commands.github.zh-CN.md +19 -47
- package/templates/.agents/rules/pr-checks-commands.zh-CN.md +30 -3
- package/templates/.agents/rules/pr-sync.en.md +30 -3
- package/templates/.agents/rules/pr-sync.github.en.md +12 -115
- package/templates/.agents/rules/pr-sync.github.zh-CN.md +26 -104
- package/templates/.agents/rules/pr-sync.zh-CN.md +43 -3
- package/templates/.agents/rules/review-handshake.en.md +8 -5
- package/templates/.agents/rules/review-handshake.zh-CN.md +8 -5
- package/templates/.agents/rules/task-management.en.md +11 -2
- package/templates/.agents/rules/task-management.zh-CN.md +11 -3
- package/templates/.agents/rules/task-short-id.en.md +25 -29
- package/templates/.agents/rules/task-short-id.zh-CN.md +20 -23
- package/templates/.agents/scripts/lib/agent-infra-package.js +1 -9
- package/templates/.agents/scripts/task-short-id.js +71 -533
- package/templates/.agents/skills/analyze-task/SKILL.en.md +22 -55
- package/templates/.agents/skills/analyze-task/SKILL.zh-CN.md +26 -59
- package/templates/.agents/skills/analyze-task/config/verify.en.json +1 -3
- package/templates/.agents/skills/analyze-task/config/verify.zh-CN.json +1 -3
- package/templates/.agents/skills/block-task/SKILL.en.md +21 -47
- package/templates/.agents/skills/block-task/SKILL.zh-CN.md +23 -47
- package/templates/.agents/skills/block-task/config/verify.json +1 -2
- package/templates/.agents/skills/cancel-task/SKILL.en.md +16 -45
- package/templates/.agents/skills/cancel-task/SKILL.zh-CN.md +16 -45
- package/templates/.agents/skills/cancel-task/config/verify.json +1 -2
- package/templates/.agents/skills/check-task/SKILL.en.md +6 -3
- package/templates/.agents/skills/check-task/SKILL.zh-CN.md +6 -3
- package/templates/.agents/skills/close-codescan/SKILL.en.md +6 -24
- package/templates/.agents/skills/close-codescan/SKILL.zh-CN.md +6 -24
- package/templates/.agents/skills/close-dependabot/SKILL.en.md +6 -24
- package/templates/.agents/skills/close-dependabot/SKILL.zh-CN.md +6 -24
- package/templates/.agents/skills/code-task/SKILL.en.md +22 -35
- package/templates/.agents/skills/code-task/SKILL.zh-CN.md +28 -44
- package/templates/.agents/skills/code-task/config/verify.en.json +3 -3
- package/templates/.agents/skills/code-task/config/verify.zh-CN.json +3 -3
- package/templates/.agents/skills/code-task/reference/dual-mode.en.md +13 -9
- package/templates/.agents/skills/code-task/reference/dual-mode.zh-CN.md +13 -9
- package/templates/.agents/skills/code-task/reference/fix-mode.en.md +1 -1
- package/templates/.agents/skills/code-task/reference/fix-mode.zh-CN.md +1 -1
- package/templates/.agents/skills/code-task/reference/report-template.en.md +11 -1
- package/templates/.agents/skills/code-task/reference/report-template.zh-CN.md +11 -1
- package/templates/.agents/skills/commit/SKILL.en.md +13 -11
- package/templates/.agents/skills/commit/SKILL.zh-CN.md +13 -11
- package/templates/.agents/skills/commit/config/verify.json +1 -2
- package/templates/.agents/skills/commit/reference/commit-message.en.md +1 -11
- package/templates/.agents/skills/commit/reference/commit-message.zh-CN.md +1 -11
- package/templates/.agents/skills/commit/reference/issue-metadata-sync.en.md +4 -8
- package/templates/.agents/skills/commit/reference/issue-metadata-sync.zh-CN.md +4 -8
- package/templates/.agents/skills/commit/reference/pr-summary-sync.en.md +6 -18
- package/templates/.agents/skills/commit/reference/pr-summary-sync.zh-CN.md +5 -17
- package/templates/.agents/skills/commit/reference/task-status-update.en.md +13 -0
- package/templates/.agents/skills/commit/reference/task-status-update.zh-CN.md +13 -0
- package/templates/.agents/skills/complete-manual-validation/SKILL.en.md +13 -36
- package/templates/.agents/skills/complete-manual-validation/SKILL.zh-CN.md +13 -36
- package/templates/.agents/skills/complete-manual-validation/config/verify.en.json +1 -3
- package/templates/.agents/skills/complete-manual-validation/config/verify.zh-CN.json +1 -3
- package/templates/.agents/skills/complete-manual-validation/reference/summary-update.en.md +10 -54
- package/templates/.agents/skills/complete-manual-validation/reference/summary-update.zh-CN.md +10 -79
- package/templates/.agents/skills/complete-task/SKILL.en.md +59 -63
- package/templates/.agents/skills/complete-task/SKILL.zh-CN.md +59 -63
- package/templates/.agents/skills/complete-task/config/verify.en.json +11 -7
- package/templates/.agents/skills/complete-task/config/verify.zh-CN.json +11 -7
- package/templates/.agents/skills/create-pr/SKILL.en.md +19 -44
- package/templates/.agents/skills/create-pr/SKILL.zh-CN.md +19 -43
- package/templates/.agents/skills/create-pr/config/verify.json +1 -2
- package/templates/.agents/skills/create-pr/reference/comment-publish.en.md +8 -12
- package/templates/.agents/skills/create-pr/reference/comment-publish.zh-CN.md +7 -11
- package/templates/.agents/skills/create-task/SKILL.en.md +12 -13
- package/templates/.agents/skills/create-task/SKILL.zh-CN.md +12 -13
- package/templates/.agents/skills/create-task/config/verify.json +1 -2
- package/templates/.agents/skills/import-codescan/SKILL.en.md +2 -2
- package/templates/.agents/skills/import-codescan/SKILL.zh-CN.md +2 -2
- package/templates/.agents/skills/import-codescan/config/verify.json +1 -2
- package/templates/.agents/skills/import-dependabot/SKILL.en.md +2 -2
- package/templates/.agents/skills/import-dependabot/SKILL.zh-CN.md +2 -2
- package/templates/.agents/skills/import-dependabot/config/verify.json +1 -2
- package/templates/.agents/skills/import-issue/SKILL.en.md +9 -13
- package/templates/.agents/skills/import-issue/SKILL.zh-CN.md +10 -14
- package/templates/.agents/skills/import-issue/config/verify.json +1 -2
- package/templates/.agents/skills/plan-task/SKILL.en.md +17 -42
- package/templates/.agents/skills/plan-task/SKILL.zh-CN.md +22 -49
- package/templates/.agents/skills/plan-task/config/verify.en.json +1 -3
- package/templates/.agents/skills/plan-task/config/verify.zh-CN.json +1 -3
- package/templates/.agents/skills/post-release/SKILL.en.md +11 -81
- package/templates/.agents/skills/post-release/SKILL.zh-CN.md +8 -78
- package/templates/.agents/skills/refine-title/SKILL.en.md +1 -1
- package/templates/.agents/skills/refine-title/SKILL.zh-CN.md +1 -1
- package/templates/.agents/skills/release/SKILL.en.md +16 -163
- package/templates/.agents/skills/release/SKILL.zh-CN.md +15 -162
- package/templates/.agents/skills/restore-task/SKILL.en.md +11 -29
- package/templates/.agents/skills/restore-task/SKILL.zh-CN.md +11 -29
- package/templates/.agents/skills/restore-task/config/verify.json +1 -2
- package/templates/.agents/skills/review-analysis/SKILL.en.md +13 -25
- package/templates/.agents/skills/review-analysis/SKILL.zh-CN.md +13 -33
- package/templates/.agents/skills/review-analysis/config/verify.en.json +3 -4
- package/templates/.agents/skills/review-analysis/config/verify.zh-CN.json +3 -4
- package/templates/.agents/skills/review-analysis/reference/output-templates.en.md +9 -12
- package/templates/.agents/skills/review-analysis/reference/output-templates.zh-CN.md +9 -12
- package/templates/.agents/skills/review-analysis/reference/report-template.en.md +9 -2
- package/templates/.agents/skills/review-analysis/reference/report-template.zh-CN.md +9 -2
- package/templates/.agents/skills/review-analysis/reference/review-criteria.en.md +7 -0
- package/templates/.agents/skills/review-analysis/reference/review-criteria.zh-CN.md +7 -0
- package/templates/.agents/skills/review-code/SKILL.en.md +22 -36
- package/templates/.agents/skills/review-code/SKILL.zh-CN.md +23 -41
- package/templates/.agents/skills/review-code/config/verify.en.json +3 -4
- package/templates/.agents/skills/review-code/config/verify.zh-CN.json +3 -4
- package/templates/.agents/skills/review-code/reference/output-templates.en.md +56 -18
- package/templates/.agents/skills/review-code/reference/output-templates.zh-CN.md +56 -18
- package/templates/.agents/skills/review-code/reference/report-template.en.md +11 -4
- package/templates/.agents/skills/review-code/reference/report-template.zh-CN.md +11 -4
- package/templates/.agents/skills/review-code/reference/review-criteria.en.md +7 -0
- package/templates/.agents/skills/review-code/reference/review-criteria.zh-CN.md +7 -0
- package/templates/.agents/skills/review-plan/SKILL.en.md +13 -25
- package/templates/.agents/skills/review-plan/SKILL.zh-CN.md +13 -33
- package/templates/.agents/skills/review-plan/config/verify.en.json +3 -4
- package/templates/.agents/skills/review-plan/config/verify.zh-CN.json +3 -4
- package/templates/.agents/skills/review-plan/reference/output-templates.en.md +9 -12
- package/templates/.agents/skills/review-plan/reference/output-templates.zh-CN.md +9 -12
- package/templates/.agents/skills/review-plan/reference/report-template.en.md +9 -2
- package/templates/.agents/skills/review-plan/reference/report-template.zh-CN.md +9 -2
- package/templates/.agents/skills/review-plan/reference/review-criteria.en.md +7 -0
- package/templates/.agents/skills/review-plan/reference/review-criteria.zh-CN.md +7 -0
- package/templates/.agents/skills/update-agent-infra/SKILL.en.md +1 -2
- package/templates/.agents/skills/update-agent-infra/SKILL.zh-CN.md +1 -2
- package/templates/.agents/skills/update-agent-infra/scripts/sync-templates.js +3 -15
- package/templates/.agents/skills/watch-pr/SKILL.en.md +24 -14
- package/templates/.agents/skills/watch-pr/SKILL.zh-CN.md +25 -15
- package/templates/.agents/skills/watch-pr/config/verify.json +1 -2
- package/templates/.agents/skills/watch-pr/reference/monitor-and-heal.en.md +2 -2
- package/templates/.agents/skills/watch-pr/reference/monitor-and-heal.zh-CN.md +2 -2
- package/templates/.agents/templates/task.en.md +6 -1
- package/templates/.agents/templates/task.zh-CN.md +6 -1
- package/templates/.claude/commands/analyze-task.en.md +1 -1
- package/templates/.claude/commands/analyze-task.zh-CN.md +1 -1
- package/templates/.claude/commands/block-task.en.md +1 -1
- package/templates/.claude/commands/block-task.zh-CN.md +1 -1
- package/templates/.claude/commands/cancel-task.en.md +1 -1
- package/templates/.claude/commands/cancel-task.zh-CN.md +1 -1
- package/templates/.claude/commands/check-task.en.md +1 -1
- package/templates/.claude/commands/check-task.zh-CN.md +1 -1
- package/templates/.claude/commands/code-task.en.md +1 -1
- package/templates/.claude/commands/code-task.zh-CN.md +1 -1
- package/templates/.claude/commands/commit.en.md +1 -0
- package/templates/.claude/commands/commit.zh-CN.md +1 -0
- package/templates/.claude/commands/complete-manual-validation.en.md +1 -1
- package/templates/.claude/commands/complete-manual-validation.zh-CN.md +1 -1
- package/templates/.claude/commands/complete-task.en.md +1 -1
- package/templates/.claude/commands/complete-task.zh-CN.md +1 -1
- package/templates/.claude/commands/create-pr.en.md +1 -1
- package/templates/.claude/commands/create-pr.zh-CN.md +1 -1
- package/templates/.claude/commands/plan-task.en.md +1 -1
- package/templates/.claude/commands/plan-task.zh-CN.md +1 -1
- package/templates/.claude/commands/review-analysis.en.md +1 -1
- package/templates/.claude/commands/review-analysis.zh-CN.md +1 -1
- package/templates/.claude/commands/review-code.en.md +1 -1
- package/templates/.claude/commands/review-code.zh-CN.md +1 -1
- package/templates/.claude/commands/review-plan.en.md +1 -1
- package/templates/.claude/commands/review-plan.zh-CN.md +1 -1
- package/templates/.claude/commands/watch-pr.en.md +1 -1
- package/templates/.claude/commands/watch-pr.zh-CN.md +1 -1
- package/templates/.gemini/commands/_project_/analyze-task.en.toml +2 -0
- package/templates/.gemini/commands/_project_/analyze-task.zh-CN.toml +2 -0
- package/templates/.gemini/commands/_project_/block-task.en.toml +2 -0
- package/templates/.gemini/commands/_project_/block-task.zh-CN.toml +2 -0
- package/templates/.gemini/commands/_project_/cancel-task.en.toml +2 -0
- package/templates/.gemini/commands/_project_/cancel-task.zh-CN.toml +2 -0
- package/templates/.gemini/commands/_project_/check-task.en.toml +2 -0
- package/templates/.gemini/commands/_project_/check-task.zh-CN.toml +2 -0
- package/templates/.gemini/commands/_project_/code-task.en.toml +2 -0
- package/templates/.gemini/commands/_project_/code-task.zh-CN.toml +2 -0
- package/templates/.gemini/commands/_project_/commit.en.toml +4 -0
- package/templates/.gemini/commands/_project_/commit.zh-CN.toml +4 -0
- package/templates/.gemini/commands/_project_/complete-manual-validation.en.toml +2 -0
- package/templates/.gemini/commands/_project_/complete-manual-validation.zh-CN.toml +2 -0
- package/templates/.gemini/commands/_project_/complete-task.en.toml +2 -0
- package/templates/.gemini/commands/_project_/complete-task.zh-CN.toml +2 -0
- package/templates/.gemini/commands/_project_/create-pr.en.toml +2 -0
- package/templates/.gemini/commands/_project_/create-pr.zh-CN.toml +2 -0
- package/templates/.gemini/commands/_project_/plan-task.en.toml +2 -0
- package/templates/.gemini/commands/_project_/plan-task.zh-CN.toml +2 -0
- package/templates/.gemini/commands/_project_/review-analysis.en.toml +2 -0
- package/templates/.gemini/commands/_project_/review-analysis.zh-CN.toml +2 -0
- package/templates/.gemini/commands/_project_/review-code.en.toml +2 -0
- package/templates/.gemini/commands/_project_/review-code.zh-CN.toml +2 -0
- package/templates/.gemini/commands/_project_/review-plan.en.toml +2 -0
- package/templates/.gemini/commands/_project_/review-plan.zh-CN.toml +2 -0
- package/templates/.gemini/commands/_project_/watch-pr.en.toml +2 -0
- package/templates/.gemini/commands/_project_/watch-pr.zh-CN.toml +2 -0
- package/templates/.git-hooks/check-large-files.cjs +92 -0
- package/templates/.git-hooks/check-version-format.sh +5 -1
- package/templates/.git-hooks/pre-commit +1 -0
- package/templates/.opencode/commands/analyze-task.en.md +1 -1
- package/templates/.opencode/commands/analyze-task.zh-CN.md +1 -1
- package/templates/.opencode/commands/check-task.en.md +1 -1
- package/templates/.opencode/commands/check-task.zh-CN.md +1 -1
- package/templates/.opencode/commands/code-task.en.md +1 -1
- package/templates/.opencode/commands/code-task.zh-CN.md +1 -1
- package/templates/.opencode/commands/commit.en.md +2 -0
- package/templates/.opencode/commands/commit.zh-CN.md +2 -0
- package/templates/.opencode/commands/complete-task.en.md +1 -1
- package/templates/.opencode/commands/complete-task.zh-CN.md +1 -1
- package/templates/.opencode/commands/plan-task.en.md +1 -1
- package/templates/.opencode/commands/plan-task.zh-CN.md +1 -1
- package/templates/.opencode/commands/review-analysis.en.md +1 -1
- package/templates/.opencode/commands/review-analysis.zh-CN.md +1 -1
- package/templates/.opencode/commands/review-code.en.md +1 -1
- package/templates/.opencode/commands/review-code.zh-CN.md +1 -1
- package/templates/.opencode/commands/review-plan.en.md +1 -1
- package/templates/.opencode/commands/review-plan.zh-CN.md +1 -1
- package/templates/.agents/scripts/platform-adapters/platform-sync.github.js +0 -40
- package/templates/.agents/scripts/platform-adapters/platform-sync.js +0 -13
- package/templates/.agents/scripts/review-diff-fingerprint.js +0 -170
- package/templates/.agents/scripts/workflow-warnings.js +0 -290
- package/templates/.agents/skills/code-task/scripts/detect-mode.js +0 -257
- package/templates/.agents/skills/release/scripts/manage-milestones.github.sh +0 -80
- package/templates/.agents/skills/release/scripts/manage-milestones.sh +0 -6
|
@@ -3,6 +3,7 @@ name: analyze-task
|
|
|
3
3
|
description: >
|
|
4
4
|
Analyze a task and produce a requirements document.
|
|
5
5
|
Use when you need to understand a task's requirements, scope, and risks before designing a solution.
|
|
6
|
+
Only invoke this skill automatically when the conversation includes a resolvable task reference.
|
|
6
7
|
---
|
|
7
8
|
|
|
8
9
|
# Analyze Task
|
|
@@ -22,26 +23,20 @@ After loading workflow / skill / rules instructions, and before any task-state j
|
|
|
22
23
|
Run these commands and paste the raw output into both the user-facing reply and this round's `## State Check` section:
|
|
23
24
|
|
|
24
25
|
```bash
|
|
25
|
-
|
|
26
|
-
ls -la .agents/workspace/active/{task-id}/
|
|
27
|
-
tail .agents/workspace/active/{task-id}/task.md
|
|
26
|
+
agent-infra-internal task-snapshot {task-id} --format text
|
|
28
27
|
```
|
|
29
28
|
|
|
30
29
|
Before the state check is complete, do not make external-state assertions such as "the code is unchanged", "tests passed", or "there are no other references", including in reasoning. This gate is only a structural floor; evidence pairing and authenticity still require the report template and review discipline.
|
|
31
30
|
|
|
32
|
-
## Task
|
|
31
|
+
## Task Context Resolution
|
|
33
32
|
|
|
34
|
-
>
|
|
33
|
+
> The entry point may omit the task ref and also accepts a legacy positional ref or `--task <ref>` / `-t <ref>`. Separate task scope from the full arguments while preserving every business operand, then call `agent-infra-internal task-context resolve {task-scope}` where `{task-scope}` is empty, one positional ref, or one task flag. Read only `taskId` from the structured result and bind `{task-id}` to that full `TASK-YYYYMMDD-HHMMSS` for downstream commands. Pass through resolution failures without scanning tasks locally.
|
|
35
34
|
|
|
36
|
-
|
|
35
|
+
> Resolve the task reference, then confirm that the task is in a state or directory supported by this skill and that `task.md` exists; if it cannot be located, handle it as a missing task and stop.
|
|
37
36
|
|
|
38
|
-
|
|
37
|
+
## Step Start: Declare the started Event
|
|
39
38
|
|
|
40
|
-
|
|
41
|
-
- {YYYY-MM-DD HH:mm:ss±HH:MM} — **Analyze Task (Round {N}) [started]** by {agent} — started
|
|
42
|
-
```
|
|
43
|
-
|
|
44
|
-
`ai task log` pairs it with the done entry written on completion (step 7) onto one row (in progress → done). Format and pairing rules: see the "Activity Log started / done dual-marker convention" in `.agents/rules/task-management.md`.
|
|
39
|
+
After resolving the artifact context and before this round's first artifact action, run `agent-infra-internal task-event {task-id} analyze.started --agent {agent}` and verify the returned `artifactContext`.
|
|
45
40
|
|
|
46
41
|
## Steps
|
|
47
42
|
|
|
@@ -54,16 +49,9 @@ Note: `{task-id}` format is `TASK-{yyyyMMdd-HHmmss}`, for example `TASK-20260306
|
|
|
54
49
|
|
|
55
50
|
If `task.md` is missing, tell the user to create or import the task first.
|
|
56
51
|
|
|
57
|
-
### 2.
|
|
52
|
+
### 2. Resolve the Analysis Context
|
|
58
53
|
|
|
59
|
-
|
|
60
|
-
- If neither `analysis.md` nor `analysis-r*.md` exists -> this is Round 1 and must create `analysis.md`
|
|
61
|
-
- If `analysis.md` exists and no `analysis-r*.md` exists -> this is Round 2 and must create `analysis-r2.md`
|
|
62
|
-
- If `analysis-r{N}.md` exists -> this is Round N+1 and must create `analysis-r{N+1}.md`
|
|
63
|
-
|
|
64
|
-
Record:
|
|
65
|
-
- `{analysis-round}`: the current analysis round
|
|
66
|
-
- `{analysis-artifact}`: the artifact filename for this round
|
|
54
|
+
Run `agent-infra-internal task-artifact {task-id} inspect --family analysis`. Continue only for `ready`; take `{analysis-round}` / `{analysis-artifact}` from `next.round` / `next.name` and revision inputs from `inputs`. Do not scan rounds or construct names in the skill.
|
|
67
55
|
|
|
68
56
|
### 3. Read Task Context
|
|
69
57
|
|
|
@@ -77,7 +65,7 @@ If `task.md` contains these source fields, also read the corresponding source in
|
|
|
77
65
|
- `codescan_alert_number` - Code Scanning alert
|
|
78
66
|
- `security_alert_number` - Dependabot alert
|
|
79
67
|
|
|
80
|
-
**Round ≥ 2: respond to the prior review (only when a review artifact exists)**: if the task directory contains `review-analysis.md` / `review-analysis-r{N}.md`, read the highest-round review report; add a `## Response to Prior Review` section to this round's analysis artifact, and for each finding verify it via Read/Grep, then dispose of it with one of the four states in `.agents/rules/review-handshake.md` (`accepted` / `adjusted` / `refuted` / `cannot-judge`)
|
|
68
|
+
**Round ≥ 2: respond to the prior review (only when a review artifact exists)**: if the task directory contains `review-analysis.md` / `review-analysis-r{N}.md`, read the highest-round review report; add a `## Response to Prior Review` section to this round's analysis artifact, and for each finding verify it via Read/Grep, then dispose of it with one of the four states in `.agents/rules/review-handshake.md` (`accepted` / `adjusted` / `refuted` / `cannot-judge`) with commensurate evidence. Submit each response through `agent-infra-internal task-ledger {task-id} finding-respond --id {ledger-id} --round {analysis-round} --status {state} --evidence {evidence}`. Record open disagreements under `## Open Questions`. Round 1 skips this section.
|
|
81
69
|
|
|
82
70
|
### 4. Requirement Sufficiency Gate
|
|
83
71
|
|
|
@@ -112,12 +100,11 @@ Runs after Step 0 state check and Step 3 (questioning is an external-state actio
|
|
|
112
100
|
1. Decide this round's question (consistent with 4.2):
|
|
113
101
|
- if a `pending_question` already exists (the previous question is still unanswered) → restate that `pending_question`, do **not** modify it and do **not** increment `question_count`;
|
|
114
102
|
- otherwise (no pending question) → pick the single highest-value question (acceptance criteria > scope > ambiguity) and write `## Brainstorming`: `status: asking`, `pending_question: <question>`, `question_count += 1`.
|
|
115
|
-
2.
|
|
116
|
-
3.
|
|
117
|
-
4.
|
|
118
|
-
5.
|
|
119
|
-
6.
|
|
120
|
-
7. **STOP** and wait for the answer. The next trigger returns to this step.
|
|
103
|
+
2. If `start_date` is empty, write today (`date +%F`), then run `agent-infra-internal task-event {task-id} analyze.awaiting-input --agent {agent} --question {question_count}` so the core updates base metadata and Activity Log.
|
|
104
|
+
3. Issue sync (when `issue_number` exists, skip on any failure): run `agent-infra-internal platform-comment sync {task-id} --kind task --agent {agent}` to update only the **task comment**; keep the `status` label at `pending-design-work`; do **not** publish an analysis artifact comment.
|
|
105
|
+
4. Verification (replaces the step 8 artifact gate): `agent-infra-internal task-verify {task-id} analyze.awaiting-input --format text` (the early-exit set `current_step: requirement-analysis` and wrote `start_date`, so it should pass); also keep `rg -n 'Analyze Task \(Brainstorming\)' .agents/workspace/active/{task-id}/task.md` and the task-comment sync evidence. Do **not** run the artifact gate, nor `check activity-log` / `check platform-sync` (both bind to the analysis artifact path).
|
|
106
|
+
5. User output: show only the current **single question** plus how to answer/continue (re-trigger `analyze-task {task-ref}` with the answer), and append the `Completed at` line per `.agents/rules/next-step-output.md`.
|
|
107
|
+
6. **STOP** and wait for the answer. The next trigger returns to this step.
|
|
121
108
|
|
|
122
109
|
### 5. Perform Requirements Analysis
|
|
123
110
|
|
|
@@ -191,14 +178,7 @@ Create `.agents/workspace/active/{task-id}/{analysis-artifact}`.
|
|
|
191
178
|
## 人工裁决待办
|
|
192
179
|
|
|
193
180
|
> Write this section only when this round upgraded a `[needs-human-decision]` key design decision; omit otherwise.
|
|
194
|
-
>
|
|
195
|
-
|
|
196
|
-
### HD-{N}:{title} [needs-human-decision]
|
|
197
|
-
|
|
198
|
-
- **Background**: {why it became a pending decision}
|
|
199
|
-
- **Options**: {A / B / …}
|
|
200
|
-
- **Impact**: {scope / boundaries / precedent}
|
|
201
|
-
- **Recommendation**: {recommended option and rationale}
|
|
181
|
+
> First run `agent-infra-internal task-ledger {task-id} decision-next-id` to obtain `HD-N`, write the self-contained block according to `.agents/rules/human-decision-context.md`, then run `decision-upsert --id {HD-N} --stage analysis --artifact {analysis-artifact}`. Do not scan ids or assemble ledger rows.
|
|
202
182
|
|
|
203
183
|
## Effort and Complexity Assessment
|
|
204
184
|
- Complexity: {High/Medium/Low}
|
|
@@ -207,17 +187,7 @@ Create `.agents/workspace/active/{task-id}/{analysis-artifact}`.
|
|
|
207
187
|
|
|
208
188
|
### 7. Update Task Status
|
|
209
189
|
|
|
210
|
-
Get the current time:
|
|
211
|
-
|
|
212
|
-
```bash
|
|
213
|
-
date "+%Y-%m-%d %H:%M:%S%z" | sed 's/\([+-][0-9][0-9]\)\([0-9][0-9]\)$/\1:\2/'
|
|
214
|
-
```
|
|
215
|
-
|
|
216
190
|
Update `.agents/workspace/active/{task-id}/task.md`:
|
|
217
|
-
- `current_step`: requirement-analysis
|
|
218
|
-
- `assigned_to`: {current AI agent}
|
|
219
|
-
- `updated_at`: {current time}
|
|
220
|
-
- `agent_infra_version`: value from `.agents/rules/version-stamp.md`
|
|
221
191
|
- Record the analysis artifact for this round: `{analysis-artifact}` (Round `{analysis-round}`)
|
|
222
192
|
- If the task template contains a `## Analysis` section, update it to link to `{analysis-artifact}`
|
|
223
193
|
- Mark requirement-analysis as complete in workflow progress and include the actual round when the task template supports it
|
|
@@ -225,17 +195,14 @@ Update `.agents/workspace/active/{task-id}/task.md`:
|
|
|
225
195
|
- Overwrite the `priority` field in frontmatter with the new value
|
|
226
196
|
- Append a `## Priority Re-estimate` section to this round's analysis artifact `{analysis-artifact}`, recording: `priority {old} → {new} (rationale: {short basis grounded in this analysis})`
|
|
227
197
|
If the re-estimated value matches the current value, skip it: do not write the `## Priority Re-estimate` section. The Flow A sync that follows reads the possibly updated frontmatter and propagates the new value to the Issue automatically.
|
|
228
|
-
-
|
|
229
|
-
```
|
|
198
|
+
After the business fields are updated, run `agent-infra-internal task-event {task-id} analyze.completed --agent {agent} --artifact {analysis-artifact}` so the core atomically records the link, stage, agent, metadata, and Activity Log.
|
|
230
199
|
- {YYYY-MM-DD HH:mm:ss±HH:MM} — **Analyze Task (Round {N})** by {agent} — Analysis completed → {analysis-artifact}
|
|
231
200
|
```
|
|
232
201
|
|
|
233
202
|
If task.md contains a valid `issue_number`, perform these sync actions (skip and continue on any failure):
|
|
234
|
-
-
|
|
235
|
-
-
|
|
236
|
-
-
|
|
237
|
-
- Publish the `{analysis-artifact}` comment
|
|
238
|
-
- Read `.agents/rules/issue-fields.md` and follow Flow A to sync every non-empty Issue field (`priority`/`effort`/`start_date`/`target_date`) from `task.md` to the Issue (idempotent; skip without blocking when `has_push=false` or the fetch/write fails)
|
|
203
|
+
- Run `agent-infra-internal platform-issue sync {task-id} --agent {agent} --status pending-design-work --fields`
|
|
204
|
+
- Run `agent-infra-internal platform-comment sync {task-id} --kind task --agent {agent}`
|
|
205
|
+
- Run `agent-infra-internal platform-comment sync {task-id} --kind artifact --artifact {analysis-artifact} --agent {agent}`
|
|
239
206
|
|
|
240
207
|
### 8. Verification Gate
|
|
241
208
|
|
|
@@ -244,7 +211,7 @@ If task.md contains a valid `issue_number`, perform these sync actions (skip and
|
|
|
244
211
|
Run the verification gate to confirm the task artifact and sync state are valid:
|
|
245
212
|
|
|
246
213
|
```bash
|
|
247
|
-
|
|
214
|
+
agent-infra-internal task-verify {task-id} analyze.completed --artifact {analysis-artifact} --format text
|
|
248
215
|
```
|
|
249
216
|
|
|
250
217
|
Handle the result as follows:
|
|
@@ -260,7 +227,7 @@ Keep the gate output in your reply as fresh evidence. Do not claim completion wi
|
|
|
260
227
|
|
|
261
228
|
> Execute this step only after the verification gate passes.
|
|
262
229
|
|
|
263
|
-
> **IMPORTANT**: All TUI command formats listed below must be output in full. Do not show only the format for the current AI agent. If `.agents/.airc.json` configures custom TUIs (via `customTUIs`), read each tool's `name` and `invoke`, then add the matching command line in the same format (`${skillName}` becomes the skill name and `${projectName}` becomes the project name). Before rendering the final output, read `.agents/rules/next-step-output.md` and apply both of its rules: (1) render `{task-ref}` in the "Next steps" commands as the short id
|
|
230
|
+
> **IMPORTANT**: All TUI command formats listed below must be output in full. Do not show only the format for the current AI agent. If `.agents/.airc.json` configures custom TUIs (via `customTUIs`), read each tool's `name` and `invoke`, then add the matching command line in the same format (`${skillName}` becomes the skill name and `${projectName}` becomes the project name). Before rendering the final output, read `.agents/rules/next-step-output.md` and apply both of its rules: (1) render `{task-ref}` in the "Next steps" commands as the short id `NN` (falling back to the full TASK-id when unallocated or released); (2) append the `Completed at` line as the very last line of the user-facing output (this applies to every user-facing output — success, error, and early-return paths alike, not only the success path).
|
|
264
231
|
|
|
265
232
|
Output format:
|
|
266
233
|
```
|
|
@@ -3,6 +3,7 @@ name: analyze-task
|
|
|
3
3
|
description: >
|
|
4
4
|
分析任务并输出需求分析文档。
|
|
5
5
|
当需要在动手设计前厘清某个任务的需求、影响范围与风险时使用。
|
|
6
|
+
仅当对话包含可解析的任务引用时才可自动调用本技能。
|
|
6
7
|
---
|
|
7
8
|
|
|
8
9
|
# 分析任务
|
|
@@ -22,26 +23,24 @@ description: >
|
|
|
22
23
|
运行以下命令,并把原文粘贴到回复正文和本轮产物的 `## 状态核对` 段:
|
|
23
24
|
|
|
24
25
|
```bash
|
|
25
|
-
|
|
26
|
-
ls -la .agents/workspace/active/{task-id}/
|
|
27
|
-
tail .agents/workspace/active/{task-id}/task.md
|
|
26
|
+
agent-infra-internal task-snapshot {task-id} --format text
|
|
28
27
|
```
|
|
29
28
|
|
|
30
29
|
状态核对完成前,禁止任何关于外部状态的断言(例如“代码没变”“测试已通过”“没有其他引用”),包括思考阶段。本门禁只提供结构下限;逐条证据配对和真实性仍需按报告模板与审查要求核对。
|
|
31
30
|
|
|
32
|
-
##
|
|
31
|
+
## 任务上下文解析
|
|
33
32
|
|
|
34
|
-
>
|
|
33
|
+
> 入口允许省略 task ref,也接受旧位置 task ref 或 `--task <ref>` / `-t <ref>`。先从完整参数中分离 task scope 并原样保留其他业务操作数,再调用 `agent-infra-internal task-context resolve {task-scope}`;`{task-scope}` 为空、位置 ref 或 task flag 之一。只读取结构化结果的 `taskId`,后续把 `{task-id}` 绑定为该完整 `TASK-YYYYMMDD-HHMMSS`。解析失败时透传非零退出码,不自行扫描任务。
|
|
35
34
|
|
|
36
|
-
|
|
35
|
+
> 解析任务引用,并确认任务位于本技能支持的状态或目录且存在 `task.md`;无法定位时按未找到任务处理并停止。
|
|
37
36
|
|
|
38
|
-
|
|
37
|
+
## 步骤开始:声明 started 事件
|
|
39
38
|
|
|
40
|
-
|
|
41
|
-
- {YYYY-MM-DD HH:mm:ss±HH:MM} — **Analyze Task (Round {N}) [started]** by {agent} — started
|
|
42
|
-
```
|
|
39
|
+
确认前置条件和轮次后、本轮第一个产出动作之前执行:
|
|
43
40
|
|
|
44
|
-
|
|
41
|
+
```bash
|
|
42
|
+
agent-infra-internal task-event {task-id} analyze.started --agent {agent}
|
|
43
|
+
```
|
|
45
44
|
|
|
46
45
|
## 执行步骤
|
|
47
46
|
### 1. 验证前置条件
|
|
@@ -53,16 +52,9 @@ tail .agents/workspace/active/{task-id}/task.md
|
|
|
53
52
|
|
|
54
53
|
如果缺少 `task.md`,提示用户先创建或导入任务。
|
|
55
54
|
|
|
56
|
-
### 2.
|
|
57
|
-
|
|
58
|
-
扫描 `.agents/workspace/active/{task-id}/` 目录中的分析产物文件:
|
|
59
|
-
- 如果不存在 `analysis.md` 且不存在 `analysis-r*.md` → 本轮为第 1 轮,产出 `analysis.md`
|
|
60
|
-
- 如果存在 `analysis.md` 且不存在 `analysis-r*.md` → 本轮为第 2 轮,产出 `analysis-r2.md`
|
|
61
|
-
- 如果存在 `analysis-r{N}.md` → 本轮为第 N+1 轮,产出 `analysis-r{N+1}.md`
|
|
55
|
+
### 2. 解析分析上下文
|
|
62
56
|
|
|
63
|
-
|
|
64
|
-
- `{analysis-round}`:本轮分析轮次
|
|
65
|
-
- `{analysis-artifact}`:本轮分析产物文件名
|
|
57
|
+
运行 `agent-infra-internal task-artifact {task-id} inspect --family analysis`。仅当结果为 `ready` 时继续;从 `next.round` / `next.name` 记录 `{analysis-round}` / `{analysis-artifact}`,从 `inputs` 读取修订上下文。不得自行扫描轮次或拼装文件名。随后执行 started 事件,并以事件返回的 `artifactContext` 复核同一身份。
|
|
66
58
|
|
|
67
59
|
### 3. 阅读任务上下文
|
|
68
60
|
|
|
@@ -76,7 +68,7 @@ tail .agents/workspace/active/{task-id}/task.md
|
|
|
76
68
|
- `codescan_alert_number` - Code Scanning 告警
|
|
77
69
|
- `security_alert_number` - Dependabot 告警
|
|
78
70
|
|
|
79
|
-
**Round ≥ 2:响应上一轮审查(仅当存在审查产物时)**:若任务目录存在 `review-analysis.md` / `review-analysis-r{N}.md`,读取最高轮次的审查报告;在本轮分析产物中新增 `## 对上一轮审查的响应` 段,对每条发现先 Read/Grep 核实,再按 `.agents/rules/review-handshake.md` 的四态(`accepted` / `adjusted` / `refuted` / `cannot-judge
|
|
71
|
+
**Round ≥ 2:响应上一轮审查(仅当存在审查产物时)**:若任务目录存在 `review-analysis.md` / `review-analysis-r{N}.md`,读取最高轮次的审查报告;在本轮分析产物中新增 `## 对上一轮审查的响应` 段,对每条发现先 Read/Grep 核实,再按 `.agents/rules/review-handshake.md` 的四态(`accepted` / `adjusted` / `refuted` / `cannot-judge`)处置——每态都要附相称证据,不默认顺从;随后逐条调用 `agent-infra-internal task-ledger {task-id} finding-respond --id {ledger-id} --round {analysis-round} --status {四态} --evidence {相称证据}`。未决分歧写入 `## 未决问题`。Round 1 无审查,跳过本段。
|
|
80
72
|
|
|
81
73
|
### 4. 入口需求充分性闸门
|
|
82
74
|
|
|
@@ -111,12 +103,11 @@ tail .agents/workspace/active/{task-id}/task.md
|
|
|
111
103
|
1. 确定本轮要问的问题(与 4.2 保持一致):
|
|
112
104
|
- 若已存在 `pending_question`(上一问尚未得到答案)→ 复述该 `pending_question`,**不**修改它、**不**增加 `question_count`;
|
|
113
105
|
- 否则(无待答问题)→ 选最高价值的一个问题(验收标准 > 范围 > 歧义),写入 `## Brainstorming`:`status: asking`、`pending_question: <问题>`、`question_count += 1`。
|
|
114
|
-
2.
|
|
115
|
-
3.
|
|
116
|
-
4.
|
|
117
|
-
5.
|
|
118
|
-
6.
|
|
119
|
-
7. **STOP**,等待回答。下一次触发回到本步骤。
|
|
106
|
+
2. 若 `start_date` 为空,写入当日日期(`date +%F`);随后执行 `agent-infra-internal task-event {task-id} analyze.awaiting-input --agent {agent} --question {question_count}`,由核心统一更新基础 frontmatter 和 Activity Log。
|
|
107
|
+
3. Issue 同步(存在 `issue_number` 时,任一失败跳过):调用 `agent-infra-internal platform-comment sync {task-id} --kind task --agent {agent}` 更新 **task 评论**;`status` label 维持 `pending-design-work`;**不**发布分析产物评论。
|
|
108
|
+
4. 校验(替代步骤 8 的 artifact gate):`agent-infra-internal task-verify {task-id} analyze.awaiting-input --format text`(早退已置 `current_step: requirement-analysis` 且已写入 `start_date`,预期通过);并保留 `rg -n 'Analyze Task \(Brainstorming\)' .agents/workspace/active/{task-id}/task.md` 与 task 评论同步证据。**不**跑 artifact gate,也不跑 `check activity-log` / `check platform-sync`(二者绑定分析产物路径)。
|
|
109
|
+
5. 用户输出:只展示当前**单个问题** + 如何回答/继续(再次触发 `analyze-task {task-ref}` 并附答案),并按 `.agents/rules/next-step-output.md` 在末行追加 `Completed at`。
|
|
110
|
+
6. **STOP**,等待回答。下一次触发回到本步骤。
|
|
120
111
|
|
|
121
112
|
### 5. 执行需求分析
|
|
122
113
|
|
|
@@ -190,14 +181,7 @@ tail .agents/workspace/active/{task-id}/task.md
|
|
|
190
181
|
## 人工裁决待办
|
|
191
182
|
|
|
192
183
|
> 仅当本轮升级了 `[needs-human-decision]` 关键设计决策时写本段;没有则省略。
|
|
193
|
-
>
|
|
194
|
-
|
|
195
|
-
### HD-{N}:{标题} [needs-human-decision]
|
|
196
|
-
|
|
197
|
-
- **背景**:{为何成为待裁决项}
|
|
198
|
-
- **选项**:{A / B / …}
|
|
199
|
-
- **影响**:{范围 / 边界 / 先例}
|
|
200
|
-
- **推荐**:{推荐选项及理由}
|
|
184
|
+
> 每项先调用 `agent-infra-internal task-ledger {task-id} decision-next-id` 取得 `HD-N`,按 `.agents/rules/human-decision-context.md` 写自足 `### HD-N` 块,再调用 `decision-upsert --id {HD-N} --stage analysis --artifact {analysis-artifact}`;不得扫描编号或手写账本行。
|
|
201
185
|
|
|
202
186
|
## 工作量和复杂度评估
|
|
203
187
|
- 复杂度:{高/中/低}
|
|
@@ -206,35 +190,18 @@ tail .agents/workspace/active/{task-id}/task.md
|
|
|
206
190
|
|
|
207
191
|
### 7. 更新任务状态
|
|
208
192
|
|
|
209
|
-
获取当前时间:
|
|
210
|
-
|
|
211
|
-
```bash
|
|
212
|
-
date "+%Y-%m-%d %H:%M:%S%z" | sed 's/\([+-][0-9][0-9]\)\([0-9][0-9]\)$/\1:\2/'
|
|
213
|
-
```
|
|
214
|
-
|
|
215
193
|
更新 `.agents/workspace/active/{task-id}/task.md`:
|
|
216
|
-
-
|
|
217
|
-
- `assigned_to`:{当前 AI 代理}
|
|
218
|
-
- `updated_at`:{当前时间}
|
|
219
|
-
- `agent_infra_version`:按 `.agents/rules/version-stamp.md` 取值
|
|
220
|
-
- 记录本轮分析产物:`{analysis-artifact}`(Round `{analysis-round}`)
|
|
221
|
-
- 如任务模板包含 `## 分析` 段落,更新为指向 `{analysis-artifact}` 的链接
|
|
222
|
-
- 在工作流进度中标记 requirement-analysis 为已完成,并注明实际轮次(如果任务模板支持)
|
|
194
|
+
- 仅更新优先级、Brainstorming、审查响应等本技能拥有的业务内容;产物链接、阶段与完成日志由 completed 事件统一登记
|
|
223
195
|
- 在追加工作流 Activity Log 条目之前,基于分析结果(业务影响、风险、依赖、阻塞条件)重估 `priority`。若重估值与 `task.md` 当前值不一致:
|
|
224
196
|
- 用新值覆盖 frontmatter 的 `priority` 字段
|
|
225
197
|
- 在本轮分析产物 `{analysis-artifact}` 中追加 `## 优先级重估` 段,记录一条:`priority {old} → {new} (rationale: {基于本轮分析的简短依据})`
|
|
226
198
|
若重估值与当前值一致,跳过:不写入 `## 优先级重估` 段。后续 Flow A 同步会读取可能更新过的 frontmatter,并自动把新值同步到 Issue。
|
|
227
|
-
-
|
|
228
|
-
```
|
|
229
|
-
- {YYYY-MM-DD HH:mm:ss±HH:MM} — **Analyze Task (Round {N})** by {agent} — Analysis completed → {analysis-artifact}
|
|
230
|
-
```
|
|
199
|
+
- 完成业务内容更新后执行 `agent-infra-internal task-event {task-id} analyze.completed --agent {agent} --artifact {analysis-artifact}`,由核心原子登记链接、阶段、代理、时间、版本和 Activity Log。
|
|
231
200
|
|
|
232
201
|
如果 task.md 中存在有效的 `issue_number`,执行以下同步操作(任一失败则跳过并继续):
|
|
233
|
-
-
|
|
234
|
-
-
|
|
235
|
-
-
|
|
236
|
-
- 发布 `{analysis-artifact}` 评论
|
|
237
|
-
- 读取 `.agents/rules/issue-fields.md`,按流程 A 把 `task.md` 中所有非空的 Issue 字段(`priority`/`effort`/`start_date`/`target_date`)同步到 Issue(幂等;`has_push=false` 或取数/写入失败时跳过,不阻断)
|
|
202
|
+
- 调用 `agent-infra-internal platform-issue sync {task-id} --agent {agent} --status pending-design-work --fields`
|
|
203
|
+
- 调用 `agent-infra-internal platform-comment sync {task-id} --kind task --agent {agent}`
|
|
204
|
+
- 调用 `agent-infra-internal platform-comment sync {task-id} --kind artifact --artifact {analysis-artifact} --agent {agent}`
|
|
238
205
|
|
|
239
206
|
### 8. 完成校验
|
|
240
207
|
|
|
@@ -243,7 +210,7 @@ date "+%Y-%m-%d %H:%M:%S%z" | sed 's/\([+-][0-9][0-9]\)\([0-9][0-9]\)$/\1:\2/'
|
|
|
243
210
|
运行完成校验,确认任务产物和同步状态符合规范:
|
|
244
211
|
|
|
245
212
|
```bash
|
|
246
|
-
|
|
213
|
+
agent-infra-internal task-verify {task-id} analyze.completed --artifact {analysis-artifact} --format text
|
|
247
214
|
```
|
|
248
215
|
|
|
249
216
|
处理结果:
|
|
@@ -259,7 +226,7 @@ node .agents/scripts/validate-artifact.js gate analyze-task .agents/workspace/ac
|
|
|
259
226
|
|
|
260
227
|
> 仅在校验通过后执行本步骤。
|
|
261
228
|
|
|
262
|
-
> **重要**:以下「下一步」中列出的所有 TUI 命令格式必须完整输出,不要只展示当前 AI 代理对应的格式。如果 `.agents/.airc.json` 中配置了自定义 TUI(`customTUIs`),读取每个工具的 `name` 和 `invoke`,按同样格式补充对应命令行(`${skillName}` 替换为技能名,`${projectName}` 替换为项目名)。 渲染最终输出前,先读取 `.agents/rules/next-step-output.md` 并落实其两类规则:(1) 「下一步」命令把 `{task-ref}` 渲染为短号
|
|
229
|
+
> **重要**:以下「下一步」中列出的所有 TUI 命令格式必须完整输出,不要只展示当前 AI 代理对应的格式。如果 `.agents/.airc.json` 中配置了自定义 TUI(`customTUIs`),读取每个工具的 `name` 和 `invoke`,按同样格式补充对应命令行(`${skillName}` 替换为技能名,`${projectName}` 替换为项目名)。 渲染最终输出前,先读取 `.agents/rules/next-step-output.md` 并落实其两类规则:(1) 「下一步」命令把 `{task-ref}` 渲染为短号 `NN`(未分配/已释放时回退完整 TASK-id);(2) 在面向用户输出的绝对最后一行追加 `Completed at` 收尾行(成功、错误、早退等任何面向用户输出都适用,不限于校验通过的成功态)。
|
|
263
230
|
|
|
264
231
|
输出格式:
|
|
265
232
|
```
|
|
@@ -27,14 +27,12 @@
|
|
|
27
27
|
"Effort and Complexity Assessment",
|
|
28
28
|
"State Check"
|
|
29
29
|
],
|
|
30
|
-
"freshness_minutes": 30,
|
|
31
30
|
"required_patterns": [
|
|
32
31
|
"^\\$ "
|
|
33
32
|
]
|
|
34
33
|
},
|
|
35
34
|
"activity-log": {
|
|
36
|
-
"expected_action_pattern": "(Analyze Task|Requirement Analysis) \\(Round \\d+\\)"
|
|
37
|
-
"freshness_minutes": 30
|
|
35
|
+
"expected_action_pattern": "(Analyze Task|Requirement Analysis) \\(Round \\d+\\)"
|
|
38
36
|
},
|
|
39
37
|
"platform-sync": {
|
|
40
38
|
"when": "issue_number_exists",
|
|
@@ -27,14 +27,12 @@
|
|
|
27
27
|
"工作量和复杂度评估",
|
|
28
28
|
"状态核对"
|
|
29
29
|
],
|
|
30
|
-
"freshness_minutes": 30,
|
|
31
30
|
"required_patterns": [
|
|
32
31
|
"^\\$ "
|
|
33
32
|
]
|
|
34
33
|
},
|
|
35
34
|
"activity-log": {
|
|
36
|
-
"expected_action_pattern": "(Analyze Task|Requirement Analysis) \\(Round \\d+\\)"
|
|
37
|
-
"freshness_minutes": 30
|
|
35
|
+
"expected_action_pattern": "(Analyze Task|Requirement Analysis) \\(Round \\d+\\)"
|
|
38
36
|
},
|
|
39
37
|
"platform-sync": {
|
|
40
38
|
"when": "issue_number_exists",
|
|
@@ -3,6 +3,7 @@ name: block-task
|
|
|
3
3
|
description: >
|
|
4
4
|
Mark a task as blocked and record the reason.
|
|
5
5
|
Use when a task cannot proceed because of an external blocker and you need to park it with a reason.
|
|
6
|
+
Only invoke this skill automatically when the conversation includes a resolvable task reference.
|
|
6
7
|
---
|
|
7
8
|
|
|
8
9
|
# Block Task
|
|
@@ -21,19 +22,15 @@ description: >
|
|
|
21
22
|
|
|
22
23
|
Version stamp rule: when creating or updating `task.md` frontmatter, read `.agents/rules/version-stamp.md` first and write or refresh `agent_infra_version`.
|
|
23
24
|
|
|
24
|
-
## Task
|
|
25
|
+
## Task Context Resolution
|
|
25
26
|
|
|
26
|
-
>
|
|
27
|
+
> The entry point may omit the task ref and also accepts a legacy positional ref or `--task <ref>` / `-t <ref>`. Separate task scope from the full arguments while preserving every business operand, then call `agent-infra-internal task-context resolve {task-scope}` where `{task-scope}` is empty, one positional ref, or one task flag. Read only `taskId` from the structured result and bind `{task-id}` to that full `TASK-YYYYMMDD-HHMMSS` for downstream commands. Pass through resolution failures without scanning tasks locally.
|
|
27
28
|
|
|
28
|
-
|
|
29
|
+
> Resolve the task reference, then confirm that the task is in a state or directory supported by this skill and that `task.md` exists; if it cannot be located, handle it as a missing task and stop.
|
|
29
30
|
|
|
30
|
-
|
|
31
|
+
## Step Start: Local Lifecycle Boundary
|
|
31
32
|
|
|
32
|
-
|
|
33
|
-
- {YYYY-MM-DD HH:mm:ss±HH:MM} — **Block Task [started]** by {agent} — started
|
|
34
|
-
```
|
|
35
|
-
|
|
36
|
-
`ai task log` pairs it with the done entry written on completion onto one row (in progress → done). See the "Activity Log started / done dual-marker convention" in `.agents/rules/task-management.md`.
|
|
33
|
+
After prerequisites pass, Step 3 declares one lifecycle intent that atomically writes the started/done pair, base metadata, directory move, and short-id release. Do not write those pieces manually first.
|
|
37
34
|
|
|
38
35
|
## Steps
|
|
39
36
|
|
|
@@ -53,33 +50,20 @@ Before blocking, thoroughly analyze:
|
|
|
53
50
|
- [ ] What solutions have been attempted?
|
|
54
51
|
- [ ] What help or information is needed to unblock?
|
|
55
52
|
|
|
56
|
-
### 3.
|
|
57
|
-
|
|
58
|
-
Get the current time:
|
|
53
|
+
### 3. Apply the Local Lifecycle Intent
|
|
59
54
|
|
|
60
55
|
```bash
|
|
61
|
-
|
|
56
|
+
agent-infra-internal task-lifecycle {task-id} block --agent {agent} \
|
|
57
|
+
--reason "{one-line reason}" --unblock-condition "{unblock condition}"
|
|
62
58
|
```
|
|
63
59
|
|
|
64
|
-
|
|
65
|
-
- `status`: blocked
|
|
66
|
-
- `blocked_at`: {current timestamp}
|
|
67
|
-
- `updated_at`: {current timestamp}
|
|
68
|
-
- `agent_infra_version`: value from `.agents/rules/version-stamp.md`
|
|
69
|
-
- **Append** to `## Activity Log` (do NOT overwrite previous entries):
|
|
70
|
-
```
|
|
71
|
-
- {YYYY-MM-DD HH:mm:ss±HH:MM} — **Block Task** by {agent} — {one-line reason}
|
|
72
|
-
```
|
|
60
|
+
Only `status=applied|no-op` means the local block completed. On `status=failed`, show the structured error and recovery steps and retry the same intent; do not manually edit task.md, move the directory, or release the short id.
|
|
73
61
|
|
|
74
|
-
|
|
62
|
+
### 4. Verify the Local Final State
|
|
75
63
|
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
```bash
|
|
79
|
-
mv .agents/workspace/active/{task-id} .agents/workspace/blocked/{task-id}
|
|
80
|
-
```
|
|
64
|
+
Confirm `targetState=blocked`, the target path, and the committed short-id effect.
|
|
81
65
|
|
|
82
|
-
### 5.
|
|
66
|
+
### 5. Preserve Recovery Identity
|
|
83
67
|
|
|
84
68
|
```bash
|
|
85
69
|
ls .agents/workspace/blocked/{task-id}/task.md
|
|
@@ -89,22 +73,15 @@ ls .agents/workspace/blocked/{task-id}/task.md
|
|
|
89
73
|
|
|
90
74
|
Check whether `task.md` includes a valid `issue_number`. If not, skip this step.
|
|
91
75
|
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
If a valid `issue_number` exists, set `status: blocked` by following issue-sync.md.
|
|
76
|
+
If a valid `issue_number` exists, run `agent-infra-internal platform-issue sync {task-id} --agent {agent} --status blocked`.
|
|
77
|
+
Then run `agent-infra-internal platform-comment sync {task-id} --kind task --agent {agent}`.
|
|
95
78
|
|
|
96
79
|
### 7. Verification Gate
|
|
97
80
|
|
|
98
|
-
**Release short id** (after the directory has already been moved; the script is idempotent and returns 0 even if the task isn't registered):
|
|
99
|
-
|
|
100
|
-
```bash
|
|
101
|
-
node .agents/scripts/task-short-id.js release "$task_id" || true
|
|
102
|
-
```
|
|
103
|
-
|
|
104
81
|
Run the verification gate to confirm the task artifact and sync state are valid:
|
|
105
82
|
|
|
106
83
|
```bash
|
|
107
|
-
|
|
84
|
+
agent-infra-internal task-verify {task-id} block-task.completed --format text
|
|
108
85
|
```
|
|
109
86
|
|
|
110
87
|
Handle the result as follows:
|
|
@@ -118,7 +95,7 @@ Keep the gate output in your reply as fresh evidence. Do not claim completion wi
|
|
|
118
95
|
|
|
119
96
|
> Execute this step only after the verification gate passes.
|
|
120
97
|
|
|
121
|
-
> **IMPORTANT**: All TUI command formats listed below must be output in full. Do not show only the format for the current AI agent. If `.agents/.airc.json` configures custom TUIs (via `customTUIs`), read each tool's `name` and `invoke`, then add the matching command line in the same format (`${skillName}` becomes the skill name and `${projectName}` becomes the project name). Before rendering the final output, read `.agents/rules/next-step-output.md` and apply both of its rules: (1) render `{task-ref}` in the "Next steps" commands as the short id
|
|
98
|
+
> **IMPORTANT**: All TUI command formats listed below must be output in full. Do not show only the format for the current AI agent. If `.agents/.airc.json` configures custom TUIs (via `customTUIs`), read each tool's `name` and `invoke`, then add the matching command line in the same format (`${skillName}` becomes the skill name and `${projectName}` becomes the project name). Before rendering the final output, read `.agents/rules/next-step-output.md` and apply both of its rules: (1) render `{task-ref}` in the "Next steps" commands as the short id `NN` (falling back to the full TASK-id when unallocated or released); (2) append the `Completed at` line as the very last line of the user-facing output (this applies to every user-facing output — success, error, and early-return paths alike, not only the success path).
|
|
122
99
|
|
|
123
100
|
> **Optional sandbox-cleanup hint (gated)**: Render the "Optional: clean up this task's sandbox" block — placed after "Archived to" and before "To unblock" in the output below — only when BOTH (1) `.agents/.airc.json` has a `sandbox` field and (2) task.md's `branch` field exists and is not `main` / `master`; otherwise omit the whole block. `{branch}` is the `branch` value from the task.md you already loaded (the task has moved to blocked/, so read it from `.agents/workspace/blocked/{task-id}/task.md`). This block is independent of "Next step" semantics.
|
|
124
101
|
|
|
@@ -136,8 +113,7 @@ Optional: clean up this task's sandbox
|
|
|
136
113
|
ai sandbox rm {branch}
|
|
137
114
|
|
|
138
115
|
To unblock when the issue is resolved:
|
|
139
|
-
|
|
140
|
-
# Then update task.md: status -> active, remove blocked_at
|
|
116
|
+
agent-infra-internal task-lifecycle {task-id} activate --agent {agent} --note "{activation note}"
|
|
141
117
|
|
|
142
118
|
Next step - check task status after unblocking:
|
|
143
119
|
- Claude Code / OpenCode: /check-task {task-ref}
|
|
@@ -160,13 +136,11 @@ Next step - check task status after unblocking:
|
|
|
160
136
|
When the blocking issue is resolved:
|
|
161
137
|
|
|
162
138
|
```bash
|
|
163
|
-
|
|
164
|
-
mv .agents/workspace/blocked/{task-id} .agents/workspace/active/{task-id}
|
|
165
|
-
|
|
166
|
-
# 2. Update task.md: set status to active, update timestamps
|
|
167
|
-
# 3. Resume from where you left off (check current_step)
|
|
139
|
+
agent-infra-internal task-lifecycle {task-id} activate --agent {agent} --note "{activation note}"
|
|
168
140
|
```
|
|
169
141
|
|
|
142
|
+
Resume from the preserved `current_step`. On failure, retry the same intent from the structured recovery fields instead of hand-editing lifecycle state.
|
|
143
|
+
|
|
170
144
|
## Notes
|
|
171
145
|
|
|
172
146
|
1. **When to block**: Only block when you genuinely cannot proceed. If it is a difficulty you can work through, try harder first.
|