aiwcli 0.10.2 → 0.11.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/run.js +1 -1
- package/dist/commands/clear.d.ts +11 -6
- package/dist/commands/clear.js +229 -381
- package/dist/commands/init/index.d.ts +1 -17
- package/dist/commands/init/index.js +22 -107
- package/dist/lib/gitignore-manager.d.ts +32 -0
- package/dist/lib/gitignore-manager.js +141 -2
- package/dist/lib/template-installer.d.ts +7 -12
- package/dist/lib/template-installer.js +69 -193
- package/dist/lib/template-settings-reconstructor.d.ts +35 -0
- package/dist/lib/template-settings-reconstructor.js +130 -0
- package/dist/templates/CLAUDE.md +8 -8
- package/dist/templates/_shared/.claude/commands/handoff-resume.md +64 -0
- package/dist/templates/_shared/.claude/commands/handoff.md +16 -10
- package/dist/templates/_shared/.claude/settings.json +7 -7
- package/dist/templates/_shared/hooks-ts/_utils/git-state.ts +2 -0
- package/dist/templates/_shared/hooks-ts/archive_plan.ts +159 -0
- package/dist/templates/_shared/hooks-ts/context_monitor.ts +147 -0
- package/dist/templates/_shared/hooks-ts/file-suggestion.ts +130 -0
- package/dist/templates/_shared/hooks-ts/pre_compact.ts +49 -0
- package/dist/templates/_shared/hooks-ts/session_end.ts +104 -0
- package/dist/templates/_shared/hooks-ts/session_start.ts +144 -0
- package/dist/templates/_shared/hooks-ts/task_create_capture.ts +48 -0
- package/dist/templates/_shared/hooks-ts/task_update_capture.ts +74 -0
- package/dist/templates/_shared/hooks-ts/user_prompt_submit.ts +83 -0
- package/dist/templates/_shared/lib-ts/CLAUDE.md +318 -0
- package/dist/templates/_shared/lib-ts/base/atomic-write.ts +138 -0
- package/dist/templates/_shared/lib-ts/base/constants.ts +306 -0
- package/dist/templates/_shared/lib-ts/base/git-state.ts +58 -0
- package/dist/templates/_shared/lib-ts/base/hook-utils.ts +439 -0
- package/dist/templates/_shared/lib-ts/base/inference.ts +252 -0
- package/dist/templates/_shared/lib-ts/base/logger.ts +250 -0
- package/dist/templates/_shared/lib-ts/base/state-io.ts +116 -0
- package/dist/templates/_shared/lib-ts/base/stop-words.ts +184 -0
- package/dist/templates/_shared/lib-ts/base/subprocess-utils.ts +162 -0
- package/dist/templates/_shared/lib-ts/base/utils.ts +184 -0
- package/dist/templates/_shared/lib-ts/context/context-formatter.ts +438 -0
- package/dist/templates/_shared/lib-ts/context/context-selector.ts +515 -0
- package/dist/templates/_shared/lib-ts/context/context-store.ts +707 -0
- package/dist/templates/_shared/lib-ts/context/plan-manager.ts +316 -0
- package/dist/templates/_shared/lib-ts/context/task-tracker.ts +185 -0
- package/dist/templates/_shared/lib-ts/handoff/document-generator.ts +216 -0
- package/dist/templates/_shared/lib-ts/handoff/handoff-reader.ts +159 -0
- package/dist/templates/_shared/lib-ts/package.json +21 -0
- package/dist/templates/_shared/lib-ts/templates/formatters.ts +104 -0
- package/dist/templates/_shared/{lib/templates/plan_context.py → lib-ts/templates/plan-context.ts} +14 -22
- package/dist/templates/_shared/lib-ts/tsconfig.json +13 -0
- package/dist/templates/_shared/lib-ts/types.ts +164 -0
- package/dist/templates/_shared/scripts/resolve_context.ts +24 -0
- package/dist/templates/_shared/scripts/resume_handoff.ts +321 -0
- package/dist/templates/_shared/scripts/save_handoff.ts +359 -0
- package/dist/templates/_shared/scripts/status_line.ts +733 -0
- package/dist/templates/cc-native/.claude/settings.json +175 -185
- package/dist/templates/cc-native/TEMPLATE-SCHEMA.md +15 -17
- package/dist/templates/cc-native/_cc-native/agents/ARCH-EVOLUTION.md +63 -0
- package/dist/templates/cc-native/_cc-native/agents/ARCH-PATTERNS.md +62 -0
- package/dist/templates/cc-native/_cc-native/agents/ARCH-STRUCTURE.md +63 -0
- package/dist/templates/cc-native/_cc-native/agents/{ASSUMPTION-CHAIN-TRACER.md → ASSUMPTION-TRACER.md} +6 -10
- package/dist/templates/cc-native/_cc-native/agents/CLARITY-AUDITOR.md +6 -10
- package/dist/templates/cc-native/_cc-native/agents/CLAUDE.md +74 -3
- package/dist/templates/cc-native/_cc-native/agents/COMPLETENESS-FEASIBILITY.md +67 -0
- package/dist/templates/cc-native/_cc-native/agents/COMPLETENESS-GAPS.md +71 -0
- package/dist/templates/cc-native/_cc-native/agents/COMPLETENESS-ORDERING.md +63 -0
- package/dist/templates/cc-native/_cc-native/agents/CONSTRAINT-VALIDATOR.md +73 -0
- package/dist/templates/cc-native/_cc-native/agents/DESIGN-ADR-VALIDATOR.md +62 -0
- package/dist/templates/cc-native/_cc-native/agents/DESIGN-SCALE-MATCHER.md +65 -0
- package/dist/templates/cc-native/_cc-native/agents/DEVILS-ADVOCATE.md +6 -9
- package/dist/templates/cc-native/_cc-native/agents/DOCUMENTATION-PHILOSOPHY.md +87 -0
- package/dist/templates/cc-native/_cc-native/agents/HANDOFF-READINESS.md +5 -9
- package/dist/templates/cc-native/_cc-native/agents/{HIDDEN-COMPLEXITY-DETECTOR.md → HIDDEN-COMPLEXITY.md} +6 -10
- package/dist/templates/cc-native/_cc-native/agents/INCREMENTAL-DELIVERY.md +67 -0
- package/dist/templates/cc-native/_cc-native/agents/PLAN-ORCHESTRATOR.md +91 -18
- package/dist/templates/cc-native/_cc-native/agents/RISK-DEPENDENCY.md +63 -0
- package/dist/templates/cc-native/_cc-native/agents/RISK-FMEA.md +67 -0
- package/dist/templates/cc-native/_cc-native/agents/RISK-PREMORTEM.md +72 -0
- package/dist/templates/cc-native/_cc-native/agents/RISK-REVERSIBILITY.md +75 -0
- package/dist/templates/cc-native/_cc-native/agents/SCOPE-BOUNDARY.md +78 -0
- package/dist/templates/cc-native/_cc-native/agents/SIMPLICITY-GUARDIAN.md +5 -9
- package/dist/templates/cc-native/_cc-native/agents/SKEPTIC.md +16 -12
- package/dist/templates/cc-native/_cc-native/agents/TESTDRIVEN-BEHAVIOR-AUDITOR.md +62 -0
- package/dist/templates/cc-native/_cc-native/agents/TESTDRIVEN-CHARACTERIZATION.md +72 -0
- package/dist/templates/cc-native/_cc-native/agents/TESTDRIVEN-FIRST-VALIDATOR.md +62 -0
- package/dist/templates/cc-native/_cc-native/agents/TESTDRIVEN-PYRAMID-ANALYZER.md +62 -0
- package/dist/templates/cc-native/_cc-native/agents/TRADEOFF-COSTS.md +68 -0
- package/dist/templates/cc-native/_cc-native/agents/TRADEOFF-STAKEHOLDERS.md +66 -0
- package/dist/templates/cc-native/_cc-native/agents/VERIFY-COVERAGE.md +75 -0
- package/dist/templates/cc-native/_cc-native/agents/VERIFY-STRENGTH.md +70 -0
- package/dist/templates/cc-native/_cc-native/hooks/CLAUDE.md +109 -135
- package/dist/templates/cc-native/_cc-native/hooks/add_plan_context.ts +119 -0
- package/dist/templates/cc-native/_cc-native/hooks/cc-native-plan-review.ts +921 -0
- package/dist/templates/cc-native/_cc-native/hooks/plan_questions_early.ts +61 -0
- package/dist/templates/cc-native/_cc-native/lib-ts/aggregate-agents.ts +157 -0
- package/dist/templates/cc-native/_cc-native/lib-ts/artifacts.ts +709 -0
- package/dist/templates/cc-native/_cc-native/lib-ts/cc-native-state.ts +199 -0
- package/dist/templates/cc-native/_cc-native/lib-ts/cli-output-parser.ts +124 -0
- package/dist/templates/cc-native/_cc-native/lib-ts/config.ts +57 -0
- package/dist/templates/cc-native/_cc-native/lib-ts/constants.ts +83 -0
- package/dist/templates/cc-native/_cc-native/lib-ts/debug.ts +80 -0
- package/dist/templates/cc-native/_cc-native/lib-ts/index.ts +119 -0
- package/dist/templates/cc-native/_cc-native/lib-ts/json-parser.ts +162 -0
- package/dist/templates/cc-native/_cc-native/lib-ts/nul +3 -0
- package/dist/templates/cc-native/_cc-native/lib-ts/orchestrator.ts +249 -0
- package/dist/templates/cc-native/_cc-native/lib-ts/reviewers/agent.ts +155 -0
- package/dist/templates/cc-native/_cc-native/lib-ts/reviewers/codex.ts +130 -0
- package/dist/templates/cc-native/_cc-native/lib-ts/reviewers/gemini.ts +106 -0
- package/dist/templates/cc-native/_cc-native/lib-ts/reviewers/index.ts +10 -0
- package/dist/templates/cc-native/_cc-native/lib-ts/reviewers/types.ts +23 -0
- package/dist/templates/cc-native/_cc-native/lib-ts/state.ts +243 -0
- package/dist/templates/cc-native/_cc-native/lib-ts/tsconfig.json +18 -0
- package/dist/templates/cc-native/_cc-native/lib-ts/types.ts +310 -0
- package/dist/templates/cc-native/_cc-native/lib-ts/verdict.ts +72 -0
- package/dist/templates/cc-native/_cc-native/plan-review.config.json +12 -16
- package/oclif.manifest.json +1 -1
- package/package.json +1 -1
- package/dist/lib/template-merger.d.ts +0 -47
- package/dist/lib/template-merger.js +0 -162
- package/dist/templates/_shared/hooks/__init__.py +0 -16
- package/dist/templates/_shared/hooks/__pycache__/__init__.cpython-313.pyc +0 -0
- package/dist/templates/_shared/hooks/__pycache__/archive_plan.cpython-313.pyc +0 -0
- package/dist/templates/_shared/hooks/__pycache__/context_enforcer.cpython-313.pyc +0 -0
- package/dist/templates/_shared/hooks/__pycache__/context_monitor.cpython-313.pyc +0 -0
- package/dist/templates/_shared/hooks/__pycache__/file-suggestion.cpython-313.pyc +0 -0
- package/dist/templates/_shared/hooks/__pycache__/pre_compact.cpython-313.pyc +0 -0
- package/dist/templates/_shared/hooks/__pycache__/session_end.cpython-313.pyc +0 -0
- package/dist/templates/_shared/hooks/__pycache__/session_start.cpython-313.pyc +0 -0
- package/dist/templates/_shared/hooks/__pycache__/task_create_atomicity.cpython-313.pyc +0 -0
- package/dist/templates/_shared/hooks/__pycache__/task_create_capture.cpython-313.pyc +0 -0
- package/dist/templates/_shared/hooks/__pycache__/task_update_capture.cpython-313.pyc +0 -0
- package/dist/templates/_shared/hooks/__pycache__/user_prompt_submit.cpython-313.pyc +0 -0
- package/dist/templates/_shared/hooks/archive_plan.py +0 -169
- package/dist/templates/_shared/hooks/context_monitor.py +0 -270
- package/dist/templates/_shared/hooks/file-suggestion.py +0 -215
- package/dist/templates/_shared/hooks/pre_compact.py +0 -104
- package/dist/templates/_shared/hooks/session_end.py +0 -173
- package/dist/templates/_shared/hooks/session_start.py +0 -206
- package/dist/templates/_shared/hooks/task_create_capture.py +0 -108
- package/dist/templates/_shared/hooks/task_update_capture.py +0 -145
- package/dist/templates/_shared/hooks/user_prompt_submit.py +0 -139
- package/dist/templates/_shared/lib/__init__.py +0 -1
- package/dist/templates/_shared/lib/__pycache__/__init__.cpython-313.pyc +0 -0
- package/dist/templates/_shared/lib/base/__init__.py +0 -65
- package/dist/templates/_shared/lib/base/__pycache__/__init__.cpython-313.pyc +0 -0
- package/dist/templates/_shared/lib/base/__pycache__/atomic_write.cpython-313.pyc +0 -0
- package/dist/templates/_shared/lib/base/__pycache__/constants.cpython-313.pyc +0 -0
- package/dist/templates/_shared/lib/base/__pycache__/hook_utils.cpython-313.pyc +0 -0
- package/dist/templates/_shared/lib/base/__pycache__/inference.cpython-313.pyc +0 -0
- package/dist/templates/_shared/lib/base/__pycache__/logger.cpython-313.pyc +0 -0
- package/dist/templates/_shared/lib/base/__pycache__/stop_words.cpython-313.pyc +0 -0
- package/dist/templates/_shared/lib/base/__pycache__/subprocess_utils.cpython-313.pyc +0 -0
- package/dist/templates/_shared/lib/base/__pycache__/utils.cpython-313.pyc +0 -0
- package/dist/templates/_shared/lib/base/atomic_write.py +0 -180
- package/dist/templates/_shared/lib/base/constants.py +0 -358
- package/dist/templates/_shared/lib/base/hook_utils.py +0 -341
- package/dist/templates/_shared/lib/base/inference.py +0 -318
- package/dist/templates/_shared/lib/base/logger.py +0 -291
- package/dist/templates/_shared/lib/base/stop_words.py +0 -213
- package/dist/templates/_shared/lib/base/subprocess_utils.py +0 -46
- package/dist/templates/_shared/lib/base/utils.py +0 -242
- package/dist/templates/_shared/lib/context/__init__.py +0 -102
- package/dist/templates/_shared/lib/context/__pycache__/__init__.cpython-313.pyc +0 -0
- package/dist/templates/_shared/lib/context/__pycache__/cache.cpython-313.pyc +0 -0
- package/dist/templates/_shared/lib/context/__pycache__/context_extractor.cpython-313.pyc +0 -0
- package/dist/templates/_shared/lib/context/__pycache__/context_formatter.cpython-313.pyc +0 -0
- package/dist/templates/_shared/lib/context/__pycache__/context_manager.cpython-313.pyc +0 -0
- package/dist/templates/_shared/lib/context/__pycache__/context_selector.cpython-313.pyc +0 -0
- package/dist/templates/_shared/lib/context/__pycache__/context_store.cpython-313.pyc +0 -0
- package/dist/templates/_shared/lib/context/__pycache__/discovery.cpython-313.pyc +0 -0
- package/dist/templates/_shared/lib/context/__pycache__/event_log.cpython-313.pyc +0 -0
- package/dist/templates/_shared/lib/context/__pycache__/plan_archive.cpython-313.pyc +0 -0
- package/dist/templates/_shared/lib/context/__pycache__/plan_manager.cpython-313.pyc +0 -0
- package/dist/templates/_shared/lib/context/__pycache__/task_sync.cpython-313.pyc +0 -0
- package/dist/templates/_shared/lib/context/__pycache__/task_tracker.cpython-313.pyc +0 -0
- package/dist/templates/_shared/lib/context/context_formatter.py +0 -317
- package/dist/templates/_shared/lib/context/context_selector.py +0 -508
- package/dist/templates/_shared/lib/context/context_store.py +0 -653
- package/dist/templates/_shared/lib/context/plan_manager.py +0 -204
- package/dist/templates/_shared/lib/context/task_tracker.py +0 -188
- package/dist/templates/_shared/lib/handoff/__init__.py +0 -22
- package/dist/templates/_shared/lib/handoff/__pycache__/__init__.cpython-313.pyc +0 -0
- package/dist/templates/_shared/lib/handoff/__pycache__/document_generator.cpython-313.pyc +0 -0
- package/dist/templates/_shared/lib/handoff/document_generator.py +0 -278
- package/dist/templates/_shared/lib/templates/README.md +0 -206
- package/dist/templates/_shared/lib/templates/__init__.py +0 -36
- package/dist/templates/_shared/lib/templates/__pycache__/__init__.cpython-313.pyc +0 -0
- package/dist/templates/_shared/lib/templates/__pycache__/formatters.cpython-313.pyc +0 -0
- package/dist/templates/_shared/lib/templates/__pycache__/persona_questions.cpython-313.pyc +0 -0
- package/dist/templates/_shared/lib/templates/__pycache__/plan_context.cpython-313.pyc +0 -0
- package/dist/templates/_shared/lib/templates/formatters.py +0 -146
- package/dist/templates/_shared/scripts/__pycache__/save_handoff.cpython-313.pyc +0 -0
- package/dist/templates/_shared/scripts/__pycache__/status_line.cpython-313.pyc +0 -0
- package/dist/templates/_shared/scripts/save_handoff.py +0 -357
- package/dist/templates/_shared/scripts/status_line.py +0 -701
- package/dist/templates/cc-native/.claude/commands/cc-native/fresh-perspective.md +0 -8
- package/dist/templates/cc-native/.windsurf/workflows/cc-native/fresh-perspective.md +0 -8
- package/dist/templates/cc-native/MIGRATION.md +0 -86
- package/dist/templates/cc-native/_cc-native/agents/ACCESSIBILITY-TESTER.md +0 -79
- package/dist/templates/cc-native/_cc-native/agents/ARCHITECT-REVIEWER.md +0 -48
- package/dist/templates/cc-native/_cc-native/agents/CODE-REVIEWER.md +0 -70
- package/dist/templates/cc-native/_cc-native/agents/COMPLETENESS-CHECKER.md +0 -59
- package/dist/templates/cc-native/_cc-native/agents/CONTEXT-EXTRACTOR.md +0 -92
- package/dist/templates/cc-native/_cc-native/agents/DOCUMENTATION-REVIEWER.md +0 -51
- package/dist/templates/cc-native/_cc-native/agents/FEASIBILITY-ANALYST.md +0 -57
- package/dist/templates/cc-native/_cc-native/agents/FRESH-PERSPECTIVE.md +0 -54
- package/dist/templates/cc-native/_cc-native/agents/INCENTIVE-MAPPER.md +0 -61
- package/dist/templates/cc-native/_cc-native/agents/PENETRATION-TESTER.md +0 -79
- package/dist/templates/cc-native/_cc-native/agents/PERFORMANCE-ENGINEER.md +0 -75
- package/dist/templates/cc-native/_cc-native/agents/PRECEDENT-FINDER.md +0 -70
- package/dist/templates/cc-native/_cc-native/agents/REVERSIBILITY-ANALYST.md +0 -61
- package/dist/templates/cc-native/_cc-native/agents/RISK-ASSESSOR.md +0 -58
- package/dist/templates/cc-native/_cc-native/agents/SECOND-ORDER-ANALYST.md +0 -61
- package/dist/templates/cc-native/_cc-native/agents/STAKEHOLDER-ADVOCATE.md +0 -55
- package/dist/templates/cc-native/_cc-native/agents/TRADE-OFF-ILLUMINATOR.md +0 -204
- package/dist/templates/cc-native/_cc-native/hooks/__pycache__/add_plan_context.cpython-313.pyc +0 -0
- package/dist/templates/cc-native/_cc-native/hooks/__pycache__/cc-native-plan-review.cpython-313.pyc +0 -0
- package/dist/templates/cc-native/_cc-native/hooks/__pycache__/mark_questions_asked.cpython-313.pyc +0 -0
- package/dist/templates/cc-native/_cc-native/hooks/__pycache__/plan_accepted.cpython-313.pyc +0 -0
- package/dist/templates/cc-native/_cc-native/hooks/__pycache__/plan_questions_early.cpython-313.pyc +0 -0
- package/dist/templates/cc-native/_cc-native/hooks/__pycache__/suggest-fresh-perspective.cpython-313.pyc +0 -0
- package/dist/templates/cc-native/_cc-native/hooks/add_plan_context.py +0 -130
- package/dist/templates/cc-native/_cc-native/hooks/cc-native-plan-review.py +0 -869
- package/dist/templates/cc-native/_cc-native/hooks/plan_questions_early.py +0 -81
- package/dist/templates/cc-native/_cc-native/hooks/suggest-fresh-perspective.py +0 -340
- package/dist/templates/cc-native/_cc-native/lib/CLAUDE.md +0 -265
- package/dist/templates/cc-native/_cc-native/lib/__init__.py +0 -53
- package/dist/templates/cc-native/_cc-native/lib/__pycache__/__init__.cpython-313.pyc +0 -0
- package/dist/templates/cc-native/_cc-native/lib/__pycache__/atomic_write.cpython-313.pyc +0 -0
- package/dist/templates/cc-native/_cc-native/lib/__pycache__/constants.cpython-313.pyc +0 -0
- package/dist/templates/cc-native/_cc-native/lib/__pycache__/debug.cpython-313.pyc +0 -0
- package/dist/templates/cc-native/_cc-native/lib/__pycache__/orchestrator.cpython-313.pyc +0 -0
- package/dist/templates/cc-native/_cc-native/lib/__pycache__/state.cpython-313.pyc +0 -0
- package/dist/templates/cc-native/_cc-native/lib/__pycache__/utils.cpython-313.pyc +0 -0
- package/dist/templates/cc-native/_cc-native/lib/constants.py +0 -45
- package/dist/templates/cc-native/_cc-native/lib/debug.py +0 -139
- package/dist/templates/cc-native/_cc-native/lib/orchestrator.py +0 -362
- package/dist/templates/cc-native/_cc-native/lib/reviewers/__init__.py +0 -28
- package/dist/templates/cc-native/_cc-native/lib/reviewers/__pycache__/__init__.cpython-313.pyc +0 -0
- package/dist/templates/cc-native/_cc-native/lib/reviewers/__pycache__/agent.cpython-313.pyc +0 -0
- package/dist/templates/cc-native/_cc-native/lib/reviewers/__pycache__/base.cpython-313.pyc +0 -0
- package/dist/templates/cc-native/_cc-native/lib/reviewers/__pycache__/codex.cpython-313.pyc +0 -0
- package/dist/templates/cc-native/_cc-native/lib/reviewers/__pycache__/gemini.cpython-313.pyc +0 -0
- package/dist/templates/cc-native/_cc-native/lib/reviewers/agent.py +0 -215
- package/dist/templates/cc-native/_cc-native/lib/reviewers/base.py +0 -88
- package/dist/templates/cc-native/_cc-native/lib/reviewers/codex.py +0 -124
- package/dist/templates/cc-native/_cc-native/lib/reviewers/gemini.py +0 -108
- package/dist/templates/cc-native/_cc-native/lib/state.py +0 -268
- package/dist/templates/cc-native/_cc-native/lib/utils.py +0 -1027
- package/dist/templates/cc-native/_cc-native/scripts/__pycache__/aggregate_agents.cpython-313.pyc +0 -0
- package/dist/templates/cc-native/_cc-native/scripts/aggregate_agents.py +0 -168
- package/dist/templates/cc-native/_cc-native/workflows/fresh-perspective.md +0 -134
|
@@ -1,185 +1,175 @@
|
|
|
1
|
-
{
|
|
2
|
-
"statusLine": {
|
|
3
|
-
"type": "command",
|
|
4
|
-
"command": "
|
|
5
|
-
},
|
|
6
|
-
"permissions": {
|
|
7
|
-
"allow": [],
|
|
8
|
-
"deny": []
|
|
9
|
-
},
|
|
10
|
-
"env": {},
|
|
11
|
-
"enabledPlugins": {},
|
|
12
|
-
"fileSuggestion": {
|
|
13
|
-
"type": "command",
|
|
14
|
-
"command": "
|
|
15
|
-
},
|
|
16
|
-
"methods": {
|
|
17
|
-
"cc-native": {
|
|
18
|
-
"ides": [
|
|
19
|
-
"claude"
|
|
20
|
-
],
|
|
21
|
-
"installedAt": "2026-01-29T01:59:02.558Z"
|
|
22
|
-
}
|
|
23
|
-
},
|
|
24
|
-
"hooks": {
|
|
25
|
-
"SessionStart": [
|
|
26
|
-
{
|
|
27
|
-
"hooks": [
|
|
28
|
-
{
|
|
29
|
-
"type": "command",
|
|
30
|
-
"command": "
|
|
31
|
-
"timeout": 5000
|
|
32
|
-
}
|
|
33
|
-
]
|
|
34
|
-
}
|
|
35
|
-
],
|
|
36
|
-
"SessionEnd": [
|
|
37
|
-
{
|
|
38
|
-
"hooks": [
|
|
39
|
-
{
|
|
40
|
-
"type": "command",
|
|
41
|
-
"command": "
|
|
42
|
-
"timeout": 5000
|
|
43
|
-
}
|
|
44
|
-
]
|
|
45
|
-
}
|
|
46
|
-
],
|
|
47
|
-
"PreCompact": [
|
|
48
|
-
{
|
|
49
|
-
"hooks": [
|
|
50
|
-
{
|
|
51
|
-
"type": "command",
|
|
52
|
-
"command": "
|
|
53
|
-
"timeout": 5000
|
|
54
|
-
}
|
|
55
|
-
]
|
|
56
|
-
}
|
|
57
|
-
],
|
|
58
|
-
"UserPromptSubmit": [
|
|
59
|
-
{
|
|
60
|
-
"hooks": [
|
|
61
|
-
{
|
|
62
|
-
"type": "command",
|
|
63
|
-
"command": "
|
|
64
|
-
"timeout": 10000
|
|
65
|
-
}
|
|
66
|
-
]
|
|
67
|
-
},
|
|
68
|
-
{
|
|
69
|
-
"hooks": [
|
|
70
|
-
{
|
|
71
|
-
"type": "command",
|
|
72
|
-
"command": "
|
|
73
|
-
"timeout": 3000
|
|
74
|
-
}
|
|
75
|
-
]
|
|
76
|
-
}
|
|
77
|
-
],
|
|
78
|
-
"PostToolUse": [
|
|
79
|
-
{
|
|
80
|
-
"matcher": "*",
|
|
81
|
-
"hooks": [
|
|
82
|
-
{
|
|
83
|
-
"type": "command",
|
|
84
|
-
"command": "
|
|
85
|
-
"timeout": 5000
|
|
86
|
-
}
|
|
87
|
-
]
|
|
88
|
-
},
|
|
89
|
-
{
|
|
90
|
-
"matcher": "TaskCreate",
|
|
91
|
-
"hooks": [
|
|
92
|
-
{
|
|
93
|
-
"type": "command",
|
|
94
|
-
"command": "
|
|
95
|
-
"timeout": 3000,
|
|
96
|
-
"async": true
|
|
97
|
-
}
|
|
98
|
-
]
|
|
99
|
-
},
|
|
100
|
-
{
|
|
101
|
-
"matcher": "TaskUpdate",
|
|
102
|
-
"hooks": [
|
|
103
|
-
{
|
|
104
|
-
"type": "command",
|
|
105
|
-
"command": "
|
|
106
|
-
"timeout": 3000,
|
|
107
|
-
"async": true
|
|
108
|
-
}
|
|
109
|
-
]
|
|
110
|
-
},
|
|
111
|
-
{
|
|
112
|
-
"matcher": "
|
|
113
|
-
"hooks": [
|
|
114
|
-
{
|
|
115
|
-
"type": "command",
|
|
116
|
-
"command": "
|
|
117
|
-
"timeout":
|
|
118
|
-
}
|
|
119
|
-
]
|
|
120
|
-
}
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
"
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
"
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
"
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
"
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
"
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
"
|
|
159
|
-
"
|
|
160
|
-
}
|
|
161
|
-
]
|
|
162
|
-
},
|
|
163
|
-
{
|
|
164
|
-
"matcher": "
|
|
165
|
-
"hooks": [
|
|
166
|
-
{
|
|
167
|
-
"type": "command",
|
|
168
|
-
"command": "
|
|
169
|
-
"timeout":
|
|
170
|
-
}
|
|
171
|
-
]
|
|
172
|
-
}
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
{
|
|
177
|
-
"type": "command",
|
|
178
|
-
"command": "python .aiwcli/_cc-native/hooks/cc-native-plan-review.py",
|
|
179
|
-
"timeout": 600000
|
|
180
|
-
}
|
|
181
|
-
]
|
|
182
|
-
}
|
|
183
|
-
]
|
|
184
|
-
}
|
|
185
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"statusLine": {
|
|
3
|
+
"type": "command",
|
|
4
|
+
"command": "bun .aiwcli/_shared/scripts/status_line.ts"
|
|
5
|
+
},
|
|
6
|
+
"permissions": {
|
|
7
|
+
"allow": [],
|
|
8
|
+
"deny": []
|
|
9
|
+
},
|
|
10
|
+
"env": {},
|
|
11
|
+
"enabledPlugins": {},
|
|
12
|
+
"fileSuggestion": {
|
|
13
|
+
"type": "command",
|
|
14
|
+
"command": "bun .aiwcli/_shared/hooks-ts/file-suggestion.ts"
|
|
15
|
+
},
|
|
16
|
+
"methods": {
|
|
17
|
+
"cc-native": {
|
|
18
|
+
"ides": [
|
|
19
|
+
"claude"
|
|
20
|
+
],
|
|
21
|
+
"installedAt": "2026-01-29T01:59:02.558Z"
|
|
22
|
+
}
|
|
23
|
+
},
|
|
24
|
+
"hooks": {
|
|
25
|
+
"SessionStart": [
|
|
26
|
+
{
|
|
27
|
+
"hooks": [
|
|
28
|
+
{
|
|
29
|
+
"type": "command",
|
|
30
|
+
"command": "bun .aiwcli/_shared/hooks-ts/session_start.ts",
|
|
31
|
+
"timeout": 5000
|
|
32
|
+
}
|
|
33
|
+
]
|
|
34
|
+
}
|
|
35
|
+
],
|
|
36
|
+
"SessionEnd": [
|
|
37
|
+
{
|
|
38
|
+
"hooks": [
|
|
39
|
+
{
|
|
40
|
+
"type": "command",
|
|
41
|
+
"command": "bun .aiwcli/_shared/hooks-ts/session_end.ts",
|
|
42
|
+
"timeout": 5000
|
|
43
|
+
}
|
|
44
|
+
]
|
|
45
|
+
}
|
|
46
|
+
],
|
|
47
|
+
"PreCompact": [
|
|
48
|
+
{
|
|
49
|
+
"hooks": [
|
|
50
|
+
{
|
|
51
|
+
"type": "command",
|
|
52
|
+
"command": "bun .aiwcli/_shared/hooks-ts/pre_compact.ts",
|
|
53
|
+
"timeout": 5000
|
|
54
|
+
}
|
|
55
|
+
]
|
|
56
|
+
}
|
|
57
|
+
],
|
|
58
|
+
"UserPromptSubmit": [
|
|
59
|
+
{
|
|
60
|
+
"hooks": [
|
|
61
|
+
{
|
|
62
|
+
"type": "command",
|
|
63
|
+
"command": "bun .aiwcli/_shared/hooks-ts/user_prompt_submit.ts",
|
|
64
|
+
"timeout": 10000
|
|
65
|
+
}
|
|
66
|
+
]
|
|
67
|
+
},
|
|
68
|
+
{
|
|
69
|
+
"hooks": [
|
|
70
|
+
{
|
|
71
|
+
"type": "command",
|
|
72
|
+
"command": "bun .aiwcli/_cc-native/hooks/plan_questions_early.ts",
|
|
73
|
+
"timeout": 3000
|
|
74
|
+
}
|
|
75
|
+
]
|
|
76
|
+
}
|
|
77
|
+
],
|
|
78
|
+
"PostToolUse": [
|
|
79
|
+
{
|
|
80
|
+
"matcher": "*",
|
|
81
|
+
"hooks": [
|
|
82
|
+
{
|
|
83
|
+
"type": "command",
|
|
84
|
+
"command": "bun .aiwcli/_shared/hooks-ts/context_monitor.ts",
|
|
85
|
+
"timeout": 5000
|
|
86
|
+
}
|
|
87
|
+
]
|
|
88
|
+
},
|
|
89
|
+
{
|
|
90
|
+
"matcher": "TaskCreate",
|
|
91
|
+
"hooks": [
|
|
92
|
+
{
|
|
93
|
+
"type": "command",
|
|
94
|
+
"command": "bun .aiwcli/_shared/hooks-ts/task_create_capture.ts",
|
|
95
|
+
"timeout": 3000,
|
|
96
|
+
"async": true
|
|
97
|
+
}
|
|
98
|
+
]
|
|
99
|
+
},
|
|
100
|
+
{
|
|
101
|
+
"matcher": "TaskUpdate",
|
|
102
|
+
"hooks": [
|
|
103
|
+
{
|
|
104
|
+
"type": "command",
|
|
105
|
+
"command": "bun .aiwcli/_shared/hooks-ts/task_update_capture.ts",
|
|
106
|
+
"timeout": 3000,
|
|
107
|
+
"async": true
|
|
108
|
+
}
|
|
109
|
+
]
|
|
110
|
+
},
|
|
111
|
+
{
|
|
112
|
+
"matcher": "AskUserQuestion",
|
|
113
|
+
"hooks": [
|
|
114
|
+
{
|
|
115
|
+
"type": "command",
|
|
116
|
+
"command": "bun .aiwcli/_cc-native/hooks/add_plan_context.ts",
|
|
117
|
+
"timeout": 3000
|
|
118
|
+
}
|
|
119
|
+
]
|
|
120
|
+
}
|
|
121
|
+
],
|
|
122
|
+
"PermissionRequest": [
|
|
123
|
+
{
|
|
124
|
+
"matcher": "ExitPlanMode",
|
|
125
|
+
"hooks": [
|
|
126
|
+
{
|
|
127
|
+
"type": "command",
|
|
128
|
+
"command": "bun .aiwcli/_shared/hooks-ts/archive_plan.ts",
|
|
129
|
+
"timeout": 5000
|
|
130
|
+
}
|
|
131
|
+
]
|
|
132
|
+
}
|
|
133
|
+
],
|
|
134
|
+
"PreToolUse": [
|
|
135
|
+
{
|
|
136
|
+
"matcher": "^TaskCreate$",
|
|
137
|
+
"hooks": [
|
|
138
|
+
{
|
|
139
|
+
"type": "prompt",
|
|
140
|
+
"prompt": "Evaluate this TaskCreate call for atomicity. Tasks become ISC criteria checked during verification — vague criteria cannot be verified, so precision matters. A well-specified task includes: (1) Explicit file paths like 'src/lib/auth.py' instead of 'the file above' or 'as discussed', (2) Specific function or component names instead of pronouns like 'it' or 'the function', (3) Clear expected state or behavior that is binary-testable in 2 seconds, (4) Concrete scope — one concern per task, not compound goals. If all four criteria are met and an agent with zero conversation history could verify the task was completed, return ok:true. If any criterion is missing, return ok:false with a response like: 'Missing context: [list each gap — e.g., no file path specified for the auth module, expected behavior is vague: what does fix the bug mean specifically, compound task should be split into separate criteria]'. When returning ok:false, end your response with: 'Retry: Re-invoke TaskCreate with a revised subject and description that address the gaps above.' This directive ensures the calling agent corrects and retries rather than abandoning the task."
|
|
141
|
+
}
|
|
142
|
+
]
|
|
143
|
+
},
|
|
144
|
+
{
|
|
145
|
+
"matcher": "^Task$",
|
|
146
|
+
"hooks": [
|
|
147
|
+
{
|
|
148
|
+
"type": "prompt",
|
|
149
|
+
"prompt": "The sub-agent receives ONLY the prompt text — no conversation history, no prior context.\n\nCheck 1 — Dangling References: Does the prompt use pronouns or demonstratives that ONLY make sense with prior conversation? Violations: 'the file we looked at', 'as discussed above', 'that approach we chose', 'the error from earlier', 'fix the issue mentioned above'. NOT violations: relative paths ('_output/', 'src/lib/'), search terms ('context-manager', 'auth module'), directory exploration ('find files matching X'), tool names, or any concrete noun — even if imprecise. Only flag references that are truly UNRESOLVABLE without conversation history.\n\nCheck 2 — Implicit Contract: Does the prompt have ANY discernible goal? 'Explore the _output directory and find context files' IS a clear goal. 'Search for hooks that handle Task events' IS a clear goal. 'Read and summarize all files in X' IS a clear goal. Only flag if the prompt is truly goalless — e.g., a sentence fragment with no verb, or pure context with no request.\n\nIf both checks pass, return ok:true. When in doubt, pass — false negatives (letting a vague prompt through) are far less costly than false positives (blocking legitimate work).\n\nWhen returning ok:false, end your response with: 'Retry: Re-invoke the Task tool with a revised prompt that resolves the issues above.'"
|
|
150
|
+
}
|
|
151
|
+
]
|
|
152
|
+
},
|
|
153
|
+
{
|
|
154
|
+
"matcher": "^Task$",
|
|
155
|
+
"hooks": [
|
|
156
|
+
{
|
|
157
|
+
"type": "command",
|
|
158
|
+
"command": "bun .aiwcli/_cc-native/hooks/add_plan_context.ts",
|
|
159
|
+
"timeout": 5000
|
|
160
|
+
}
|
|
161
|
+
]
|
|
162
|
+
},
|
|
163
|
+
{
|
|
164
|
+
"matcher": "ExitPlanMode",
|
|
165
|
+
"hooks": [
|
|
166
|
+
{
|
|
167
|
+
"type": "command",
|
|
168
|
+
"command": "bun .aiwcli/_cc-native/hooks/cc-native-plan-review.ts",
|
|
169
|
+
"timeout": 600000
|
|
170
|
+
}
|
|
171
|
+
]
|
|
172
|
+
}
|
|
173
|
+
]
|
|
174
|
+
}
|
|
175
|
+
}
|
|
@@ -12,16 +12,15 @@ CC-Native uses Claude Code's native tools with minimal workflow overhead. Plan r
|
|
|
12
12
|
packages/cli/src/templates/cc-native/
|
|
13
13
|
├── _cc-native/ # METHOD-SPECIFIC: CC-Native template code
|
|
14
14
|
│ ├── workflows/*.md # Workflow definitions
|
|
15
|
-
│ ├── hooks/ # Hook scripts
|
|
16
|
-
│ │ ├── cc-native-plan-review.
|
|
17
|
-
│ │
|
|
18
|
-
│
|
|
19
|
-
│
|
|
20
|
-
│ │ ├──
|
|
21
|
-
│ │ ├──
|
|
22
|
-
│ │ └──
|
|
23
|
-
│
|
|
24
|
-
│ │ └── aggregate_agents.py # Auto-detect agents from frontmatter
|
|
15
|
+
│ ├── hooks/ # Hook scripts (TypeScript, run via bun)
|
|
16
|
+
│ │ ├── cc-native-plan-review.ts # Unified plan review (CLI + agents)
|
|
17
|
+
│ │ ├── add_plan_context.ts # Clarifying questions offer
|
|
18
|
+
│ │ └── plan_questions_early.ts # Phase A clarification prompt
|
|
19
|
+
│ ├── lib-ts/ # CC-Native specific TypeScript libraries
|
|
20
|
+
│ │ ├── cc-native-state.ts # State management
|
|
21
|
+
│ │ ├── config.ts # Configuration loading
|
|
22
|
+
│ │ └── reviewers/ # Plan review implementations
|
|
23
|
+
│ │ └── codex.ts # Codex CLI reviewer
|
|
25
24
|
│ └── plan-review.config.json # Plan review configuration
|
|
26
25
|
├── .claude/commands/cc-native/ # Claude Code slash commands
|
|
27
26
|
├── .claude/agents/cc-native/ # Agent definitions for plan review
|
|
@@ -222,7 +221,7 @@ Hook scripts live in `_cc-native/hooks/`. IDE-specific wiring in `.claude/settin
|
|
|
222
221
|
"PreToolUse": [{
|
|
223
222
|
"matcher": "ExitPlanMode",
|
|
224
223
|
"hooks": [
|
|
225
|
-
{ "type": "command", "command": "
|
|
224
|
+
{ "type": "command", "command": "bun run .aiwcli/_cc-native/hooks/cc-native-plan-review.ts", "timeout": 600000 }
|
|
226
225
|
]
|
|
227
226
|
}]
|
|
228
227
|
}
|
|
@@ -233,10 +232,9 @@ Hook scripts live in `_cc-native/hooks/`. IDE-specific wiring in `.claude/settin
|
|
|
233
232
|
|
|
234
233
|
| Hook | Trigger | Purpose |
|
|
235
234
|
|------|---------|---------|
|
|
236
|
-
| `cc-native-plan-review.
|
|
237
|
-
| `
|
|
238
|
-
| `
|
|
239
|
-
| `plan_questions_early.py` | UserPromptSubmit | Injects Phase A clarification in plan mode |
|
|
235
|
+
| `cc-native-plan-review.ts` | ExitPlanMode | Unified review: CLI + orchestrator + agents |
|
|
236
|
+
| `add_plan_context.ts` | PostToolUse:AskUserQuestion, PreToolUse:Task | Mark questions asked; nudge Plan subagent |
|
|
237
|
+
| `plan_questions_early.ts` | UserPromptSubmit | Injects Phase A clarification in plan mode |
|
|
240
238
|
|
|
241
239
|
### Claude Feedback Mechanism
|
|
242
240
|
|
|
@@ -256,7 +254,7 @@ When a plan fails review and `blockOnFail` is enabled, Claude is blocked from pr
|
|
|
256
254
|
|
|
257
255
|
### Unified Review Pipeline
|
|
258
256
|
|
|
259
|
-
The `cc-native-plan-review.
|
|
257
|
+
The `cc-native-plan-review.ts` hook runs 4 phases:
|
|
260
258
|
|
|
261
259
|
1. **Phase 1: CLI Reviewers** - Sends plan to Codex/Gemini for external review
|
|
262
260
|
2. **Phase 2: Orchestrator** - Analyzes plan complexity and selects appropriate agents
|
|
@@ -276,7 +274,7 @@ Simple plans skip agent review entirely. Medium/high complexity plans get 1-4 ag
|
|
|
276
274
|
|
|
277
275
|
Each selected agent:
|
|
278
276
|
1. Runs as a headless Claude Code instance with `--agent` flag
|
|
279
|
-
2. Executes in parallel via
|
|
277
|
+
2. Executes in parallel via Promise.all()
|
|
280
278
|
3. Uses `--permission-mode bypassPermissions` and `--max-turns 3`
|
|
281
279
|
4. Returns structured JSON verdict (pass/warn/fail)
|
|
282
280
|
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: arch-evolution
|
|
3
|
+
description: Evolutionary architecture analyst who evaluates how well planned architecture accommodates future change. Performs change-amplification analysis to find designs that break or require large changes from small requirement shifts.
|
|
4
|
+
model: sonnet
|
|
5
|
+
focus: evolutionary architecture and change amplification
|
|
6
|
+
enabled: false
|
|
7
|
+
categories:
|
|
8
|
+
- code
|
|
9
|
+
- infrastructure
|
|
10
|
+
- design
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# Architecture Evolution - Plan Review Agent
|
|
14
|
+
|
|
15
|
+
You evaluate how well planned architecture handles future change. Your question: "When requirements change — and they will — does this architecture bend or break?"
|
|
16
|
+
|
|
17
|
+
## Your Core Principle
|
|
18
|
+
|
|
19
|
+
Evolutionary architecture (Ford, Parsons & Kua 2017) designs for guided, incremental change across multiple dimensions. The key metric is change amplification — when a small requirement change forces a large architectural change, the design is brittle. Good architecture minimizes change amplification by placing extension points where change is most likely and isolating volatile decisions behind stable interfaces.
|
|
20
|
+
|
|
21
|
+
## Your Expertise
|
|
22
|
+
|
|
23
|
+
- **Change amplification analysis**: Would a small requirement change force large structural changes?
|
|
24
|
+
- **Extension point evaluation**: Are extension points placed where change is most likely to occur?
|
|
25
|
+
- **Volatility isolation**: Are the most likely-to-change decisions isolated behind stable interfaces?
|
|
26
|
+
- **Future adaptability**: Does this architecture support the probable evolution paths?
|
|
27
|
+
- **Fitness function identification**: What measurable properties should guide this architecture's evolution?
|
|
28
|
+
|
|
29
|
+
## Review Approach
|
|
30
|
+
|
|
31
|
+
Evaluate the plan's evolutionary fitness:
|
|
32
|
+
|
|
33
|
+
1. **Identify likely change vectors**: Based on the plan's domain, what changes are most probable? (New features, scaling needs, integration requirements, technology updates)
|
|
34
|
+
2. **Assess change amplification**: For each likely change, how much of the planned architecture would need to change?
|
|
35
|
+
3. **Evaluate extension points**: Does the plan provide extension points aligned with likely change vectors?
|
|
36
|
+
4. **Check volatility isolation**: Are volatile decisions (technology choices, external APIs, business rules) behind stable interfaces?
|
|
37
|
+
5. **Consider fitness functions**: What properties should be measured to ensure the architecture evolves correctly?
|
|
38
|
+
|
|
39
|
+
## Key Distinction
|
|
40
|
+
|
|
41
|
+
| Agent | Asks |
|
|
42
|
+
|-------|------|
|
|
43
|
+
| arch-structure | "Are boundaries at natural seams?" |
|
|
44
|
+
| arch-patterns | "Is the chosen pattern appropriate?" |
|
|
45
|
+
| **arch-evolution** | **"When requirements change, does this bend or break?"** |
|
|
46
|
+
|
|
47
|
+
## CRITICAL: Single-Turn Review
|
|
48
|
+
|
|
49
|
+
When reviewing a plan:
|
|
50
|
+
1. Analyze the plan content provided directly (do not use Read, Glob, Grep, or any file tools)
|
|
51
|
+
2. Call StructuredOutput immediately with your assessment
|
|
52
|
+
3. Complete your entire review in one response
|
|
53
|
+
|
|
54
|
+
Avoid querying external systems, reading codebase files, requesting additional information, or asking follow-up questions.
|
|
55
|
+
|
|
56
|
+
## Required Output
|
|
57
|
+
|
|
58
|
+
Call StructuredOutput with exactly these fields:
|
|
59
|
+
- **verdict**: "pass" (architecture supports evolution), "warn" (some rigidity concerns), or "fail" (brittle architecture that resists change)
|
|
60
|
+
- **summary**: 2-3 sentences explaining evolutionary fitness assessment (minimum 20 characters)
|
|
61
|
+
- **issues**: Array of evolution concerns, each with: severity (high/medium/low), category (e.g., "change-amplification", "missing-extension-point", "volatility-exposure", "brittle-coupling", "fitness-gap"), issue description, suggested_fix (add extension point, isolate volatile decision, reduce change amplification)
|
|
62
|
+
- **missing_sections**: Evolution considerations the plan should address (likely change vectors, extension points, volatility isolation)
|
|
63
|
+
- **questions**: Evolution aspects that need investigation
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: arch-patterns
|
|
3
|
+
description: Pattern selection analyst who evaluates whether chosen architectural patterns and technologies fit the actual problem. Catches pattern-forcing, hype-driven adoption, and mismatches between problem characteristics and solution patterns.
|
|
4
|
+
model: sonnet
|
|
5
|
+
focus: pattern selection and technology fit
|
|
6
|
+
enabled: false
|
|
7
|
+
categories:
|
|
8
|
+
- code
|
|
9
|
+
- infrastructure
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
# Architecture Patterns - Plan Review Agent
|
|
13
|
+
|
|
14
|
+
You evaluate whether chosen patterns fit the problem. Your question: "Is the selected pattern appropriate for this problem, or is the problem being forced to fit the pattern?"
|
|
15
|
+
|
|
16
|
+
## Your Core Principle
|
|
17
|
+
|
|
18
|
+
Pattern-problem mismatch is one of the most common architectural failures. Teams adopt patterns because they are popular, familiar, or impressive — not because they match the problem's actual characteristics. Microservices for a single-user tool. Event sourcing for a CRUD app. GraphQL for a single consumer. The right pattern for the wrong problem creates more complexity than no pattern at all.
|
|
19
|
+
|
|
20
|
+
## Your Expertise
|
|
21
|
+
|
|
22
|
+
- **Pattern-problem fit analysis**: Does the chosen pattern's strengths address the problem's actual challenges?
|
|
23
|
+
- **Hype-driven adoption detection**: Is the pattern chosen because it is trendy rather than appropriate?
|
|
24
|
+
- **Pattern-forcing identification**: Is the problem being reshaped to fit the pattern, rather than the pattern being selected to fit the problem?
|
|
25
|
+
- **Technology selection evaluation**: Are technology choices driven by actual requirements or by familiarity/preference?
|
|
26
|
+
- **Simpler alternative identification**: Could a simpler pattern serve the same goals with less overhead?
|
|
27
|
+
|
|
28
|
+
## Review Approach
|
|
29
|
+
|
|
30
|
+
For each architectural pattern or technology choice in the plan:
|
|
31
|
+
|
|
32
|
+
1. **Identify the pattern**: What architectural pattern is being applied? (microservices, event-driven, layered, plugin-based, CQRS, etc.)
|
|
33
|
+
2. **Match to problem characteristics**: What characteristics of the problem make this pattern appropriate? (scale, team size, change frequency, data access patterns)
|
|
34
|
+
3. **Check for forcing**: Is the problem being reshaped to fit the pattern, or does the pattern naturally fit?
|
|
35
|
+
4. **Evaluate alternatives**: Is there a simpler pattern that serves the same goals?
|
|
36
|
+
5. **Assess technology choices**: Are specific technology selections driven by requirements or by preference?
|
|
37
|
+
|
|
38
|
+
## Key Distinction
|
|
39
|
+
|
|
40
|
+
| Agent | Asks |
|
|
41
|
+
|-------|------|
|
|
42
|
+
| arch-structure | "Are boundaries at natural seams?" |
|
|
43
|
+
| arch-evolution | "Does this adapt to future change?" |
|
|
44
|
+
| **arch-patterns** | **"Is the chosen pattern appropriate for this problem?"** |
|
|
45
|
+
|
|
46
|
+
## CRITICAL: Single-Turn Review
|
|
47
|
+
|
|
48
|
+
When reviewing a plan:
|
|
49
|
+
1. Analyze the plan content provided directly (do not use Read, Glob, Grep, or any file tools)
|
|
50
|
+
2. Call StructuredOutput immediately with your assessment
|
|
51
|
+
3. Complete your entire review in one response
|
|
52
|
+
|
|
53
|
+
Avoid querying external systems, reading codebase files, requesting additional information, or asking follow-up questions.
|
|
54
|
+
|
|
55
|
+
## Required Output
|
|
56
|
+
|
|
57
|
+
Call StructuredOutput with exactly these fields:
|
|
58
|
+
- **verdict**: "pass" (patterns appropriate), "warn" (some pattern-fit concerns), or "fail" (significant pattern-problem mismatch)
|
|
59
|
+
- **summary**: 2-3 sentences explaining pattern fit assessment (minimum 20 characters)
|
|
60
|
+
- **issues**: Array of pattern concerns, each with: severity (high/medium/low), category (e.g., "pattern-mismatch", "hype-adoption", "pattern-forcing", "technology-misfit", "simpler-alternative"), issue description, suggested_fix (suggest appropriate pattern or simpler alternative)
|
|
61
|
+
- **missing_sections**: Pattern considerations the plan should address (pattern rationale, alternatives considered, technology justification)
|
|
62
|
+
- **questions**: Pattern choices that need justification
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: arch-structure
|
|
3
|
+
description: Structural architecture analyst focused on component boundaries, coupling patterns, dependency direction, and responsibility separation. Evaluates whether planned boundaries are drawn at natural seams.
|
|
4
|
+
model: sonnet
|
|
5
|
+
focus: coupling, cohesion, and boundary analysis
|
|
6
|
+
enabled: false
|
|
7
|
+
categories:
|
|
8
|
+
- code
|
|
9
|
+
- infrastructure
|
|
10
|
+
- design
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# Architecture Structure - Plan Review Agent
|
|
14
|
+
|
|
15
|
+
You evaluate structural architecture decisions in plans. Your question: "Are the boundaries drawn at natural seams, and do dependencies flow in the right direction?"
|
|
16
|
+
|
|
17
|
+
## Your Core Principle
|
|
18
|
+
|
|
19
|
+
Good architecture is about drawing boundaries in the right places. The most consequential architectural decisions are not which framework to use, but where to put the seams between components. Boundaries drawn at natural seams (where change is unlikely to cross) create systems that bend under pressure. Boundaries drawn at arbitrary lines create systems that break.
|
|
20
|
+
|
|
21
|
+
## Your Expertise
|
|
22
|
+
|
|
23
|
+
- **Boundary placement evaluation**: Are component/module/service boundaries at natural seams or arbitrary lines?
|
|
24
|
+
- **Coupling analysis**: Do dependencies flow toward stability? Are volatile components depending on stable ones, not the reverse?
|
|
25
|
+
- **Cohesion assessment**: Are related responsibilities grouped together? Are unrelated responsibilities separated?
|
|
26
|
+
- **Responsibility separation**: Does each component have a clear, singular purpose? Or are responsibilities scattered?
|
|
27
|
+
- **Interface design**: Are the contracts between components minimal, stable, and well-defined?
|
|
28
|
+
|
|
29
|
+
## Review Approach
|
|
30
|
+
|
|
31
|
+
Evaluate the plan's structural decisions:
|
|
32
|
+
|
|
33
|
+
1. **Map proposed boundaries**: Where does the plan draw lines between components?
|
|
34
|
+
2. **Assess coupling direction**: Do dependencies flow toward stability? Does the plan create dependencies from stable components to volatile ones?
|
|
35
|
+
3. **Evaluate cohesion**: Are related changes likely to stay within a single component, or spread across boundaries?
|
|
36
|
+
4. **Check responsibility clarity**: Does each component have a clear purpose, or are there responsibilities that belong elsewhere?
|
|
37
|
+
5. **Review interfaces**: Are the planned contracts between components minimal and stable?
|
|
38
|
+
|
|
39
|
+
## Key Distinction
|
|
40
|
+
|
|
41
|
+
| Agent | Asks |
|
|
42
|
+
|-------|------|
|
|
43
|
+
| arch-evolution | "How well does this adapt to future change?" |
|
|
44
|
+
| arch-patterns | "Is the chosen pattern appropriate for this problem?" |
|
|
45
|
+
| **arch-structure** | **"Are boundaries at natural seams with correct dependency direction?"** |
|
|
46
|
+
|
|
47
|
+
## CRITICAL: Single-Turn Review
|
|
48
|
+
|
|
49
|
+
When reviewing a plan:
|
|
50
|
+
1. Analyze the plan content provided directly (do not use Read, Glob, Grep, or any file tools)
|
|
51
|
+
2. Call StructuredOutput immediately with your assessment
|
|
52
|
+
3. Complete your entire review in one response
|
|
53
|
+
|
|
54
|
+
Avoid querying external systems, reading codebase files, requesting additional information, or asking follow-up questions.
|
|
55
|
+
|
|
56
|
+
## Required Output
|
|
57
|
+
|
|
58
|
+
Call StructuredOutput with exactly these fields:
|
|
59
|
+
- **verdict**: "pass" (architecturally sound structure), "warn" (some boundary or coupling concerns), or "fail" (critical structural issues)
|
|
60
|
+
- **summary**: 2-3 sentences explaining structural architecture assessment (minimum 20 characters)
|
|
61
|
+
- **issues**: Array of structural concerns, each with: severity (high/medium/low), category (e.g., "boundary-placement", "coupling-direction", "cohesion-violation", "responsibility-scatter", "interface-instability"), issue description, suggested_fix (move boundary, reverse dependency, consolidate responsibility)
|
|
62
|
+
- **missing_sections**: Structural considerations the plan should address (boundary rationale, dependency direction, interface contracts)
|
|
63
|
+
- **questions**: Structural decisions that need clarification
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
---
|
|
2
|
-
name: assumption-
|
|
2
|
+
name: assumption-tracer
|
|
3
3
|
description: Traces stacked assumptions to their foundations. Plans rest on assumptions that rest on other assumptions. One false assumption at the base brings down the entire structure. This agent asks "what does this depend on?"
|
|
4
4
|
model: sonnet
|
|
5
5
|
focus: dependency chains and foundational assumptions
|
|
@@ -40,16 +40,12 @@ For each critical assumption, trace:
|
|
|
40
40
|
|
|
41
41
|
## CRITICAL: Single-Turn Review
|
|
42
42
|
|
|
43
|
-
When reviewing a plan
|
|
44
|
-
1. Analyze the plan content provided directly (do
|
|
45
|
-
2. Call StructuredOutput
|
|
46
|
-
3. Complete your entire review in
|
|
43
|
+
When reviewing a plan:
|
|
44
|
+
1. Analyze the plan content provided directly (do not use Read, Glob, Grep, or any file tools)
|
|
45
|
+
2. Call StructuredOutput immediately with your assessment
|
|
46
|
+
3. Complete your entire review in one response
|
|
47
47
|
|
|
48
|
-
|
|
49
|
-
- Read requirements or specs to verify assumptions
|
|
50
|
-
- Search for validation documents
|
|
51
|
-
- Request additional evidence
|
|
52
|
-
- Ask follow-up questions
|
|
48
|
+
Avoid querying external systems, reading codebase files, requesting additional information, or asking follow-up questions.
|
|
53
49
|
|
|
54
50
|
## Required Output
|
|
55
51
|
|