opencodekit 0.21.9 → 0.22.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/dist/index.js +1 -1
- package/dist/template/.opencode/AGENTS.md +116 -499
- package/dist/template/.opencode/README.md +1 -1
- package/dist/template/.opencode/agent/build.md +56 -396
- package/dist/template/.opencode/agent/explore.md +15 -16
- package/dist/template/.opencode/agent/general.md +2 -2
- package/dist/template/.opencode/agent/plan.md +3 -3
- package/dist/template/.opencode/agent/review.md +2 -3
- package/dist/template/.opencode/agent/scout.md +34 -16
- package/dist/template/.opencode/agent/vision.md +0 -1
- package/dist/template/.opencode/command/clarify.md +48 -0
- package/dist/template/.opencode/command/commit.md +53 -0
- package/dist/template/.opencode/command/design.md +4 -4
- package/dist/template/.opencode/command/fix.md +56 -0
- package/dist/template/.opencode/command/improve-architecture.md +55 -0
- package/dist/template/.opencode/command/init.md +88 -68
- package/dist/template/.opencode/command/refactor.md +66 -0
- package/dist/template/.opencode/command/review-codebase.md +1 -1
- package/dist/template/.opencode/command/ship.md +1 -1
- package/dist/template/.opencode/command/test.md +66 -0
- package/dist/template/.opencode/dcp.jsonc +29 -46
- package/dist/template/.opencode/memory/README.md +3 -5
- package/dist/template/.opencode/memory/_templates/adr.md +45 -0
- package/dist/template/.opencode/memory/project/gotchas.md +1 -1
- package/dist/template/.opencode/memory/project/user.md +1 -2
- package/dist/template/.opencode/memory/session-context.md +1 -1
- package/dist/template/.opencode/opencode.json +10 -332
- package/dist/template/.opencode/plugin/README.md +1 -1
- package/dist/template/.opencode/plugin/guard.ts +62 -0
- package/dist/template/.opencode/plugin/{lib/memory-admin-tools.ts → memory/admin.ts} +4 -4
- package/dist/template/.opencode/plugin/{lib → memory}/capture.ts +1 -1
- package/dist/template/.opencode/plugin/{lib → memory}/compile.ts +2 -2
- package/dist/template/.opencode/plugin/{lib → memory}/context.ts +1 -1
- package/dist/template/.opencode/plugin/{lib → memory}/curator.ts +1 -1
- package/dist/template/.opencode/plugin/{lib → memory}/db/observations.ts +102 -3
- package/dist/template/.opencode/plugin/{lib → memory}/db/schema.ts +43 -1
- package/dist/template/.opencode/plugin/{lib → memory}/db/types.ts +22 -0
- package/dist/template/.opencode/plugin/{lib/memory-db.ts → memory/db.ts} +1 -1
- package/dist/template/.opencode/plugin/{lib → memory}/distill.ts +1 -1
- package/dist/template/.opencode/plugin/{lib/memory-helpers.ts → memory/helpers.ts} +5 -1
- package/dist/template/.opencode/plugin/{lib/memory-hooks.ts → memory/hooks.ts} +1 -1
- package/dist/template/.opencode/plugin/{lib → memory}/index-generator.ts +2 -2
- package/dist/template/.opencode/plugin/{lib → memory}/inject.ts +1 -1
- package/dist/template/.opencode/plugin/{lib → memory}/lint.ts +2 -2
- package/dist/template/.opencode/plugin/memory/tools.ts +322 -0
- package/dist/template/.opencode/plugin/{lib → memory}/validate.ts +2 -2
- package/dist/template/.opencode/plugin/memory.ts +7 -17
- package/dist/template/.opencode/plugin/srcwalk.ts +721 -0
- package/dist/template/.opencode/skill/agent-code-quality-gate/SKILL.md +98 -0
- package/dist/template/.opencode/skill/behavioral-kernel/SKILL.md +52 -0
- package/dist/template/.opencode/skill/browser-testing-with-devtools/SKILL.md +85 -0
- package/dist/template/.opencode/skill/code-cleanup/SKILL.md +114 -0
- package/dist/template/.opencode/skill/code-navigation/SKILL.md +142 -0
- package/dist/template/.opencode/skill/code-review-and-quality/SKILL.md +131 -0
- package/dist/template/.opencode/skill/debugging-and-error-recovery/SKILL.md +109 -0
- package/dist/template/.opencode/skill/deep-module-design/SKILL.md +207 -0
- package/dist/template/.opencode/skill/git-workflow-and-versioning/SKILL.md +77 -0
- package/dist/template/.opencode/skill/grill-me/SKILL.md +140 -0
- package/dist/template/.opencode/skill/memory-system/SKILL.md +9 -10
- package/dist/template/.opencode/skill/planning-and-task-breakdown/SKILL.md +116 -0
- package/dist/template/.opencode/skill/shipping-and-launch/SKILL.md +95 -0
- package/dist/template/.opencode/skill/source-driven-development/SKILL.md +103 -0
- package/dist/template/.opencode/skill/spec-driven-development/SKILL.md +121 -0
- package/dist/template/.opencode/skill/srcwalk/SKILL.md +161 -0
- package/dist/template/.opencode/skill/ubiquitous-language/SKILL.md +184 -0
- package/dist/template/.opencode/tool/context7.ts +1 -1
- package/dist/template/.opencode/tool/grepsearch.ts +1 -1
- package/package.json +1 -1
- package/dist/template/.opencode/AGENT_ALIGNMENT.md +0 -564
- package/dist/template/.opencode/agent/painter.md +0 -83
- package/dist/template/.opencode/command/compound.md +0 -240
- package/dist/template/.opencode/command/curate.md +0 -299
- package/dist/template/.opencode/command/handoff.md +0 -149
- package/dist/template/.opencode/command/health.md +0 -356
- package/dist/template/.opencode/command/init-context.md +0 -297
- package/dist/template/.opencode/command/init-user.md +0 -125
- package/dist/template/.opencode/command/iterate.md +0 -200
- package/dist/template/.opencode/command/lfg.md +0 -173
- package/dist/template/.opencode/command/resume.md +0 -78
- package/dist/template/.opencode/command/status.md +0 -126
- package/dist/template/.opencode/command/ui-slop-check.md +0 -169
- package/dist/template/.opencode/plugin/lib/memory-tools.ts +0 -535
- package/dist/template/.opencode/skill/agent-evals/SKILL.md +0 -208
- package/dist/template/.opencode/skill/anti-ai-slop/SKILL.md +0 -76
- package/dist/template/.opencode/skill/augment-context-engine/SKILL.md +0 -122
- package/dist/template/.opencode/skill/augment-context-engine/mcp.json +0 -6
- package/dist/template/.opencode/skill/brand-asset-protocol/SKILL.md +0 -222
- package/dist/template/.opencode/skill/code-search-patterns/SKILL.md +0 -253
- package/dist/template/.opencode/skill/code-simplification/SKILL.md +0 -211
- package/dist/template/.opencode/skill/context-condensation/SKILL.md +0 -149
- package/dist/template/.opencode/skill/context-initialization/SKILL.md +0 -69
- package/dist/template/.opencode/skill/context-management/SKILL.md +0 -390
- package/dist/template/.opencode/skill/deep-research/SKILL.md +0 -384
- package/dist/template/.opencode/skill/design-direction-advisor/SKILL.md +0 -139
- package/dist/template/.opencode/skill/dispatching-parallel-agents/SKILL.md +0 -191
- package/dist/template/.opencode/skill/executing-plans/SKILL.md +0 -247
- package/dist/template/.opencode/skill/figma-go/SKILL.md +0 -65
- package/dist/template/.opencode/skill/finishing-a-development-branch/SKILL.md +0 -357
- package/dist/template/.opencode/skill/full-output-enforcement/SKILL.md +0 -62
- package/dist/template/.opencode/skill/gh-address-comments/SKILL.md +0 -29
- package/dist/template/.opencode/skill/gh-address-comments/scripts/fetch_comments.py +0 -237
- package/dist/template/.opencode/skill/gh-fix-ci/SKILL.md +0 -38
- package/dist/template/.opencode/skill/gh-fix-ci/scripts/inspect_pr_checks.py +0 -509
- package/dist/template/.opencode/skill/hi-fi-prototype-html/SKILL.md +0 -253
- package/dist/template/.opencode/skill/html-deck-export/SKILL.md +0 -189
- package/dist/template/.opencode/skill/index-knowledge/SKILL.md +0 -413
- package/dist/template/.opencode/skill/memory-grounding/SKILL.md +0 -68
- package/dist/template/.opencode/skill/playwriter/SKILL.md +0 -158
- package/dist/template/.opencode/skill/portless/SKILL.md +0 -109
- package/dist/template/.opencode/skill/prd/SKILL.md +0 -146
- package/dist/template/.opencode/skill/prd-task/SKILL.md +0 -182
- package/dist/template/.opencode/skill/prd-task/references/prd-schema.json +0 -124
- package/dist/template/.opencode/skill/prompt-leverage/SKILL.md +0 -90
- package/dist/template/.opencode/skill/prompt-leverage/references/framework.md +0 -91
- package/dist/template/.opencode/skill/prompt-leverage/scripts/augment_prompt.py +0 -157
- package/dist/template/.opencode/skill/receiving-code-review/SKILL.md +0 -263
- package/dist/template/.opencode/skill/reconcile/SKILL.md +0 -183
- package/dist/template/.opencode/skill/reflection-checkpoints/SKILL.md +0 -183
- package/dist/template/.opencode/skill/requesting-code-review/SKILL.md +0 -443
- package/dist/template/.opencode/skill/requesting-code-review/references/specialist-profiles.md +0 -108
- package/dist/template/.opencode/skill/requesting-code-review/review.md +0 -160
- package/dist/template/.opencode/skill/rtk-command-compression/SKILL.md +0 -134
- package/dist/template/.opencode/skill/screenshot/SKILL.md +0 -48
- package/dist/template/.opencode/skill/screenshot/scripts/ensure_macos_permissions.sh +0 -54
- package/dist/template/.opencode/skill/screenshot/scripts/macos_display_info.swift +0 -22
- package/dist/template/.opencode/skill/screenshot/scripts/macos_permissions.swift +0 -40
- package/dist/template/.opencode/skill/screenshot/scripts/macos_window_info.swift +0 -126
- package/dist/template/.opencode/skill/screenshot/scripts/take_screenshot.ps1 +0 -163
- package/dist/template/.opencode/skill/screenshot/scripts/take_screenshot.py +0 -585
- package/dist/template/.opencode/skill/security-threat-model/SKILL.md +0 -36
- package/dist/template/.opencode/skill/security-threat-model/references/prompt-template.md +0 -255
- package/dist/template/.opencode/skill/security-threat-model/references/security-controls-and-assets.md +0 -32
- package/dist/template/.opencode/skill/sharing-skills/SKILL.md +0 -214
- package/dist/template/.opencode/skill/skill-creator/SKILL.md +0 -181
- package/dist/template/.opencode/skill/skill-installer/SKILL.md +0 -58
- package/dist/template/.opencode/skill/skill-installer/scripts/github_utils.py +0 -21
- package/dist/template/.opencode/skill/skill-installer/scripts/install-skill-from-github.py +0 -313
- package/dist/template/.opencode/skill/skill-installer/scripts/list-skills.py +0 -106
- package/dist/template/.opencode/skill/swarm-coordination/SKILL.md +0 -244
- package/dist/template/.opencode/skill/swarm-coordination/references/architecture.md +0 -39
- package/dist/template/.opencode/skill/swarm-coordination/references/delegation-worker-protocol.md +0 -145
- package/dist/template/.opencode/skill/swarm-coordination/references/dependency-graph.md +0 -50
- package/dist/template/.opencode/skill/swarm-coordination/references/drift-check.md +0 -90
- package/dist/template/.opencode/skill/swarm-coordination/references/integration-beads.md +0 -20
- package/dist/template/.opencode/skill/swarm-coordination/references/launch-flow.md +0 -186
- package/dist/template/.opencode/skill/swarm-coordination/references/reconciler.md +0 -172
- package/dist/template/.opencode/skill/swarm-coordination/references/tier-enforcement.md +0 -78
- package/dist/template/.opencode/skill/swarm-coordination/references/tmux-integration.md +0 -134
- package/dist/template/.opencode/skill/systematic-debugging/SKILL.md +0 -402
- package/dist/template/.opencode/skill/terse-output-mode/SKILL.md +0 -95
- package/dist/template/.opencode/skill/think-in-code/SKILL.md +0 -136
- package/dist/template/.opencode/skill/ux-quality-gates/SKILL.md +0 -137
- package/dist/template/.opencode/skill/v1-run/SKILL.md +0 -175
- package/dist/template/.opencode/skill/v1-run/mcp.json +0 -6
- package/dist/template/.opencode/skill/verification-gates/SKILL.md +0 -63
- package/dist/template/.opencode/skill/visual-analysis/SKILL.md +0 -154
- package/dist/template/.opencode/skill/web-design-guidelines/SKILL.md +0 -46
- package/dist/template/.opencode/skill/workspace-setup/SKILL.md +0 -76
- package/dist/template/.opencode/skill/writing-plans/SKILL.md +0 -320
- /package/dist/template/.opencode/plugin/{lib → memory}/compact.ts +0 -0
- /package/dist/template/.opencode/plugin/{lib → memory}/db/graph.ts +0 -0
- /package/dist/template/.opencode/plugin/{lib → memory}/db/maintenance.ts +0 -0
- /package/dist/template/.opencode/plugin/{lib → memory}/db/pipeline.ts +0 -0
- /package/dist/template/.opencode/plugin/{lib → memory}/notify.ts +0 -0
- /package/dist/template/.opencode/plugin/{lib → memory}/operation-log.ts +0 -0
|
@@ -1,91 +0,0 @@
|
|
|
1
|
-
# Prompt Leverage Framework
|
|
2
|
-
|
|
3
|
-
Reference for combining source ideas into a practical execution framework.
|
|
4
|
-
|
|
5
|
-
## Source Synthesis
|
|
6
|
-
|
|
7
|
-
- **Agent Flywheel** contributes behavior controls: intensity, wider search, deeper analysis, fresh eyes, first-principles thinking, and future-self clarity.
|
|
8
|
-
- **OpenAI prompt guidance** contributes execution controls: clear objectives, explicit output contracts, tool persistence, dependency checks, verification loops, and completion criteria.
|
|
9
|
-
|
|
10
|
-
Treat the final framework as:
|
|
11
|
-
|
|
12
|
-
`Objective -> Context -> Work Style -> Tool Rules -> Output Contract -> Verification -> Done`
|
|
13
|
-
|
|
14
|
-
## Block Definitions
|
|
15
|
-
|
|
16
|
-
### Objective
|
|
17
|
-
|
|
18
|
-
State the task in one or two lines. Define success in observable terms.
|
|
19
|
-
|
|
20
|
-
### Context
|
|
21
|
-
|
|
22
|
-
Specify relevant files, URLs, constraints, assumptions, and information boundaries. Say when the agent must retrieve facts instead of guessing.
|
|
23
|
-
|
|
24
|
-
### Work Style
|
|
25
|
-
|
|
26
|
-
Control how the agent approaches the task.
|
|
27
|
-
|
|
28
|
-
- Go broad first when system understanding matters.
|
|
29
|
-
- Go deep where risk or complexity is highest.
|
|
30
|
-
- Use first-principles reasoning before changing things.
|
|
31
|
-
- Re-check with fresh eyes for non-trivial tasks.
|
|
32
|
-
|
|
33
|
-
### Tool Rules
|
|
34
|
-
|
|
35
|
-
Define when browsing, file inspection, tests, or external tools are required. Prevent skipping prerequisite checks.
|
|
36
|
-
|
|
37
|
-
### Output Contract
|
|
38
|
-
|
|
39
|
-
Define exact structure, tone, formatting, depth, and any required sections or schemas.
|
|
40
|
-
|
|
41
|
-
### Verification
|
|
42
|
-
|
|
43
|
-
Require checks for correctness, grounding, completeness, side effects, and better alternatives.
|
|
44
|
-
|
|
45
|
-
### Done Criteria
|
|
46
|
-
|
|
47
|
-
Define what must be true before the agent stops.
|
|
48
|
-
|
|
49
|
-
## Intensity Levels
|
|
50
|
-
|
|
51
|
-
Use the minimum level that matches the task.
|
|
52
|
-
|
|
53
|
-
- `Light`: simple edits, formatting, quick rewrites.
|
|
54
|
-
- `Standard`: typical coding, research, and drafting tasks.
|
|
55
|
-
- `Deep`: debugging, architecture, complex research, or high-stakes outputs.
|
|
56
|
-
|
|
57
|
-
## Task-Type Adjustments
|
|
58
|
-
|
|
59
|
-
### Coding
|
|
60
|
-
|
|
61
|
-
- Emphasize repo context, file inspection, smallest correct change, validation, and edge cases.
|
|
62
|
-
|
|
63
|
-
### Research
|
|
64
|
-
|
|
65
|
-
- Emphasize source quality, evidence gathering, synthesis, uncertainty, and citations.
|
|
66
|
-
|
|
67
|
-
### Writing
|
|
68
|
-
|
|
69
|
-
- Emphasize audience, tone, structure, constraints, and revision criteria.
|
|
70
|
-
|
|
71
|
-
### Review
|
|
72
|
-
|
|
73
|
-
- Emphasize fresh-eyes critique, failure modes, alternatives, and explicit severity.
|
|
74
|
-
|
|
75
|
-
## Prompt Upgrade Heuristics
|
|
76
|
-
|
|
77
|
-
- Add missing blocks only when they materially improve execution.
|
|
78
|
-
- Do not turn a one-line request into a giant spec unless the task is genuinely complex.
|
|
79
|
-
- Preserve user language where possible so the upgraded prompt still feels native.
|
|
80
|
-
- Prefer concrete completion criteria over vague quality adjectives.
|
|
81
|
-
|
|
82
|
-
## Upgrade Rubric
|
|
83
|
-
|
|
84
|
-
An upgraded prompt is good when it:
|
|
85
|
-
|
|
86
|
-
1. preserves original intent
|
|
87
|
-
2. reduces ambiguity
|
|
88
|
-
3. sets the right depth and care level
|
|
89
|
-
4. defines the expected output clearly
|
|
90
|
-
5. includes an appropriate verification step
|
|
91
|
-
6. tells the agent when to stop
|
|
@@ -1,157 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env python3
|
|
2
|
-
"""Automated prompt upgrader using the Prompt Leverage Framework."""
|
|
3
|
-
|
|
4
|
-
from __future__ import annotations
|
|
5
|
-
|
|
6
|
-
import argparse
|
|
7
|
-
import re
|
|
8
|
-
from textwrap import dedent
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
TASK_KEYWORDS = {
|
|
12
|
-
"coding": [
|
|
13
|
-
"code",
|
|
14
|
-
"bug",
|
|
15
|
-
"repo",
|
|
16
|
-
"refactor",
|
|
17
|
-
"test",
|
|
18
|
-
"implement",
|
|
19
|
-
"fix",
|
|
20
|
-
"function",
|
|
21
|
-
"api",
|
|
22
|
-
],
|
|
23
|
-
"research": [
|
|
24
|
-
"research",
|
|
25
|
-
"compare",
|
|
26
|
-
"find",
|
|
27
|
-
"latest",
|
|
28
|
-
"sources",
|
|
29
|
-
"analyze market",
|
|
30
|
-
"look up",
|
|
31
|
-
],
|
|
32
|
-
"writing": ["write", "rewrite", "draft", "email", "memo", "blog", "copy", "tone"],
|
|
33
|
-
"review": ["review", "audit", "critique", "inspect", "evaluate", "assess"],
|
|
34
|
-
"planning": ["plan", "roadmap", "strategy", "framework", "outline"],
|
|
35
|
-
"analysis": ["analyze", "explain", "break down", "diagnose", "root cause"],
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
def detect_task(prompt: str) -> str:
|
|
40
|
-
"""Detect task type by keyword matching."""
|
|
41
|
-
lowered = prompt.lower()
|
|
42
|
-
scores = {
|
|
43
|
-
task: sum(1 for keyword in keywords if keyword in lowered)
|
|
44
|
-
for task, keywords in TASK_KEYWORDS.items()
|
|
45
|
-
}
|
|
46
|
-
best_task, best_score = max(scores.items(), key=lambda item: item[1])
|
|
47
|
-
return best_task if best_score > 0 else "analysis"
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
def infer_intensity(prompt: str, task: str) -> str:
|
|
51
|
-
"""Infer intensity level from prompt content."""
|
|
52
|
-
lowered = prompt.lower()
|
|
53
|
-
if any(
|
|
54
|
-
token in lowered
|
|
55
|
-
for token in [
|
|
56
|
-
"careful",
|
|
57
|
-
"deep",
|
|
58
|
-
"thorough",
|
|
59
|
-
"high stakes",
|
|
60
|
-
"production",
|
|
61
|
-
"critical",
|
|
62
|
-
]
|
|
63
|
-
):
|
|
64
|
-
return "Deep"
|
|
65
|
-
if task in {"coding", "research", "review"}:
|
|
66
|
-
return "Standard"
|
|
67
|
-
return "Light"
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
def build_tool_rules(task: str) -> str:
|
|
71
|
-
"""Build task-specific tool rules."""
|
|
72
|
-
rules = {
|
|
73
|
-
"coding": "Inspect the relevant files and dependencies first. Validate the final change with the narrowest useful checks before broadening scope.",
|
|
74
|
-
"research": "Retrieve evidence from reliable sources before concluding. Do not guess facts that can be checked.",
|
|
75
|
-
"review": "Read enough surrounding context to understand intent before critiquing. Distinguish confirmed issues from plausible risks.",
|
|
76
|
-
}
|
|
77
|
-
return rules.get(
|
|
78
|
-
task,
|
|
79
|
-
"Use tools or extra context only when they materially improve correctness or completeness.",
|
|
80
|
-
)
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
def build_output_contract(task: str) -> str:
|
|
84
|
-
"""Build task-specific output contract."""
|
|
85
|
-
contracts = {
|
|
86
|
-
"coding": "Return the result in a practical execution format: concise summary, concrete changes or code, validation notes, and any remaining risks.",
|
|
87
|
-
"research": "Return a structured synthesis with key findings, supporting evidence, uncertainty where relevant, and a concise bottom line.",
|
|
88
|
-
"writing": "Return polished final copy in the requested tone and format. If useful, include a short rationale for major editorial choices.",
|
|
89
|
-
"review": "Return findings grouped by severity or importance, explain why each matters, and suggest the smallest credible next step.",
|
|
90
|
-
}
|
|
91
|
-
return contracts.get(
|
|
92
|
-
task,
|
|
93
|
-
"Return a clear, well-structured response matched to the task, with no unnecessary verbosity.",
|
|
94
|
-
)
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
def upgrade_prompt(raw_prompt: str, task: str | None) -> str:
|
|
98
|
-
"""Upgrade a raw prompt using the framework."""
|
|
99
|
-
normalized = re.sub(r"\s+", " ", raw_prompt).strip()
|
|
100
|
-
detected_task = task or detect_task(normalized)
|
|
101
|
-
intensity = infer_intensity(normalized, detected_task)
|
|
102
|
-
tool_rules = build_tool_rules(detected_task)
|
|
103
|
-
output_contract = build_output_contract(detected_task)
|
|
104
|
-
|
|
105
|
-
return dedent(
|
|
106
|
-
f"""
|
|
107
|
-
Objective:
|
|
108
|
-
- Complete this task: {normalized}
|
|
109
|
-
- Optimize for a correct, useful result rather than a merely plausible one.
|
|
110
|
-
|
|
111
|
-
Context:
|
|
112
|
-
- Preserve the user's original intent and constraints.
|
|
113
|
-
- Surface any key assumptions if required information is missing.
|
|
114
|
-
|
|
115
|
-
Work Style:
|
|
116
|
-
- Task type: {detected_task}
|
|
117
|
-
- Effort level: {intensity}
|
|
118
|
-
- Understand the problem broadly enough to avoid narrow mistakes, then go deep where the risk or complexity is highest.
|
|
119
|
-
- Use first-principles reasoning before proposing changes.
|
|
120
|
-
- For non-trivial work, review the result once with fresh eyes before finalizing.
|
|
121
|
-
|
|
122
|
-
Tool Rules:
|
|
123
|
-
- {tool_rules}
|
|
124
|
-
|
|
125
|
-
Output Contract:
|
|
126
|
-
- {output_contract}
|
|
127
|
-
|
|
128
|
-
Verification:
|
|
129
|
-
- Check correctness, completeness, and edge cases.
|
|
130
|
-
- Improve obvious weaknesses if a better approach is available within scope.
|
|
131
|
-
|
|
132
|
-
Done Criteria:
|
|
133
|
-
- Stop only when the response satisfies the task, matches the requested format, and passes the verification step.
|
|
134
|
-
"""
|
|
135
|
-
).strip()
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
def parse_args() -> argparse.Namespace:
|
|
139
|
-
parser = argparse.ArgumentParser(
|
|
140
|
-
description="Upgrade a raw prompt into a framework-backed execution prompt."
|
|
141
|
-
)
|
|
142
|
-
parser.add_argument("prompt", help="Raw prompt text to upgrade.")
|
|
143
|
-
parser.add_argument(
|
|
144
|
-
"--task",
|
|
145
|
-
choices=sorted(TASK_KEYWORDS.keys()),
|
|
146
|
-
help="Optional explicit task type (auto-detected if not provided).",
|
|
147
|
-
)
|
|
148
|
-
return parser.parse_args()
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
def main() -> None:
|
|
152
|
-
args = parse_args()
|
|
153
|
-
print(upgrade_prompt(args.prompt, args.task))
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
if __name__ == "__main__":
|
|
157
|
-
main()
|
|
@@ -1,263 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: receiving-code-review
|
|
3
|
-
description: Use when receiving code review feedback, before implementing suggestions, especially if feedback seems unclear or technically questionable - requires technical rigor and verification, not performative agreement or blind implementation
|
|
4
|
-
version: 1.0.0
|
|
5
|
-
tags: [workflow, code-quality]
|
|
6
|
-
dependencies: []
|
|
7
|
-
---
|
|
8
|
-
|
|
9
|
-
# Code Review Reception
|
|
10
|
-
|
|
11
|
-
> **Replaces** blind agreement with reviewer suggestions — requires technical verification and understanding before implementing any feedback
|
|
12
|
-
|
|
13
|
-
## When to Use
|
|
14
|
-
|
|
15
|
-
- You received review feedback and need to evaluate it before implementing
|
|
16
|
-
- Feedback seems unclear, questionable, or potentially wrong for this codebase
|
|
17
|
-
|
|
18
|
-
## When NOT to Use
|
|
19
|
-
|
|
20
|
-
- You already verified and accepted the feedback and are ready to implement
|
|
21
|
-
- You need to request a review (use requesting-code-review)
|
|
22
|
-
|
|
23
|
-
## Common Rationalizations
|
|
24
|
-
|
|
25
|
-
| Rationalization | Rebuttal |
|
|
26
|
-
| ------------------------------------------------- | -------------------------------------------------------------------------------------- |
|
|
27
|
-
| "The reviewer is experienced, they must be right" | Experience doesn't mean they have YOUR codebase context. Verify against reality |
|
|
28
|
-
| "It's faster to just implement it than to verify" | A wrong implementation costs more than the 2 minutes to check |
|
|
29
|
-
| "Pushing back will create conflict" | Technical correctness > social comfort. Shipping wrong code creates bigger conflict |
|
|
30
|
-
| "I'll fix it and verify later" | "Later" means after the wrong change is merged and depended upon |
|
|
31
|
-
| "The suggestion is small, no need to verify" | Small changes break things too. One wrong import can crash a module |
|
|
32
|
-
| "I understood the feedback, no need to restate" | Restating catches misunderstandings BEFORE you waste time implementing the wrong thing |
|
|
33
|
-
|
|
34
|
-
## Overview
|
|
35
|
-
|
|
36
|
-
Code review requires technical evaluation, not emotional performance.
|
|
37
|
-
|
|
38
|
-
**Core principle:** Verify before implementing. Ask before assuming. Technical correctness over social comfort.
|
|
39
|
-
|
|
40
|
-
## The Response Pattern
|
|
41
|
-
|
|
42
|
-
```
|
|
43
|
-
WHEN receiving code review feedback:
|
|
44
|
-
|
|
45
|
-
1. READ: Complete feedback without reacting
|
|
46
|
-
2. UNDERSTAND: Restate requirement in own words (or ask)
|
|
47
|
-
3. VERIFY: Check against codebase reality
|
|
48
|
-
4. EVALUATE: Technically sound for THIS codebase?
|
|
49
|
-
5. RESPOND: Technical acknowledgment or reasoned pushback
|
|
50
|
-
6. IMPLEMENT: One item at a time, test each
|
|
51
|
-
```
|
|
52
|
-
|
|
53
|
-
## Review Intake Checklist
|
|
54
|
-
|
|
55
|
-
- [ ] Read the full feedback without reacting
|
|
56
|
-
- [ ] Restate requirements in your own words
|
|
57
|
-
- [ ] Verify against codebase reality
|
|
58
|
-
- [ ] Evaluate technical correctness for this stack
|
|
59
|
-
- [ ] Respond with acknowledgment or reasoned pushback
|
|
60
|
-
- [ ] Implement one item at a time with tests
|
|
61
|
-
|
|
62
|
-
## Forbidden Responses
|
|
63
|
-
|
|
64
|
-
**NEVER:**
|
|
65
|
-
|
|
66
|
-
- "You're absolutely right!" (explicit CLAUDE.md violation)
|
|
67
|
-
- "Great point!" / "Excellent feedback!" (performative)
|
|
68
|
-
- "Let me implement that now" (before verification)
|
|
69
|
-
|
|
70
|
-
**INSTEAD:**
|
|
71
|
-
|
|
72
|
-
- Restate the technical requirement
|
|
73
|
-
- Ask clarifying questions
|
|
74
|
-
- Push back with technical reasoning if wrong
|
|
75
|
-
- Just start working (actions > words)
|
|
76
|
-
|
|
77
|
-
## Handling Unclear Feedback
|
|
78
|
-
|
|
79
|
-
```
|
|
80
|
-
IF any item is unclear:
|
|
81
|
-
STOP - do not implement anything yet
|
|
82
|
-
ASK for clarification on unclear items
|
|
83
|
-
|
|
84
|
-
WHY: Items may be related. Partial understanding = wrong implementation.
|
|
85
|
-
```
|
|
86
|
-
|
|
87
|
-
**Example:**
|
|
88
|
-
|
|
89
|
-
```
|
|
90
|
-
your human partner: "Fix 1-6"
|
|
91
|
-
You understand 1,2,3,6. Unclear on 4,5.
|
|
92
|
-
|
|
93
|
-
❌ WRONG: Implement 1,2,3,6 now, ask about 4,5 later
|
|
94
|
-
✅ RIGHT: "I understand items 1,2,3,6. Need clarification on 4 and 5 before proceeding."
|
|
95
|
-
```
|
|
96
|
-
|
|
97
|
-
## Source-Specific Handling
|
|
98
|
-
|
|
99
|
-
### From your human partner
|
|
100
|
-
|
|
101
|
-
- **Trusted** - implement after understanding
|
|
102
|
-
- **Still ask** if scope unclear
|
|
103
|
-
- **No performative agreement**
|
|
104
|
-
- **Skip to action** or technical acknowledgment
|
|
105
|
-
|
|
106
|
-
### From External Reviewers
|
|
107
|
-
|
|
108
|
-
```
|
|
109
|
-
BEFORE implementing:
|
|
110
|
-
1. Check: Technically correct for THIS codebase?
|
|
111
|
-
2. Check: Breaks existing functionality?
|
|
112
|
-
3. Check: Reason for current implementation?
|
|
113
|
-
4. Check: Works on all platforms/versions?
|
|
114
|
-
5. Check: Does reviewer understand full context?
|
|
115
|
-
|
|
116
|
-
IF suggestion seems wrong:
|
|
117
|
-
Push back with technical reasoning
|
|
118
|
-
|
|
119
|
-
IF can't easily verify:
|
|
120
|
-
Say so: "I can't verify this without [X]. Should I [investigate/ask/proceed]?"
|
|
121
|
-
|
|
122
|
-
IF conflicts with your human partner's prior decisions:
|
|
123
|
-
Stop and discuss with your human partner first
|
|
124
|
-
```
|
|
125
|
-
|
|
126
|
-
**your human partner's rule:** "External feedback - be skeptical, but check carefully"
|
|
127
|
-
|
|
128
|
-
## YAGNI Check for "Professional" Features
|
|
129
|
-
|
|
130
|
-
```
|
|
131
|
-
IF reviewer suggests "implementing properly":
|
|
132
|
-
grep codebase for actual usage
|
|
133
|
-
|
|
134
|
-
IF unused: "This endpoint isn't called. Remove it (YAGNI)?"
|
|
135
|
-
IF used: Then implement properly
|
|
136
|
-
```
|
|
137
|
-
|
|
138
|
-
**your human partner's rule:** "You and reviewer both report to me. If we don't need this feature, don't add it."
|
|
139
|
-
|
|
140
|
-
## Implementation Order
|
|
141
|
-
|
|
142
|
-
```
|
|
143
|
-
FOR multi-item feedback:
|
|
144
|
-
1. Clarify anything unclear FIRST
|
|
145
|
-
2. Then implement in this order:
|
|
146
|
-
- Blocking issues (breaks, security)
|
|
147
|
-
- Simple fixes (typos, imports)
|
|
148
|
-
- Complex fixes (refactoring, logic)
|
|
149
|
-
3. Test each fix individually
|
|
150
|
-
4. Verify no regressions
|
|
151
|
-
```
|
|
152
|
-
|
|
153
|
-
## When To Push Back
|
|
154
|
-
|
|
155
|
-
Push back when:
|
|
156
|
-
|
|
157
|
-
- Suggestion breaks existing functionality
|
|
158
|
-
- Reviewer lacks full context
|
|
159
|
-
- Violates YAGNI (unused feature)
|
|
160
|
-
- Technically incorrect for this stack
|
|
161
|
-
- Legacy/compatibility reasons exist
|
|
162
|
-
- Conflicts with your human partner's architectural decisions
|
|
163
|
-
|
|
164
|
-
**How to push back:**
|
|
165
|
-
|
|
166
|
-
- Use technical reasoning, not defensiveness
|
|
167
|
-
- Ask specific questions
|
|
168
|
-
- Reference working tests/code
|
|
169
|
-
- Involve your human partner if architectural
|
|
170
|
-
|
|
171
|
-
**Signal if uncomfortable pushing back out loud:** "Strange things are afoot at the Circle K"
|
|
172
|
-
|
|
173
|
-
## Acknowledging Correct Feedback
|
|
174
|
-
|
|
175
|
-
When feedback IS correct:
|
|
176
|
-
|
|
177
|
-
```
|
|
178
|
-
✅ "Fixed. [Brief description of what changed]"
|
|
179
|
-
✅ "Good catch - [specific issue]. Fixed in [location]."
|
|
180
|
-
✅ [Just fix it and show in the code]
|
|
181
|
-
|
|
182
|
-
❌ "You're absolutely right!"
|
|
183
|
-
❌ "Great point!"
|
|
184
|
-
❌ "Thanks for catching that!"
|
|
185
|
-
❌ "Thanks for [anything]"
|
|
186
|
-
❌ ANY gratitude expression
|
|
187
|
-
```
|
|
188
|
-
|
|
189
|
-
**Why no thanks:** Actions speak. Just fix it. The code itself shows you heard the feedback.
|
|
190
|
-
|
|
191
|
-
**If you catch yourself about to write "Thanks":** DELETE IT. State the fix instead.
|
|
192
|
-
|
|
193
|
-
## Gracefully Correcting Your Pushback
|
|
194
|
-
|
|
195
|
-
If you pushed back and were wrong:
|
|
196
|
-
|
|
197
|
-
```
|
|
198
|
-
✅ "You were right - I checked [X] and it does [Y]. Implementing now."
|
|
199
|
-
✅ "Verified this and you're correct. My initial understanding was wrong because [reason]. Fixing."
|
|
200
|
-
|
|
201
|
-
❌ Long apology
|
|
202
|
-
❌ Defending why you pushed back
|
|
203
|
-
❌ Over-explaining
|
|
204
|
-
```
|
|
205
|
-
|
|
206
|
-
State the correction factually and move on.
|
|
207
|
-
|
|
208
|
-
## Common Mistakes
|
|
209
|
-
|
|
210
|
-
| Mistake | Fix |
|
|
211
|
-
| ---------------------------- | ----------------------------------- |
|
|
212
|
-
| Performative agreement | State requirement or just act |
|
|
213
|
-
| Blind implementation | Verify against codebase first |
|
|
214
|
-
| Batch without testing | One at a time, test each |
|
|
215
|
-
| Assuming reviewer is right | Check if breaks things |
|
|
216
|
-
| Avoiding pushback | Technical correctness > comfort |
|
|
217
|
-
| Partial implementation | Clarify all items first |
|
|
218
|
-
| Can't verify, proceed anyway | State limitation, ask for direction |
|
|
219
|
-
|
|
220
|
-
## Real Examples
|
|
221
|
-
|
|
222
|
-
**Performative Agreement (Bad):**
|
|
223
|
-
|
|
224
|
-
```
|
|
225
|
-
Reviewer: "Remove legacy code"
|
|
226
|
-
❌ "You're absolutely right! Let me remove that..."
|
|
227
|
-
```
|
|
228
|
-
|
|
229
|
-
**Technical Verification (Good):**
|
|
230
|
-
|
|
231
|
-
```
|
|
232
|
-
Reviewer: "Remove legacy code"
|
|
233
|
-
✅ "Checking... build target is 10.15+, this API needs 13+. Need legacy for backward compat. Current impl has wrong bundle ID - fix it or drop pre-13 support?"
|
|
234
|
-
```
|
|
235
|
-
|
|
236
|
-
**YAGNI (Good):**
|
|
237
|
-
|
|
238
|
-
```
|
|
239
|
-
Reviewer: "Implement proper metrics tracking with database, date filters, CSV export"
|
|
240
|
-
✅ "Grepped codebase - nothing calls this endpoint. Remove it (YAGNI)? Or is there usage I'm missing?"
|
|
241
|
-
```
|
|
242
|
-
|
|
243
|
-
**Unclear Item (Good):**
|
|
244
|
-
|
|
245
|
-
```
|
|
246
|
-
your human partner: "Fix items 1-6"
|
|
247
|
-
You understand 1,2,3,6. Unclear on 4,5.
|
|
248
|
-
✅ "Understand 1,2,3,6. Need clarification on 4 and 5 before implementing."
|
|
249
|
-
```
|
|
250
|
-
|
|
251
|
-
## The Bottom Line
|
|
252
|
-
|
|
253
|
-
**External feedback = suggestions to evaluate, not orders to follow.**
|
|
254
|
-
|
|
255
|
-
Verify. Question. Then implement.
|
|
256
|
-
|
|
257
|
-
No performative agreement. Technical rigor always.
|
|
258
|
-
|
|
259
|
-
## See Also
|
|
260
|
-
|
|
261
|
-
- **requesting-code-review** — the complementary skill for dispatching reviews
|
|
262
|
-
- **verification-before-completion** — verification after implementing review feedback
|
|
263
|
-
- **systematic-debugging** — when review feedback reveals a deeper issue
|
|
@@ -1,183 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: reconcile
|
|
3
|
-
description: >
|
|
4
|
-
Use when verifying implementation matches its specification — detects drift between PRD requirements
|
|
5
|
-
and actual code, identifies missing features, extra features, and diverged behavior. Load after /ship
|
|
6
|
-
or before closing a bead.
|
|
7
|
-
version: 1.0.0
|
|
8
|
-
tags: [workflow, verification, quality]
|
|
9
|
-
dependencies: [verification-before-completion]
|
|
10
|
-
---
|
|
11
|
-
|
|
12
|
-
# Reconcile — Spec↔Code Drift Detection
|
|
13
|
-
|
|
14
|
-
## When to Use
|
|
15
|
-
|
|
16
|
-
- After `/ship` completes all tasks, before closing the bead
|
|
17
|
-
- When you suspect implementation has drifted from the original spec
|
|
18
|
-
- During `/review-codebase` to check spec adherence
|
|
19
|
-
- Before creating a PR to verify completeness
|
|
20
|
-
|
|
21
|
-
## When NOT to Use
|
|
22
|
-
|
|
23
|
-
- During active implementation (wait until tasks are done)
|
|
24
|
-
- For code quality issues (use `requesting-code-review` instead)
|
|
25
|
-
- For structural config audits (use `/health` instead)
|
|
26
|
-
|
|
27
|
-
## Overview
|
|
28
|
-
|
|
29
|
-
Implementation drift is the silent killer of spec-driven development. Tasks can pass all verification gates while the overall feature drifts from its specification. This skill systematically compares PRD artifacts against code evidence.
|
|
30
|
-
|
|
31
|
-
## Reconciliation Process
|
|
32
|
-
|
|
33
|
-
### Step 1: Load Artifacts
|
|
34
|
-
|
|
35
|
-
```bash
|
|
36
|
-
# Read the PRD
|
|
37
|
-
cat .beads/artifacts/$BEAD_ID/prd.md
|
|
38
|
-
|
|
39
|
-
# Read the plan (if exists)
|
|
40
|
-
cat .beads/artifacts/$BEAD_ID/plan.md 2>/dev/null
|
|
41
|
-
|
|
42
|
-
# Determine comparison base (works with main, master, or any default branch)
|
|
43
|
-
BASE=$(git rev-parse origin/main 2>/dev/null || git rev-parse origin/master 2>/dev/null || git merge-base HEAD $(git rev-parse --abbrev-ref HEAD@{upstream} 2>/dev/null || echo HEAD~10))
|
|
44
|
-
|
|
45
|
-
# Get the actual diff
|
|
46
|
-
git diff $BASE --name-only
|
|
47
|
-
git diff $BASE --stat
|
|
48
|
-
```
|
|
49
|
-
|
|
50
|
-
### Step 2: Extract Spec Claims
|
|
51
|
-
|
|
52
|
-
From the PRD, extract these verifiable claims:
|
|
53
|
-
|
|
54
|
-
| Claim Type | Source Section | Example |
|
|
55
|
-
| --------------------------- | --------------------------------------- | ----------------------------------- |
|
|
56
|
-
| **Success Criteria** | `## Success Criteria` | "User can see existing messages" |
|
|
57
|
-
| **Functional Requirements** | `## Requirements` | "WHEN user clicks X THEN Y happens" |
|
|
58
|
-
| **Affected Files** | `## Technical Context > Affected Files` | `src/api/users.ts` |
|
|
59
|
-
| **Scope Boundaries** | `## Scope` | "In-scope: X, Out-of-scope: Y" |
|
|
60
|
-
| **Task Deliverables** | `## Tasks` | Each task's end-state description |
|
|
61
|
-
|
|
62
|
-
### Step 3: Verify Each Claim
|
|
63
|
-
|
|
64
|
-
For each extracted claim, gather evidence:
|
|
65
|
-
|
|
66
|
-
#### Success Criteria Verification
|
|
67
|
-
|
|
68
|
-
```bash
|
|
69
|
-
# For each success criterion, find code evidence
|
|
70
|
-
# Example: "User can see existing messages"
|
|
71
|
-
grep -r "messages" src/ --include="*.ts" --include="*.tsx" -l
|
|
72
|
-
grep -r "fetchMessages\|getMessages\|listMessages" src/ -l
|
|
73
|
-
```
|
|
74
|
-
|
|
75
|
-
Map each criterion to:
|
|
76
|
-
|
|
77
|
-
- **VERIFIED**: Code evidence confirms the criterion is met
|
|
78
|
-
- **PARTIAL**: Some evidence exists but incomplete
|
|
79
|
-
- **MISSING**: No code evidence found
|
|
80
|
-
- **UNTESTABLE**: Cannot be verified via code search (needs manual check)
|
|
81
|
-
|
|
82
|
-
#### Affected Files Verification
|
|
83
|
-
|
|
84
|
-
```bash
|
|
85
|
-
# Compare PRD affected files vs actual changed files
|
|
86
|
-
# PRD claims these files would be modified:
|
|
87
|
-
PRD_FILES=$(grep -A 50 "Affected Files" .beads/artifacts/$BEAD_ID/prd.md | grep "src/" | sed 's/.*`//' | sed 's/`.*//')
|
|
88
|
-
|
|
89
|
-
# Actually modified files:
|
|
90
|
-
ACTUAL_FILES=$(git diff $BASE --name-only)
|
|
91
|
-
|
|
92
|
-
# Files in PRD but not modified (missing implementation):
|
|
93
|
-
comm -23 <(echo "$PRD_FILES" | sort) <(echo "$ACTUAL_FILES" | sort)
|
|
94
|
-
|
|
95
|
-
# Files modified but not in PRD (scope creep):
|
|
96
|
-
comm -13 <(echo "$PRD_FILES" | sort) <(echo "$ACTUAL_FILES" | sort)
|
|
97
|
-
```
|
|
98
|
-
|
|
99
|
-
#### Scope Boundary Check
|
|
100
|
-
|
|
101
|
-
- **In-scope items**: Verify each has corresponding code changes
|
|
102
|
-
- **Out-of-scope items**: Verify NO code touches those areas (scope creep detection)
|
|
103
|
-
|
|
104
|
-
### Step 4: Detect Drift Patterns
|
|
105
|
-
|
|
106
|
-
| Drift Type | Detection Method | Severity |
|
|
107
|
-
| -------------------------- | ------------------------------------------------------ | -------- |
|
|
108
|
-
| **Missing Feature** | Success criterion with no code evidence | HIGH |
|
|
109
|
-
| **Partial Implementation** | Criterion partially met (stub, TODO) | HIGH |
|
|
110
|
-
| **Scope Creep** | Files modified that aren't in PRD affected files | MEDIUM |
|
|
111
|
-
| **Spec Rot** | PRD sections that contradict actual implementation | MEDIUM |
|
|
112
|
-
| **Over-Engineering** | Significant code not traceable to any PRD requirement | LOW |
|
|
113
|
-
| **Diverged Behavior** | Code does something different from WHEN/THEN scenarios | HIGH |
|
|
114
|
-
|
|
115
|
-
### Step 5: Calculate Drift Score
|
|
116
|
-
|
|
117
|
-
```
|
|
118
|
-
Drift Score Calculation:
|
|
119
|
-
- Total claims: [N]
|
|
120
|
-
- VERIFIED: [n] (×1.0)
|
|
121
|
-
- PARTIAL: [n] (×0.5)
|
|
122
|
-
- MISSING: [n] (×0.0)
|
|
123
|
-
- UNTESTABLE: [n] (excluded from calculation)
|
|
124
|
-
|
|
125
|
-
Adherence = (VERIFIED×1.0 + PARTIAL×0.5) / (Total - UNTESTABLE) × 100
|
|
126
|
-
|
|
127
|
-
Scope Creep = Extra files modified / Total files modified × 100
|
|
128
|
-
```
|
|
129
|
-
|
|
130
|
-
## Drift Report Format
|
|
131
|
-
|
|
132
|
-
```markdown
|
|
133
|
-
## Reconciliation Report: <bead-id>
|
|
134
|
-
|
|
135
|
-
**PRD:** `.beads/artifacts/<id>/prd.md`
|
|
136
|
-
**Branch:** `<branch-name>`
|
|
137
|
-
**Adherence Score:** [N]%
|
|
138
|
-
**Scope Creep:** [N]%
|
|
139
|
-
|
|
140
|
-
### Success Criteria
|
|
141
|
-
|
|
142
|
-
| # | Criterion | Status | Evidence |
|
|
143
|
-
| --- | ---------------- | ----------- | ------------------------------------------ |
|
|
144
|
-
| 1 | [criterion text] | ✅ VERIFIED | `src/file.ts:42` — [what confirms it] |
|
|
145
|
-
| 2 | [criterion text] | ⚠️ PARTIAL | `src/file.ts` exists but handler is a stub |
|
|
146
|
-
| 3 | [criterion text] | ❌ MISSING | No code evidence found |
|
|
147
|
-
|
|
148
|
-
### File Reconciliation
|
|
149
|
-
|
|
150
|
-
| Category | Files | Count |
|
|
151
|
-
| --------------------------- | -------------------------- | ----- |
|
|
152
|
-
| ✅ Expected & Modified | `src/api/users.ts`, ... | [N] |
|
|
153
|
-
| ❌ Expected but Untouched | `src/models/user.ts`, ... | [N] |
|
|
154
|
-
| ⚠️ Unexpected Modifications | `src/utils/helper.ts`, ... | [N] |
|
|
155
|
-
|
|
156
|
-
### Drift Issues
|
|
157
|
-
|
|
158
|
-
| # | Type | Severity | Description | Recommendation |
|
|
159
|
-
| --- | --------------- | -------- | ---------------- | -------------------------------------------------------------- |
|
|
160
|
-
| 1 | Missing Feature | HIGH | [what's missing] | Implement or use `/iterate --scope reduce` to remove from spec |
|
|
161
|
-
| 2 | Scope Creep | MEDIUM | [what's extra] | Document in PRD or revert |
|
|
162
|
-
|
|
163
|
-
### Verdict
|
|
164
|
-
|
|
165
|
-
| Score | Meaning | Action |
|
|
166
|
-
| ----------- | -------------------- | ------------------------------------------------------ |
|
|
167
|
-
| **90-100%** | Excellent adherence | Ready to close |
|
|
168
|
-
| **70-89%** | Good with minor gaps | Fix gaps or document as intentional deviations |
|
|
169
|
-
| **50-69%** | Significant drift | Use `/iterate` to reconcile spec and code |
|
|
170
|
-
| **<50%** | Major drift | **BLOCK** — spec and code are fundamentally misaligned |
|
|
171
|
-
```
|
|
172
|
-
|
|
173
|
-
## Integration Points
|
|
174
|
-
|
|
175
|
-
- **`/ship` Phase 5**: Run reconcile after review, before close decision
|
|
176
|
-
- **`/compound`**: Include adherence score in retrospective observations
|
|
177
|
-
- **`/pr`**: Include drift report in PR description
|
|
178
|
-
|
|
179
|
-
## Gotchas
|
|
180
|
-
|
|
181
|
-
- Some criteria genuinely can't be verified by code search (UI behavior, UX feel) — mark as UNTESTABLE, don't count against score
|
|
182
|
-
- Scope creep isn't always bad — sometimes good engineering requires touching adjacent files. Flag it, don't auto-block.
|
|
183
|
-
- Run AFTER phantom completion detection — reconcile assumes code is substantive, not stubs
|