pi-crew 0.2.3 → 0.2.5
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/AGENTS.md +57 -32
- package/CHANGELOG.md +466 -448
- package/LICENSE +21 -21
- package/NOTICE.md +16 -16
- package/README.md +323 -323
- package/docs/FEATURE_INTAKE.md +126 -0
- package/docs/HARNESS.md +86 -0
- package/docs/HARNESS_BACKLOG.md +41 -0
- package/docs/TEST_MATRIX.md +49 -0
- package/docs/actions-reference.md +595 -595
- package/docs/architecture.md +180 -180
- package/docs/code-review-2026-05-11.md +592 -592
- package/docs/commands-reference.md +347 -347
- package/docs/comparison-pi-subagents-vs-pi-crew.md +303 -0
- package/docs/decisions/0001-durable-state.md +41 -0
- package/docs/decisions/0002-child-process-for-async.md +42 -0
- package/docs/decisions/0003-depth-guard.md +36 -0
- package/docs/decisions/0004-execfile-over-exec.md +34 -0
- package/docs/decisions/0005-no-parameter-properties.md +49 -0
- package/docs/decisions/0006-publish-bundled-esm.md +63 -0
- package/docs/decisions/0007-active-run-binary-index.md +54 -0
- package/docs/decisions/0008-child-pi-warm-pool.md +61 -0
- package/docs/decisions/README.md +23 -0
- package/docs/followup-review-round4-2026-05-13.md +107 -0
- package/docs/implementation-plan-top3.md +333 -0
- package/docs/live-mailbox-runtime.md +36 -36
- package/docs/next-upgrade-roadmap.md +808 -808
- package/docs/oh-my-pi-research.md +509 -0
- package/docs/perf/baseline-2026-05.md +113 -0
- package/docs/perf/final-report-2026-05.md +206 -0
- package/docs/perf/sprint-1-report.md +71 -0
- package/docs/perf/sprint-2-report.md +81 -0
- package/docs/perf/sprint-2.5-report.md +53 -0
- package/docs/perf/sprint-3-report.md +36 -0
- package/docs/perf/sprint-4-report.md +47 -0
- package/docs/perf/sprint-5-report.md +51 -0
- package/docs/perf/sprint-6-report.md +94 -0
- package/docs/perf/sprint-7-report.md +74 -0
- package/docs/perf/upgrade-plan-2026-05.md +147 -0
- package/docs/pi-subagents3-deep-analysis.md +508 -0
- package/docs/product/README.md +31 -0
- package/docs/product/platform.md +27 -0
- package/docs/product/runtime-safety.md +37 -0
- package/docs/product/team-run.md +39 -0
- package/docs/product/team-tool.md +37 -0
- package/docs/publishing.md +65 -65
- package/docs/resource-formats.md +134 -134
- package/docs/runtime-analysis-child-vs-live.md +171 -0
- package/docs/runtime-flow.md +148 -148
- package/docs/runtime-migration-in-process-analysis.md +250 -0
- package/docs/stories/README.md +30 -0
- package/docs/stories/backlog.md +36 -0
- package/docs/templates/decision.md +27 -0
- package/docs/templates/story.md +44 -0
- package/docs/templates/validation-report.md +32 -0
- package/docs/usage.md +238 -238
- package/index.ts +7 -6
- package/install.mjs +65 -65
- package/package.json +107 -100
- package/schema.json +222 -222
- package/skills/child-pi-spawning/SKILL.md +213 -0
- package/skills/context-artifact-hygiene/SKILL.md +32 -0
- package/skills/event-log-tracing/SKILL.md +299 -0
- package/skills/git-master/SKILL.md +225 -24
- package/skills/live-agent-lifecycle/SKILL.md +192 -0
- package/skills/mailbox-interactive/SKILL.md +300 -19
- package/skills/model-routing-context/SKILL.md +94 -0
- package/skills/multi-perspective-review/SKILL.md +88 -0
- package/skills/read-only-explorer/SKILL.md +250 -26
- package/skills/safe-bash/SKILL.md +307 -21
- package/skills/verification-before-done/SKILL.md +11 -2
- package/skills/widget-rendering/SKILL.md +258 -0
- package/skills/workspace-isolation/SKILL.md +202 -0
- package/skills/worktree-isolation/SKILL.md +202 -18
- package/src/adapters/claude-adapter.ts +25 -25
- package/src/adapters/codex-adapter.ts +21 -21
- package/src/adapters/cursor-adapter.ts +17 -17
- package/src/adapters/export-util.ts +137 -137
- package/src/adapters/index.ts +15 -15
- package/src/adapters/registry.ts +18 -18
- package/src/adapters/types.ts +23 -23
- package/src/agents/agent-config.ts +38 -38
- package/src/agents/agent-serializer.ts +38 -38
- package/src/agents/discover-agents.ts +121 -118
- package/src/config/config.ts +740 -858
- package/src/config/defaults.ts +96 -96
- package/src/config/drift-detector.ts +211 -211
- package/src/config/markers.ts +327 -327
- package/src/config/resilient-parser.ts +109 -108
- package/src/config/suggestions.ts +74 -74
- package/src/config/types.ts +199 -0
- package/src/extension/async-notifier.ts +123 -89
- package/src/extension/autonomous-policy.ts +169 -169
- package/src/extension/cross-extension-rpc.ts +104 -104
- package/src/extension/help.ts +47 -47
- package/src/extension/import-index.ts +69 -69
- package/src/extension/management.ts +395 -382
- package/src/extension/notification-router.ts +116 -116
- package/src/extension/notification-sink.ts +51 -51
- package/src/extension/project-init.ts +168 -168
- package/src/extension/register.ts +859 -668
- package/src/extension/registration/artifact-cleanup.ts +15 -15
- package/src/extension/registration/command-utils.ts +54 -54
- package/src/extension/registration/commands.ts +559 -452
- package/src/extension/registration/compaction-guard.ts +125 -125
- package/src/extension/registration/subagent-helpers.ts +102 -102
- package/src/extension/registration/subagent-tools.ts +220 -159
- package/src/extension/registration/team-tool.ts +159 -99
- package/src/extension/registration/viewers.ts +29 -0
- package/src/extension/result-watcher.ts +128 -128
- package/src/extension/run-bundle-schema.ts +89 -89
- package/src/extension/run-export.ts +73 -73
- package/src/extension/run-import.ts +84 -84
- package/src/extension/run-index.ts +94 -94
- package/src/extension/run-maintenance.ts +142 -142
- package/src/extension/session-summary.ts +8 -8
- package/src/extension/team-manager-command.ts +96 -96
- package/src/extension/team-recommendation.ts +188 -188
- package/src/extension/team-tool/api.ts +5 -2
- package/src/extension/team-tool/cancel.ts +224 -209
- package/src/extension/team-tool/config-patch.ts +36 -36
- package/src/extension/team-tool/context.ts +60 -60
- package/src/extension/team-tool/doctor.ts +242 -242
- package/src/extension/team-tool/handle-settings.ts +421 -195
- package/src/extension/team-tool/inspect.ts +41 -41
- package/src/extension/team-tool/lifecycle-actions.ts +139 -139
- package/src/extension/team-tool/parallel-dispatch.ts +156 -156
- package/src/extension/team-tool/plan.ts +19 -19
- package/src/extension/team-tool/respond.ts +112 -111
- package/src/extension/team-tool/run.ts +246 -229
- package/src/extension/team-tool/status.ts +110 -110
- package/src/extension/team-tool-types.ts +13 -13
- package/src/extension/team-tool.ts +344 -344
- package/src/extension/tool-result.ts +16 -16
- package/src/extension/validate-resources.ts +77 -77
- package/src/hooks/registry.ts +61 -61
- package/src/hooks/types.ts +40 -40
- package/src/i18n.ts +184 -184
- package/src/observability/correlation.ts +35 -35
- package/src/observability/event-to-metric.ts +68 -68
- package/src/observability/exporters/adapter.ts +30 -30
- package/src/observability/exporters/otlp-exporter.ts +106 -92
- package/src/observability/exporters/prometheus-exporter.ts +54 -54
- package/src/observability/metric-registry.ts +87 -87
- package/src/observability/metric-retention.ts +54 -54
- package/src/observability/metric-sink.ts +81 -56
- package/src/observability/metrics-primitives.ts +167 -167
- package/src/prompt/prompt-runtime.ts +72 -72
- package/src/runtime/adaptive-plan.ts +338 -0
- package/src/runtime/agent-control.ts +169 -169
- package/src/runtime/agent-memory.ts +72 -72
- package/src/runtime/agent-observability.ts +114 -114
- package/src/runtime/async-marker.ts +26 -26
- package/src/runtime/async-runner.ts +153 -153
- package/src/runtime/attention-events.ts +28 -28
- package/src/runtime/auto-resume.ts +100 -100
- package/src/runtime/background-runner.ts +122 -89
- package/src/runtime/cancellation.ts +61 -61
- package/src/runtime/capability-inventory.ts +116 -116
- package/src/runtime/child-pi-pool.ts +68 -0
- package/src/runtime/child-pi.ts +541 -461
- package/src/runtime/code-summary.ts +247 -247
- package/src/runtime/compaction-summary.ts +271 -271
- package/src/runtime/concurrency.ts +58 -58
- package/src/runtime/crash-recovery.ts +317 -301
- package/src/runtime/crew-agent-records.ts +379 -281
- package/src/runtime/crew-agent-runtime.ts +60 -60
- package/src/runtime/cross-extension-rpc.ts +72 -0
- package/src/runtime/custom-tools/irc-tool.ts +201 -201
- package/src/runtime/custom-tools/submit-result-tool.ts +90 -90
- package/src/runtime/deadletter.ts +47 -47
- package/src/runtime/delivery-coordinator.ts +176 -176
- package/src/runtime/delta-conflict.ts +360 -360
- package/src/runtime/diagnostic-export.ts +102 -102
- package/src/runtime/direct-run.ts +35 -35
- package/src/runtime/effectiveness.ts +82 -81
- package/src/runtime/errors/crew-errors.ts +166 -0
- package/src/runtime/event-stream-bridge.ts +92 -92
- package/src/runtime/foreground-control.ts +82 -82
- package/src/runtime/green-contract.ts +46 -46
- package/src/runtime/group-join.ts +234 -106
- package/src/runtime/heartbeat-watcher.ts +145 -124
- package/src/runtime/iteration-hooks.ts +267 -267
- package/src/runtime/live-agent-control.ts +88 -88
- package/src/runtime/live-agent-manager.ts +377 -179
- package/src/runtime/live-control-realtime.ts +36 -36
- package/src/runtime/live-session-runtime.ts +676 -600
- package/src/runtime/loop-gates.ts +129 -129
- package/src/runtime/manifest-cache.ts +263 -263
- package/src/runtime/mcp-proxy.ts +113 -113
- package/src/runtime/metric-parser.ts +40 -40
- package/src/runtime/model-fallback.ts +282 -274
- package/src/runtime/model-resolver.ts +118 -0
- package/src/runtime/output-validator.ts +187 -187
- package/src/runtime/overflow-recovery.ts +175 -175
- package/src/runtime/parallel-research.ts +44 -44
- package/src/runtime/parallel-utils.ts +156 -156
- package/src/runtime/parent-guard.ts +80 -80
- package/src/runtime/phase-progress.ts +217 -217
- package/src/runtime/pi-args.ts +165 -165
- package/src/runtime/pi-json-output.ts +111 -111
- package/src/runtime/pi-spawn.ts +167 -167
- package/src/runtime/policy-engine.ts +79 -79
- package/src/runtime/post-checks.ts +125 -125
- package/src/runtime/post-exit-stdio-guard.ts +86 -86
- package/src/runtime/process-status.ts +97 -73
- package/src/runtime/progress-event-coalescer.ts +43 -43
- package/src/runtime/recovery-recipes.ts +74 -74
- package/src/runtime/retry-executor.ts +81 -81
- package/src/runtime/role-permission.ts +39 -39
- package/src/runtime/run-tracker.ts +99 -0
- package/src/runtime/runtime-policy.ts +21 -0
- package/src/runtime/runtime-resolver.ts +94 -91
- package/src/runtime/scheduler.ts +294 -0
- package/src/runtime/semaphore.ts +131 -131
- package/src/runtime/sensitive-paths.ts +92 -92
- package/src/runtime/session-usage.ts +79 -79
- package/src/runtime/settings-store.ts +103 -0
- package/src/runtime/sidechain-output.ts +29 -29
- package/src/runtime/skill-instructions.ts +222 -222
- package/src/runtime/stale-reconciler.ts +198 -189
- package/src/runtime/streaming-output.ts +47 -0
- package/src/runtime/subagent-manager.ts +404 -400
- package/src/runtime/subprocess-tool-registry.ts +67 -67
- package/src/runtime/task-display.ts +38 -38
- package/src/runtime/task-graph-scheduler.ts +122 -122
- package/src/runtime/task-graph.ts +207 -207
- package/src/runtime/task-output-context.ts +177 -177
- package/src/runtime/task-packet.ts +93 -93
- package/src/runtime/task-quality.ts +207 -207
- package/src/runtime/task-runner/capabilities.ts +78 -78
- package/src/runtime/task-runner/live-executor.ts +131 -113
- package/src/runtime/task-runner/progress.ts +119 -119
- package/src/runtime/task-runner/prompt-builder.ts +139 -139
- package/src/runtime/task-runner/prompt-pipeline.ts +64 -64
- package/src/runtime/task-runner/result-utils.ts +14 -14
- package/src/runtime/task-runner/run-projection.ts +103 -103
- package/src/runtime/task-runner/state-helpers.ts +22 -22
- package/src/runtime/task-runner.ts +469 -459
- package/src/runtime/team-runner.ts +693 -945
- package/src/runtime/usage-tracker.ts +71 -0
- package/src/runtime/worker-heartbeat.ts +21 -21
- package/src/runtime/worker-startup.ts +57 -57
- package/src/runtime/workflow-state.ts +187 -187
- package/src/runtime/yield-handler.ts +190 -190
- package/src/schema/config-schema.ts +172 -168
- package/src/schema/team-tool-schema.ts +126 -126
- package/src/schema/validation-types.ts +151 -148
- package/src/skills/discover-skills.ts +67 -67
- package/src/skills/skill-templates.ts +374 -374
- package/src/state/active-run-registry.ts +227 -191
- package/src/state/artifact-store.ts +130 -129
- package/src/state/atomic-write.ts +262 -195
- package/src/state/blob-store.ts +116 -116
- package/src/state/contracts.ts +111 -111
- package/src/state/event-log-rotation.ts +161 -158
- package/src/state/event-log.ts +383 -303
- package/src/state/event-reconstructor.ts +217 -217
- package/src/state/jsonl-writer.ts +82 -82
- package/src/state/locks.ts +146 -146
- package/src/state/mailbox.ts +446 -405
- package/src/state/state-store.ts +364 -351
- package/src/state/task-claims.ts +44 -44
- package/src/state/types.ts +285 -285
- package/src/state/usage.ts +29 -29
- package/src/subagents/async-entry.ts +1 -1
- package/src/subagents/index.ts +3 -3
- package/src/subagents/live/control.ts +1 -1
- package/src/subagents/live/manager.ts +1 -1
- package/src/subagents/live/realtime.ts +1 -1
- package/src/subagents/live/session-runtime.ts +1 -1
- package/src/subagents/manager.ts +1 -1
- package/src/subagents/spawn.ts +1 -1
- package/src/teams/discover-teams.ts +116 -116
- package/src/teams/team-config.ts +27 -27
- package/src/teams/team-serializer.ts +38 -38
- package/src/types/diff.d.ts +18 -18
- package/src/ui/agent-management-overlay.ts +144 -144
- package/src/ui/crew-widget.ts +487 -370
- package/src/ui/dashboard-panes/agents-pane.ts +109 -28
- package/src/ui/dashboard-panes/cancellation-pane.ts +42 -42
- package/src/ui/dashboard-panes/capability-pane.ts +59 -59
- package/src/ui/dashboard-panes/health-pane.ts +30 -30
- package/src/ui/dashboard-panes/mailbox-pane.ts +35 -35
- package/src/ui/dashboard-panes/progress-pane.ts +30 -30
- package/src/ui/dashboard-panes/transcript-pane.ts +10 -10
- package/src/ui/heartbeat-aggregator.ts +63 -63
- package/src/ui/keybinding-map.ts +97 -94
- package/src/ui/live-conversation-overlay.ts +152 -0
- package/src/ui/live-run-sidebar.ts +180 -180
- package/src/ui/mascot.ts +442 -442
- package/src/ui/overlays/agent-picker-overlay.ts +57 -57
- package/src/ui/overlays/confirm-overlay.ts +58 -58
- package/src/ui/overlays/mailbox-compose-overlay.ts +144 -144
- package/src/ui/overlays/mailbox-compose-preview.ts +63 -63
- package/src/ui/overlays/mailbox-detail-overlay.ts +122 -122
- package/src/ui/pi-ui-compat.ts +57 -57
- package/src/ui/powerbar-publisher.ts +221 -197
- package/src/ui/render-scheduler.ts +216 -143
- package/src/ui/run-action-dispatcher.ts +118 -118
- package/src/ui/run-dashboard.ts +526 -464
- package/src/ui/run-event-bus.ts +208 -208
- package/src/ui/run-snapshot-cache.ts +826 -777
- package/src/ui/settings-overlay.ts +721 -0
- package/src/ui/snapshot-types.ts +86 -70
- package/src/ui/theme-adapter.ts +190 -190
- package/src/ui/tool-progress-formatter.ts +89 -0
- package/src/ui/transcript-cache.ts +94 -94
- package/src/ui/transcript-viewer.ts +335 -335
- package/src/utils/conflict-detect.ts +662 -0
- package/src/utils/file-coalescer.ts +86 -86
- package/src/utils/frontmatter.ts +68 -68
- package/src/utils/fs-watch.ts +88 -31
- package/src/utils/gh-protocol.ts +479 -0
- package/src/utils/ids.ts +17 -17
- package/src/utils/incremental-reader.ts +104 -104
- package/src/utils/internal-error.ts +6 -6
- package/src/utils/names.ts +27 -27
- package/src/utils/paths.ts +102 -63
- package/src/utils/redaction.ts +44 -44
- package/src/utils/safe-paths.ts +47 -47
- package/src/utils/scan-cache.ts +136 -136
- package/src/utils/sse-parser.ts +134 -134
- package/src/utils/task-name-generator.ts +337 -337
- package/src/utils/timings.ts +33 -33
- package/src/utils/visual.ts +243 -198
- package/src/workflows/discover-workflows.ts +139 -139
- package/src/workflows/validate-workflow.ts +40 -40
- package/src/workflows/workflow-config.ts +26 -26
- package/src/workflows/workflow-serializer.ts +32 -32
- package/src/worktree/branch-freshness.ts +45 -45
- package/src/worktree/cleanup.ts +75 -75
- package/src/worktree/worktree-manager.ts +188 -188
- package/teams/default.team.md +12 -12
- package/teams/fast-fix.team.md +11 -11
- package/teams/implementation.team.md +18 -18
- package/teams/parallel-research.team.md +14 -14
- package/teams/research.team.md +11 -11
- package/teams/review.team.md +12 -12
- package/tsconfig.json +19 -19
- package/workflows/default.workflow.md +30 -30
- package/workflows/fast-fix.workflow.md +23 -23
- package/workflows/implementation.workflow.md +43 -43
- package/workflows/parallel-research.workflow.md +46 -46
- package/workflows/research.workflow.md +22 -22
- package/workflows/review.workflow.md +30 -30
- package/skills/task-packet/SKILL.md +0 -28
- package/skills/verify-evidence/SKILL.md +0 -27
|
@@ -1,26 +1,250 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: read-only-explorer
|
|
3
|
-
description: Read-only exploration and audit workflow. Use for explorer, analyst, reviewer, and source-audit roles that must inspect code without modifying files.
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# read-only-explorer
|
|
7
|
-
|
|
8
|
-
Use this skill for explorer, analyst, reviewer, and source-audit roles.
|
|
9
|
-
|
|
10
|
-
## Contract
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
##
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
1
|
+
---
|
|
2
|
+
name: read-only-explorer
|
|
3
|
+
description: Read-only exploration and audit workflow. Use for explorer, analyst, reviewer, and source-audit roles that must inspect code without modifying files.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# read-only-explorer
|
|
7
|
+
|
|
8
|
+
Use this skill for explorer, analyst, reviewer, and source-audit roles. These roles must inspect code without modifying it.
|
|
9
|
+
|
|
10
|
+
## Core Contract
|
|
11
|
+
|
|
12
|
+
1. **Do not edit files** — no write, no edit, no delete
|
|
13
|
+
2. **Do not write generated artifacts** outside the run artifact directory
|
|
14
|
+
3. **Prefer read-only commands**: `read`, `rg`, `find`, `ls`, `git status`
|
|
15
|
+
4. **Record exact files inspected** — include path and relevant line numbers
|
|
16
|
+
5. **Distinguish direct evidence from inference** — don't guess
|
|
17
|
+
6. **If implementation is needed, recommend** — don't modify code
|
|
18
|
+
|
|
19
|
+
## Tool Selection Guide
|
|
20
|
+
|
|
21
|
+
Choosing the right tool for the task reduces noise and speeds up discovery.
|
|
22
|
+
|
|
23
|
+
### `rg` (ripgrep) — Code pattern search
|
|
24
|
+
|
|
25
|
+
**Best for:** Finding function definitions, imports, patterns, usages
|
|
26
|
+
```
|
|
27
|
+
# Find all uses of a function
|
|
28
|
+
rg "functionName" --type ts
|
|
29
|
+
|
|
30
|
+
# Find with context (2 lines before/after)
|
|
31
|
+
rg "pattern" -B2 -A2
|
|
32
|
+
|
|
33
|
+
# Case-insensitive
|
|
34
|
+
rg -i "error handling"
|
|
35
|
+
|
|
36
|
+
# Only match whole word
|
|
37
|
+
rg -w "agent"
|
|
38
|
+
|
|
39
|
+
# JSON output for machine parsing
|
|
40
|
+
rg "pattern" --json | head -20
|
|
41
|
+
|
|
42
|
+
# Respect .gitignore (skip node_modules)
|
|
43
|
+
rg "pattern" --type-add 'exclude:*.json' --type ts
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
### `find` — File and directory search
|
|
47
|
+
|
|
48
|
+
**Best for:** Finding files by name, type, or path pattern
|
|
49
|
+
```
|
|
50
|
+
# Find all TypeScript files
|
|
51
|
+
find . -name "*.ts" -not -path "*/node_modules/*" | head -20
|
|
52
|
+
|
|
53
|
+
# Find recently modified files
|
|
54
|
+
find . -name "*.ts" -mtime -7 | head -20
|
|
55
|
+
|
|
56
|
+
# Find files larger than 100KB
|
|
57
|
+
find . -size +100k -name "*.ts"
|
|
58
|
+
|
|
59
|
+
# Find by path pattern
|
|
60
|
+
find . -path "*/runtime/*" -name "*.ts" | head -10
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
### `read` — File content inspection
|
|
64
|
+
|
|
65
|
+
**Best for:** Reading specific files or file sections
|
|
66
|
+
```
|
|
67
|
+
# Read full file
|
|
68
|
+
read file.ts
|
|
69
|
+
|
|
70
|
+
# Read with line numbers
|
|
71
|
+
read -n file.ts # (use read tool with offset/limit)
|
|
72
|
+
|
|
73
|
+
# Read first N lines
|
|
74
|
+
read --limit 50 file.ts
|
|
75
|
+
|
|
76
|
+
# Read specific section
|
|
77
|
+
read --offset 100 --limit 30 file.ts
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
### `ls` — Directory structure
|
|
81
|
+
|
|
82
|
+
**Best for:** Listing directories, understanding layout
|
|
83
|
+
```
|
|
84
|
+
ls src/runtime/
|
|
85
|
+
ls -la .crew/state/runs/ | head -20
|
|
86
|
+
ls skills/ | head -20
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
### `git` — Version control inspection
|
|
90
|
+
|
|
91
|
+
**Best for:** Understanding history, changes, and authorship
|
|
92
|
+
```
|
|
93
|
+
git status --short
|
|
94
|
+
git diff HEAD~3 --stat
|
|
95
|
+
git log --oneline -10
|
|
96
|
+
git show <commit-hash> --stat
|
|
97
|
+
git blame src/file.ts | head -20
|
|
98
|
+
git branch -a
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
## Scope Containment
|
|
102
|
+
|
|
103
|
+
Limit searches to relevant areas to avoid noise.
|
|
104
|
+
|
|
105
|
+
### By directory
|
|
106
|
+
```
|
|
107
|
+
# Only search runtime directory
|
|
108
|
+
rg "pattern" src/runtime/ --type ts
|
|
109
|
+
|
|
110
|
+
# Exclude test and node_modules
|
|
111
|
+
rg "pattern" --type ts --exclude "test/**" --exclude "node_modules/**"
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
### By file type
|
|
115
|
+
```
|
|
116
|
+
# Only TypeScript files
|
|
117
|
+
rg "pattern" --type ts
|
|
118
|
+
|
|
119
|
+
# Only test files
|
|
120
|
+
rg "pattern" --type-add 'test:*.test.ts' --type test
|
|
121
|
+
|
|
122
|
+
# Exclude generated files
|
|
123
|
+
rg "pattern" --glob "!**/*.generated.ts"
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
### By depth
|
|
127
|
+
```
|
|
128
|
+
# Only top-level config files
|
|
129
|
+
find . -maxdepth 2 -name "*.json" | head -20
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
## Findings Format
|
|
133
|
+
|
|
134
|
+
Every finding should be documented with:
|
|
135
|
+
|
|
136
|
+
```text
|
|
137
|
+
path/to/file.ts:123
|
|
138
|
+
Evidence: <what you read>
|
|
139
|
+
Severity: critical|high|medium|low
|
|
140
|
+
Finding: <what the problem is>
|
|
141
|
+
Impact: <why it matters>
|
|
142
|
+
Recommendation: <what to do next>
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
**Example:**
|
|
146
|
+
```
|
|
147
|
+
src/runtime/agent-manager.ts:87
|
|
148
|
+
Evidence: throw new Error("Agent not found") with no error code
|
|
149
|
+
Severity: medium
|
|
150
|
+
Finding: Error thrown without structured error code makes debugging harder
|
|
151
|
+
Impact: Hard to distinguish "not found" from "access denied" or other failures
|
|
152
|
+
Recommendation: Use typed CrewError with error code enum instead
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
## Risk Assessment Criteria
|
|
156
|
+
|
|
157
|
+
| Severity | Criteria |
|
|
158
|
+
|---|---|
|
|
159
|
+
| **critical** | Data loss, secret leak, arbitrary command/path escape, broken install |
|
|
160
|
+
| **high** | Broken core workflow, ownership bypass, persistent incorrect state |
|
|
161
|
+
| **medium** | Important regression, flaky test, confusing behavior |
|
|
162
|
+
| **low** | Polish, maintainability, missing docs |
|
|
163
|
+
|
|
164
|
+
## Next Steps Format
|
|
165
|
+
|
|
166
|
+
When recommending implementation, structure it as:
|
|
167
|
+
|
|
168
|
+
```
|
|
169
|
+
1. Files to create:
|
|
170
|
+
- src/new-feature.ts (new module)
|
|
171
|
+
|
|
172
|
+
2. Files to modify:
|
|
173
|
+
- src/existing.ts (add function X, change line Y)
|
|
174
|
+
|
|
175
|
+
3. Tests to add:
|
|
176
|
+
- test/unit/new-feature.test.ts
|
|
177
|
+
|
|
178
|
+
4. Verification:
|
|
179
|
+
- npx tsc --noEmit
|
|
180
|
+
- npm test
|
|
181
|
+
```
|
|
182
|
+
|
|
183
|
+
## Reading Large Codebases Efficiently
|
|
184
|
+
|
|
185
|
+
### Chunk strategy
|
|
186
|
+
1. Start with entry point (main file, index, README)
|
|
187
|
+
2. Find key function calls → follow the chain
|
|
188
|
+
3. Read function signatures before bodies
|
|
189
|
+
4. Skip test files unless investigating specific test behavior
|
|
190
|
+
|
|
191
|
+
### Trace data flow
|
|
192
|
+
```
|
|
193
|
+
user input → config resolution → function call → state write → UI update
|
|
194
|
+
```
|
|
195
|
+
|
|
196
|
+
For each step, identify:
|
|
197
|
+
- What data enters
|
|
198
|
+
- What transforms it
|
|
199
|
+
- What exits
|
|
200
|
+
- Where it could fail
|
|
201
|
+
|
|
202
|
+
### Distinguish evidence from inference
|
|
203
|
+
|
|
204
|
+
| Type | Description | Example |
|
|
205
|
+
|---|---|---|
|
|
206
|
+
| **Direct evidence** | Exact content read from file | `"type": "worker.spawned"` found at line 42 |
|
|
207
|
+
| **Inference** | Interpretation based on evidence | "Worker likely crashed because exit code was 1" |
|
|
208
|
+
| **Unknown** | Not confirmed | "This might be a race condition" |
|
|
209
|
+
|
|
210
|
+
Always label uncertainty clearly. Use "may", "might", "could" for inference; "is", "shows", "contains" for evidence.
|
|
211
|
+
|
|
212
|
+
## Anti-patterns
|
|
213
|
+
|
|
214
|
+
- **Editing during exploration**: If you need to add logging or print statements, use a separate test script instead of modifying source files.
|
|
215
|
+
- **Broad searches without context**: `rg "error"` returns thousands of results. Narrow by file, directory, or surrounding context.
|
|
216
|
+
- **Trusting comments over code**: Comments can be outdated. Read the actual code.
|
|
217
|
+
- **Skipping test files**: Tests often reveal the intended behavior and edge cases. Read them.
|
|
218
|
+
- **Not recording files inspected**: Without exact paths, findings can't be verified.
|
|
219
|
+
- **Inference as fact**: If unsure, mark it as inference.
|
|
220
|
+
|
|
221
|
+
---
|
|
222
|
+
|
|
223
|
+
## Source patterns
|
|
224
|
+
|
|
225
|
+
- `src/runtime/task-runner.ts` — task execution pipeline
|
|
226
|
+
- `src/runtime/child-pi.ts` — worker spawning
|
|
227
|
+
- `src/runtime/live-agent-manager.ts` — live agent lifecycle
|
|
228
|
+
- `src/state/event-log.ts` — event logging system
|
|
229
|
+
- `src/extension/team-tool/` — API and tool handling
|
|
230
|
+
- `src/ui/` — widget and TUI rendering
|
|
231
|
+
|
|
232
|
+
---
|
|
233
|
+
|
|
234
|
+
## Verification
|
|
235
|
+
|
|
236
|
+
```bash
|
|
237
|
+
cd pi-crew
|
|
238
|
+
|
|
239
|
+
# Verify no files were modified
|
|
240
|
+
git status --short
|
|
241
|
+
|
|
242
|
+
# Count inspected files
|
|
243
|
+
rg "pattern" --type ts | wc -l
|
|
244
|
+
|
|
245
|
+
# Check for direct evidence in event log
|
|
246
|
+
cat .crew/state/runs/<runId>/events.jsonl | grep "worker.spawned"
|
|
247
|
+
|
|
248
|
+
# TypeScript
|
|
249
|
+
npx tsc --noEmit
|
|
250
|
+
```
|
|
@@ -1,21 +1,307 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: safe-bash
|
|
3
|
-
description: Safe shell-command workflow. Use whenever a task may execute shell commands, especially to prefer read-only commands and avoid destructive actions without confirmation.
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# safe-bash
|
|
7
|
-
|
|
8
|
-
Use this skill whenever a task may execute shell commands.
|
|
9
|
-
|
|
10
|
-
##
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
1
|
+
---
|
|
2
|
+
name: safe-bash
|
|
3
|
+
description: Safe shell-command workflow. Use whenever a task may execute shell commands, especially to prefer read-only commands and avoid destructive actions without confirmation.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# safe-bash
|
|
7
|
+
|
|
8
|
+
Use this skill whenever a task may execute shell commands. This skill covers cross-platform shell safety, destructive action confirmation, and Windows-specific patterns.
|
|
9
|
+
|
|
10
|
+
## Classification
|
|
11
|
+
|
|
12
|
+
Every shell command is either **read-only** or **mutating**. Always report which it is.
|
|
13
|
+
|
|
14
|
+
### Read-only commands (safe)
|
|
15
|
+
```bash
|
|
16
|
+
pwd # print working directory
|
|
17
|
+
ls -la # list files
|
|
18
|
+
find . -name "*.ts" | head -20 # search without writing
|
|
19
|
+
rg "pattern" --type ts | head -20 # ripgrep without write
|
|
20
|
+
git status # inspect state
|
|
21
|
+
git log --oneline -5 # recent commits
|
|
22
|
+
git diff --staged # staged changes
|
|
23
|
+
npm view <pkg> # query registry (no install)
|
|
24
|
+
npx tsc --noEmit # typecheck (no write)
|
|
25
|
+
node -e "console.log(process.version)" # inspect version
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
### Mutating commands (require confirmation)
|
|
29
|
+
```bash
|
|
30
|
+
npm install # changes node_modules
|
|
31
|
+
git commit # creates new commit
|
|
32
|
+
git push # publishes to remote
|
|
33
|
+
rm -rf <path> # DESTRUCTIVE
|
|
34
|
+
git reset --hard # rewrites history
|
|
35
|
+
npm publish # publishes to registry
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
## Cross-Platform Considerations
|
|
39
|
+
|
|
40
|
+
### Windows vs Unix paths
|
|
41
|
+
|
|
42
|
+
```typescript
|
|
43
|
+
// ❌ Never hardcode paths with forward slashes on Windows
|
|
44
|
+
const path = "D:/project/src/file.ts";
|
|
45
|
+
|
|
46
|
+
// ✅ Use path.join() or Node's path module
|
|
47
|
+
import * as path from "path";
|
|
48
|
+
const filePath = path.join(cwd, "src", "file.ts");
|
|
49
|
+
|
|
50
|
+
// ✅ Or use forward slashes that work on both
|
|
51
|
+
const filePath = "src/file.ts"; // relative paths work on both
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
### argv vs cmd /c
|
|
55
|
+
|
|
56
|
+
```typescript
|
|
57
|
+
// ✅ Preferred on Windows: argv-based execution (no shell)
|
|
58
|
+
import { spawn } from "child_process";
|
|
59
|
+
spawn("node", ["--version"], { stdio: "pipe" });
|
|
60
|
+
|
|
61
|
+
// ✅ If shell needed: use cmd /c explicitly
|
|
62
|
+
spawn("cmd", ["/c", "dir /b"], { stdio: "pipe" });
|
|
63
|
+
|
|
64
|
+
// ❌ Don't use cmd /c with complex commands as single string
|
|
65
|
+
spawn("cmd", ["/c", "node --version && npm test"], { stdio: "pipe" });
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
### Package manager detection
|
|
69
|
+
|
|
70
|
+
```typescript
|
|
71
|
+
// Detect npm vs pnpm vs yarn
|
|
72
|
+
function detectPackageManager(cwd: string): "npm" | "pnpm" | "yarn" | "unknown" {
|
|
73
|
+
if (fs.existsSync(path.join(cwd, "pnpm-lock.yaml"))) return "pnpm";
|
|
74
|
+
if (fs.existsSync(path.join(cwd, "yarn.lock"))) return "yarn";
|
|
75
|
+
return "npm";
|
|
76
|
+
}
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
## Heredoc and Quoting Gotchas
|
|
80
|
+
|
|
81
|
+
### Quoting variables in commands
|
|
82
|
+
|
|
83
|
+
```bash
|
|
84
|
+
# ❌ Unsafe: variable expansion without quoting
|
|
85
|
+
node -e "console.log('$PATH')" # breaks on spaces
|
|
86
|
+
|
|
87
|
+
# ✅ Safe: escape single quotes in the string
|
|
88
|
+
node -e "console.log(process.env.PATH)" # use env, not shell var
|
|
89
|
+
|
|
90
|
+
# ✅ For file paths with spaces
|
|
91
|
+
ls "D:/my project/src"
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
### Heredoc in scripts
|
|
95
|
+
|
|
96
|
+
```bash
|
|
97
|
+
# ❌ Heredoc inside double quotes expands variables
|
|
98
|
+
cat << EOF
|
|
99
|
+
HOME is $HOME
|
|
100
|
+
EOF
|
|
101
|
+
|
|
102
|
+
# ✅ Use single quotes to prevent expansion
|
|
103
|
+
cat << 'EOF'
|
|
104
|
+
HOME is $HOME
|
|
105
|
+
EOF
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
## Timeout and Background Execution
|
|
109
|
+
|
|
110
|
+
### Timeout long-running commands
|
|
111
|
+
|
|
112
|
+
```bash
|
|
113
|
+
# Linux/macOS: use timeout command
|
|
114
|
+
timeout 30 npm test # kill after 30 seconds
|
|
115
|
+
|
|
116
|
+
# Node.js: use AbortSignal
|
|
117
|
+
const controller = new AbortController();
|
|
118
|
+
setTimeout(() => controller.abort(), 30_000);
|
|
119
|
+
spawn("npm", ["test"], { signal: controller.signal });
|
|
120
|
+
|
|
121
|
+
# Windows: use /wait flag
|
|
122
|
+
start /wait cmd /c "npm test"
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
### Background vs foreground
|
|
126
|
+
|
|
127
|
+
```bash
|
|
128
|
+
# Background: run and forget (no output capture)
|
|
129
|
+
npm test &
|
|
130
|
+
|
|
131
|
+
# Foreground with timeout
|
|
132
|
+
timeout 60 npm test || echo "Timed out or failed"
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
## Signal Handling
|
|
136
|
+
|
|
137
|
+
### SIGTERM vs SIGKILL
|
|
138
|
+
|
|
139
|
+
| Signal | Effect | Use case |
|
|
140
|
+
|---|---|---|
|
|
141
|
+
| SIGTERM (15) | Graceful termination request | Normal shutdown |
|
|
142
|
+
| SIGKILL (9) | Immediate forced termination | Unresponsive process |
|
|
143
|
+
| SIGINT (2) | Interrupt (Ctrl+C) | User cancel |
|
|
144
|
+
|
|
145
|
+
```bash
|
|
146
|
+
# Graceful: request termination
|
|
147
|
+
kill -15 <pid> # or: kill <pid>
|
|
148
|
+
|
|
149
|
+
# Force: immediate termination
|
|
150
|
+
kill -9 <pid> # or: kill -SIGKILL <pid>
|
|
151
|
+
|
|
152
|
+
# On Windows (cmd):
|
|
153
|
+
taskkill /pid <pid> /t /f # /t=tree, /f=force
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
### Child process inheritance
|
|
157
|
+
|
|
158
|
+
When spawning subprocesses, child processes inherit the parent's signal handlers. Use `signal: controller.signal` in Node.js to give the child its own abort signal.
|
|
159
|
+
|
|
160
|
+
## Sudo and Interactive Prompts
|
|
161
|
+
|
|
162
|
+
### Detecting interactive prompts
|
|
163
|
+
|
|
164
|
+
```bash
|
|
165
|
+
# Check if stdin is a terminal
|
|
166
|
+
[ -t 0 ] && echo "Interactive" || echo "Non-interactive"
|
|
167
|
+
```
|
|
168
|
+
|
|
169
|
+
### Avoiding sudo prompts in scripts
|
|
170
|
+
|
|
171
|
+
```bash
|
|
172
|
+
# ❌ This will hang waiting for password
|
|
173
|
+
npm install -g typescript
|
|
174
|
+
|
|
175
|
+
# ✅ Use expect or non-interactive mode
|
|
176
|
+
sudo npm install -g typescript 2>/dev/null # ignores prompt
|
|
177
|
+
NPM_CONFIG_INTERACTIVE=false npm install -g typescript
|
|
178
|
+
```
|
|
179
|
+
|
|
180
|
+
## Error Trapping
|
|
181
|
+
|
|
182
|
+
### set -e and set -o pipefail
|
|
183
|
+
|
|
184
|
+
```bash
|
|
185
|
+
#!/bin/bash
|
|
186
|
+
set -e # Exit immediately on error
|
|
187
|
+
set -o pipefail # Pipeline fails if any command fails
|
|
188
|
+
|
|
189
|
+
# Good for CI/CD scripts
|
|
190
|
+
npm test
|
|
191
|
+
```
|
|
192
|
+
|
|
193
|
+
### Capture and handle errors
|
|
194
|
+
|
|
195
|
+
```bash
|
|
196
|
+
# Capture exit code
|
|
197
|
+
npm test || {
|
|
198
|
+
echo "Tests failed with exit code $?"
|
|
199
|
+
exit 1
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
# Check for command existence
|
|
203
|
+
command -v npm >/dev/null 2>&1 || { echo "npm not found"; exit 1; }
|
|
204
|
+
```
|
|
205
|
+
|
|
206
|
+
## ANSI Color Code Stripping
|
|
207
|
+
|
|
208
|
+
For log parsing, strip ANSI escape codes:
|
|
209
|
+
|
|
210
|
+
```typescript
|
|
211
|
+
// Strip ANSI color codes from output
|
|
212
|
+
function stripAnsi(text: string): string {
|
|
213
|
+
return text.replace(/\x1B\[[0-9;]*[mK]/g, "");
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
// Usage
|
|
217
|
+
const output = stripAnsi(child.stdout);
|
|
218
|
+
const hasFailure = output.includes("FAIL");
|
|
219
|
+
```
|
|
220
|
+
|
|
221
|
+
Or via shell:
|
|
222
|
+
```bash
|
|
223
|
+
# Strip ANSI codes using sed
|
|
224
|
+
npm test 2>&1 | sed 's/\x1B\[[0-9;]*[mK]//g'
|
|
225
|
+
```
|
|
226
|
+
|
|
227
|
+
## Node.js vs Binary Detection
|
|
228
|
+
|
|
229
|
+
```typescript
|
|
230
|
+
// Detect node executable
|
|
231
|
+
import { execSync } from "child_process";
|
|
232
|
+
function findNode(): string {
|
|
233
|
+
// Try common paths
|
|
234
|
+
for (const candidate of [
|
|
235
|
+
process.execPath,
|
|
236
|
+
"node",
|
|
237
|
+
"C:\\Program Files\\nodejs\\node.exe",
|
|
238
|
+
"/usr/local/bin/node",
|
|
239
|
+
]) {
|
|
240
|
+
try {
|
|
241
|
+
execSync(`"${candidate}" --version`, { stdio: "ignore" });
|
|
242
|
+
return candidate;
|
|
243
|
+
} catch { /* continue */ }
|
|
244
|
+
}
|
|
245
|
+
return "node"; // fallback
|
|
246
|
+
}
|
|
247
|
+
```
|
|
248
|
+
|
|
249
|
+
## Destructive Action Confirmation
|
|
250
|
+
|
|
251
|
+
Never execute destructive commands without explicit confirmation:
|
|
252
|
+
|
|
253
|
+
| Command | Risk | Confirmation needed |
|
|
254
|
+
|---|---|---|
|
|
255
|
+
| `rm -rf <path>` | Permanent data loss | "Type the path to confirm" |
|
|
256
|
+
| `git reset --hard` | Undo all changes | "Confirm with: YES" |
|
|
257
|
+
| `git clean -fd` | Remove untracked files | "Confirm with: YES" |
|
|
258
|
+
| `npm publish` | Public package | "Confirm version X.Y.Z" |
|
|
259
|
+
|
|
260
|
+
**Confirmation pattern:**
|
|
261
|
+
```bash
|
|
262
|
+
# Require user to type the exact path
|
|
263
|
+
read -p "Type the directory path to confirm deletion: " CONFIRM
|
|
264
|
+
if [ "$CONFIRM" = "$TARGET_PATH" ]; then
|
|
265
|
+
rm -rf "$TARGET_PATH"
|
|
266
|
+
else
|
|
267
|
+
echo "Aborted: paths do not match"
|
|
268
|
+
fi
|
|
269
|
+
```
|
|
270
|
+
|
|
271
|
+
## Anti-patterns
|
|
272
|
+
|
|
273
|
+
- **`rm -rf` without path validation**: Always double-check the path before rm -rf
|
|
274
|
+
- **Blocking on subprocess**: Always use async spawn with timeout
|
|
275
|
+
- **Ignoring exit codes**: Check `$?` or capture `exitCode` from Node.js spawn
|
|
276
|
+
- **Leaking secrets in args**: Use environment variables instead of command-line args
|
|
277
|
+
- **Not handling Windows spaces**: Test on Windows before assuming paths work
|
|
278
|
+
- **Background process zombie**: Always handle process exit or store the pid for cleanup
|
|
279
|
+
|
|
280
|
+
---
|
|
281
|
+
|
|
282
|
+
## Source patterns
|
|
283
|
+
|
|
284
|
+
- `src/utils/resolve-shell.ts` — cross-platform shell detection
|
|
285
|
+
- `src/runtime/child-pi.ts` — spawn, killProcessPid, signal handling
|
|
286
|
+
- `src/worktree/worktree-manager.ts` — git commands via execFileSync
|
|
287
|
+
- `src/config/defaults.ts` — platform detection
|
|
288
|
+
|
|
289
|
+
---
|
|
290
|
+
|
|
291
|
+
## Verification
|
|
292
|
+
|
|
293
|
+
```bash
|
|
294
|
+
cd pi-crew
|
|
295
|
+
|
|
296
|
+
# Check exit code handling
|
|
297
|
+
node -e "const {spawnSync}=require('child_process'); console.log(spawnSync('false').status)"
|
|
298
|
+
|
|
299
|
+
# Test ANSI stripping
|
|
300
|
+
node -e "console.log('\x1B[32mgreen\x1B[0m'.replace(/\x1B\[[0-9;]*[mK]/g,''))"
|
|
301
|
+
|
|
302
|
+
# Verify cross-platform path
|
|
303
|
+
node -e "const p=require('path'); console.log(p.join('D:\\\\','project','src'))"
|
|
304
|
+
|
|
305
|
+
# TypeScript
|
|
306
|
+
npx tsc --noEmit
|
|
307
|
+
```
|
|
@@ -23,7 +23,7 @@ Before any completion claim:
|
|
|
23
23
|
|
|
24
24
|
| Claim | Requires | Not sufficient |
|
|
25
25
|
|---|---|---|
|
|
26
|
-
| Tests pass | Fresh test output with zero failures | Prior run,
|
|
26
|
+
| Tests pass | Fresh test output with zero failures | Prior run, "should pass" |
|
|
27
27
|
| Typecheck passes | Typecheck command exit 0 | Lint or targeted tests only |
|
|
28
28
|
| Bug fixed | Original symptom/regression test passes | Code changed |
|
|
29
29
|
| Requirements met | Checklist against request/plan | Generic test success |
|
|
@@ -52,6 +52,15 @@ Include:
|
|
|
52
52
|
- skipped checks and why;
|
|
53
53
|
- risks and rollback notes.
|
|
54
54
|
|
|
55
|
+
## Required Final Evidence
|
|
56
|
+
|
|
57
|
+
Before finalizing any work, report:
|
|
58
|
+
|
|
59
|
+
- **changed files**: list of files modified (or `none` for read-only work)
|
|
60
|
+
- **tests/checks run**: command and pass/fail result for each
|
|
61
|
+
- **artifacts**: run IDs, log paths, or state files inspected
|
|
62
|
+
- **risks and rollback notes**: any known risks, how to undo the changes
|
|
63
|
+
|
|
55
64
|
## Red Flags
|
|
56
65
|
|
|
57
|
-
Stop before saying done if you are using words like
|
|
66
|
+
Stop before saying done if you are using words like "should", "probably", "looks", "seems", "I think", or if you are trusting an agent report without checking evidence.
|