@selesai/code 0.9.10 → 0.9.11
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/CHANGELOG.md +260 -255
- package/dist/cli/args.js +13 -2
- package/dist/cli/args.test.js +8 -0
- package/dist/cli/credential-print.js +4 -4
- package/dist/cli.js +0 -0
- package/dist/core/agent-session-auto-handoff.test.js +24 -1
- package/dist/core/agent-session.d.ts +11 -4
- package/dist/core/agent-session.js +96 -35
- package/dist/core/compaction/branch-summarization.js +30 -30
- package/dist/core/compaction/compaction.js +81 -81
- package/dist/core/compaction/utils.js +2 -2
- package/dist/core/defaults.d.ts +1 -0
- package/dist/core/defaults.js +9 -0
- package/dist/core/export-html/template.css +1066 -1066
- package/dist/core/export-html/template.html +55 -55
- package/dist/core/export-html/template.js +1864 -1864
- package/dist/core/export-html/vendor/highlight.min.js +1212 -1212
- package/dist/core/export-html/vendor/marked.min.js +78 -78
- package/dist/core/extensions/loader.js +108 -35
- package/dist/core/extensions/loader.test.d.ts +1 -0
- package/dist/core/extensions/loader.test.js +21 -0
- package/dist/core/extensions/types.d.ts +12 -2
- package/dist/core/keybindings.d.ts +2 -2
- package/dist/core/messages.js +7 -7
- package/dist/core/model-resolver.d.ts +1 -0
- package/dist/core/model-resolver.js +10 -4
- package/dist/core/package-manager.js +4 -4
- package/dist/core/sdk.d.ts +5 -5
- package/dist/core/sdk.js +16 -4
- package/dist/core/settings-manager.d.ts +6 -0
- package/dist/core/settings-manager.js +22 -0
- package/dist/core/tools/bash.d.ts +18 -1
- package/dist/core/tools/bash.js +41 -23
- package/dist/core/tools/index.d.ts +4 -1
- package/dist/core/tools/index.js +9 -1
- package/dist/core/tools/powershell.d.ts +15 -0
- package/dist/core/tools/powershell.js +38 -0
- package/dist/core/tools/powershell.test.d.ts +1 -0
- package/dist/core/tools/powershell.test.js +20 -0
- package/dist/extensions/context-compaction-reminder.test.ts +82 -82
- package/dist/extensions/context-compaction-reminder.ts +28 -28
- package/dist/extensions/pi-intercom/LICENSE +21 -21
- package/dist/extensions/pi-intercom/broker/client.test.ts +83 -83
- package/dist/extensions/pi-intercom/broker/extension.test.ts +387 -387
- package/dist/extensions/pi-intercom/broker/framing.test.ts +114 -114
- package/dist/extensions/pi-intercom/broker/paths.test.ts +153 -153
- package/dist/extensions/pi-intercom/broker/paths.ts +134 -134
- package/dist/extensions/pi-intercom/broker/runtime-claim.test.ts +34 -34
- package/dist/extensions/pi-intercom/broker/runtime-claim.ts +21 -21
- package/dist/extensions/pi-intercom/cwd.test.ts +40 -40
- package/dist/extensions/pi-intercom/cwd.ts +31 -31
- package/dist/extensions/pi-intercom/extension-api.ts +44 -44
- package/dist/extensions/pi-intercom/format-context.test.ts +31 -31
- package/dist/extensions/pi-intercom/format-context.ts +32 -32
- package/dist/extensions/pi-intercom/test/overlay-width.test.ts +66 -66
- package/dist/extensions/pi-intercom/ui/compose.ts +143 -143
- package/dist/extensions/pi-intercom/ui/session-list.ts +166 -166
- package/dist/extensions/pi-powerline-footer/bash-mode/shell-session.ts +286 -286
- package/dist/extensions/pi-powerline-footer/bash-mode/transcript.ts +108 -108
- package/dist/extensions/pi-powerline-footer/separators.ts +57 -57
- package/dist/extensions/pi-powerline-footer/tests/session-usage.test.ts +47 -47
- package/dist/extensions/pi-powerline-footer/tests/tps.test.ts +39 -39
- package/dist/extensions/pi-powerline-footer/theme.example.json +24 -24
- package/dist/extensions/pi-powerline-footer/theme.json +12 -12
- package/dist/extensions/pi-powerline-footer/tps.ts +345 -345
- package/dist/extensions/pi-rewind-hook/README.md +245 -245
- package/dist/extensions/pi-rewind-hook/index.ts +1445 -1445
- package/dist/extensions/pi-rewind-hook/package.json +29 -29
- package/dist/extensions/pi-subagents/install.mjs +0 -0
- package/dist/extensions/pi-web-agent/package.json +31 -31
- package/dist/extensions/pi-web-agent/src/backends/config.ts +205 -205
- package/dist/extensions/pi-web-agent/src/backends/doctor.ts +136 -136
- package/dist/extensions/pi-web-agent/src/backends/factory.ts +152 -152
- package/dist/extensions/pi-web-agent/src/backends/settings-reader.ts +25 -25
- package/dist/extensions/pi-web-agent/src/cache/ttl-cache.ts +28 -28
- package/dist/extensions/pi-web-agent/src/changelog-notice.ts +136 -136
- package/dist/extensions/pi-web-agent/src/commands/web-agent-config.ts +946 -946
- package/dist/extensions/pi-web-agent/src/extension.ts +126 -126
- package/dist/extensions/pi-web-agent/src/extract/readability.ts +118 -118
- package/dist/extensions/pi-web-agent/src/fetch/browser-resolution.ts +199 -199
- package/dist/extensions/pi-web-agent/src/fetch/firecrawl-fetch.ts +100 -100
- package/dist/extensions/pi-web-agent/src/fetch/headless-fetch.ts +117 -117
- package/dist/extensions/pi-web-agent/src/fetch/http-fetch.ts +67 -67
- package/dist/extensions/pi-web-agent/src/orchestration/answer-synthesizer.ts +60 -60
- package/dist/extensions/pi-web-agent/src/orchestration/candidate-selector.ts +50 -50
- package/dist/extensions/pi-web-agent/src/orchestration/direct-url.ts +52 -52
- package/dist/extensions/pi-web-agent/src/orchestration/evidence-quality.ts +105 -105
- package/dist/extensions/pi-web-agent/src/orchestration/evidence-ranker.ts +45 -45
- package/dist/extensions/pi-web-agent/src/orchestration/index.ts +28 -28
- package/dist/extensions/pi-web-agent/src/orchestration/query-planner.ts +47 -47
- package/dist/extensions/pi-web-agent/src/orchestration/research-orchestrator.ts +376 -376
- package/dist/extensions/pi-web-agent/src/orchestration/research-types.ts +64 -64
- package/dist/extensions/pi-web-agent/src/orchestration/research-worker.ts +181 -181
- package/dist/extensions/pi-web-agent/src/orchestration/source-profile.ts +101 -101
- package/dist/extensions/pi-web-agent/src/orchestration/stop-decider.ts +81 -81
- package/dist/extensions/pi-web-agent/src/presentation/config-store.ts +210 -210
- package/dist/extensions/pi-web-agent/src/presentation/config.ts +75 -75
- package/dist/extensions/pi-web-agent/src/presentation/explore-presentation.ts +61 -61
- package/dist/extensions/pi-web-agent/src/presentation/fetch-presentation.ts +54 -54
- package/dist/extensions/pi-web-agent/src/presentation/search-presentation.ts +41 -41
- package/dist/extensions/pi-web-agent/src/presentation/select-view.ts +20 -20
- package/dist/extensions/pi-web-agent/src/presentation/types.ts +63 -63
- package/dist/extensions/pi-web-agent/src/search/brave.ts +114 -114
- package/dist/extensions/pi-web-agent/src/search/duckduckgo.ts +72 -72
- package/dist/extensions/pi-web-agent/src/search/searxng.ts +96 -96
- package/dist/extensions/pi-web-agent/src/tools/web-explore.ts +71 -71
- package/dist/extensions/pi-web-agent/src/tools/web-fetch-headless.ts +31 -31
- package/dist/extensions/pi-web-agent/src/tools/web-fetch.ts +31 -31
- package/dist/extensions/pi-web-agent/src/tools/web-search.ts +157 -157
- package/dist/extensions/pi-web-agent/src/types.ts +88 -88
- package/dist/extensions/ponytail/package.json +8 -8
- package/dist/extensions/question/batch.ts +103 -103
- package/dist/extensions/question/constants.ts +30 -30
- package/dist/extensions/question/helpers.ts +58 -58
- package/dist/extensions/question/navigation.ts +14 -14
- package/dist/extensions/question/package.json +19 -19
- package/dist/extensions/question/schemas.ts +43 -43
- package/dist/extensions/question/selection-mode.ts +46 -46
- package/dist/extensions/question/shortcuts.ts +44 -44
- package/dist/extensions/question/types.ts +132 -132
- package/dist/extensions/test-resolve-hook-impl.mjs +6 -6
- package/dist/extensions/test-resolve-hook.mjs +6 -6
- package/dist/extensions/web-agent-onboarding.ts +222 -222
- package/dist/extensions/workflow/package.json +17 -17
- package/dist/package-manager-cli.js +71 -71
- package/dist/rpc-entry.js +0 -0
- package/dist/skills/agent-browser/SKILL.md +52 -52
- package/dist/skills/batch-grill-me/SKILL.md +19 -19
- package/dist/skills/grill-me/SKILL.md +10 -10
- package/dist/skills/handoff/SKILL.md +16 -16
- package/dist/skills/handoff-text/SKILL.md +14 -14
- package/dist/skills/implanger/SKILL.md +69 -69
- package/dist/skills/improve-codebase/REFERENCE.md +78 -78
- package/dist/skills/improve-codebase/SKILL.md +178 -178
- package/dist/skills/planger/SKILL.md +166 -166
- package/dist/skills/ponytail/SKILL.md +116 -116
- package/dist/skills/ponytail-audit/SKILL.md +42 -42
- package/dist/skills/ponytail-debt/SKILL.md +45 -45
- package/dist/skills/ponytail-gain/SKILL.md +51 -51
- package/dist/skills/ponytail-help/SKILL.md +70 -70
- package/dist/skills/ponytail-review/SKILL.md +58 -58
- package/dist/skills/selesai-handoff/SKILL.md +20 -20
- package/dist/skills/workflow-creation/SKILL.md +73 -73
- package/dist/themes/powerline-footer/theme.json +33 -33
- package/dist/utils/shell.d.ts +3 -0
- package/dist/utils/shell.js +17 -5
- package/docs/compaction.md +396 -396
- package/docs/containerization.md +111 -111
- package/docs/development.md +71 -71
- package/docs/docs.json +164 -164
- package/docs/environment-variables.md +86 -86
- package/docs/index.md +83 -83
- package/docs/json.md +82 -82
- package/docs/models.md +502 -502
- package/docs/packages.md +227 -227
- package/docs/plans/subagent-delegation/phase-0-correctness.md +264 -264
- package/docs/plans/subagent-delegation/phase-1-behavioral-contract.md +485 -485
- package/docs/plans/subagent-delegation/phase-2-context-controls.md +281 -281
- package/docs/plans/subagent-delegation/phase-3-advisory-routing.md +361 -361
- package/docs/plans/subagent-delegation/phase-4-optional-enforcement.md +380 -380
- package/docs/prompt-templates.md +95 -95
- package/docs/providers.md +293 -293
- package/docs/sdk.md +1144 -1143
- package/docs/security.md +59 -59
- package/docs/session-format.md +414 -414
- package/docs/sessions.md +145 -145
- package/docs/shared-host-extensions.md +109 -109
- package/docs/shell-aliases.md +13 -13
- package/docs/skills.md +231 -231
- package/docs/terminal-setup.md +142 -142
- package/docs/termux.md +127 -127
- package/docs/themes.md +295 -295
- package/docs/tmux.md +63 -63
- package/docs/tui.md +927 -927
- package/docs/windows.md +17 -17
- package/examples/README.md +25 -25
- package/examples/extensions/README.md +211 -211
- package/examples/extensions/auto-commit-on-exit.ts +49 -49
- package/examples/extensions/bash-spawn-hook.ts +30 -30
- package/examples/extensions/bookmark.ts +50 -50
- package/examples/extensions/border-status-editor.ts +150 -150
- package/examples/extensions/built-in-tool-renderer.ts +249 -249
- package/examples/extensions/claude-rules.ts +86 -86
- package/examples/extensions/commands.ts +72 -72
- package/examples/extensions/confirm-destructive.ts +59 -59
- package/examples/extensions/custom-compaction.ts +130 -130
- package/examples/extensions/custom-footer.ts +64 -64
- package/examples/extensions/custom-header.ts +73 -73
- package/examples/extensions/custom-provider-anthropic/index.ts +610 -610
- package/examples/extensions/custom-provider-anthropic/package-lock.json +24 -24
- package/examples/extensions/custom-provider-anthropic/package.json +19 -19
- package/examples/extensions/custom-provider-gitlab-duo/index.ts +404 -404
- package/examples/extensions/custom-provider-gitlab-duo/package.json +16 -16
- package/examples/extensions/custom-provider-gitlab-duo/test.ts +82 -82
- package/examples/extensions/dirty-repo-guard.ts +56 -56
- package/examples/extensions/doom-overlay/README.md +46 -46
- package/examples/extensions/doom-overlay/doom/build/doom.js +21 -21
- package/examples/extensions/doom-overlay/doom/build/doom.wasm +0 -0
- package/examples/extensions/doom-overlay/doom/build.sh +152 -152
- package/examples/extensions/doom-overlay/doom/doomgeneric_pi.c +72 -72
- package/examples/extensions/doom-overlay/doom-component.ts +132 -132
- package/examples/extensions/doom-overlay/doom-engine.ts +173 -173
- package/examples/extensions/doom-overlay/doom-keys.ts +104 -104
- package/examples/extensions/doom-overlay/index.ts +74 -74
- package/examples/extensions/doom-overlay/wad-finder.ts +51 -51
- package/examples/extensions/dynamic-resources/SKILL.md +8 -8
- package/examples/extensions/dynamic-resources/dynamic.json +79 -79
- package/examples/extensions/dynamic-resources/dynamic.md +5 -5
- package/examples/extensions/dynamic-resources/index.ts +15 -15
- package/examples/extensions/dynamic-tools.ts +74 -74
- package/examples/extensions/event-bus.ts +43 -43
- package/examples/extensions/file-trigger.ts +41 -41
- package/examples/extensions/git-checkpoint.ts +53 -53
- package/examples/extensions/git-merge-and-resolve.ts +115 -115
- package/examples/extensions/github-issue-autocomplete.ts +185 -185
- package/examples/extensions/gondolin/index.ts +531 -531
- package/examples/extensions/gondolin/package-lock.json +185 -185
- package/examples/extensions/gondolin/package.json +19 -19
- package/examples/extensions/handoff.ts +199 -199
- package/examples/extensions/hello.ts +26 -26
- package/examples/extensions/hidden-thinking-label.ts +53 -53
- package/examples/extensions/inline-bash.ts +94 -94
- package/examples/extensions/input-transform-streaming.ts +39 -39
- package/examples/extensions/input-transform.ts +43 -43
- package/examples/extensions/interactive-shell.ts +196 -196
- package/examples/extensions/mac-system-theme.ts +47 -47
- package/examples/extensions/message-renderer.ts +59 -59
- package/examples/extensions/minimal-mode.ts +426 -426
- package/examples/extensions/modal-editor.ts +85 -85
- package/examples/extensions/model-status.ts +31 -31
- package/examples/extensions/notify.ts +55 -55
- package/examples/extensions/overlay-qa-tests.ts +1450 -1450
- package/examples/extensions/overlay-test.ts +153 -153
- package/examples/extensions/permission-gate.ts +34 -34
- package/examples/extensions/pirate.ts +47 -47
- package/examples/extensions/plan-mode/README.md +66 -66
- package/examples/extensions/plan-mode/index.ts +390 -390
- package/examples/extensions/plan-mode/utils.ts +168 -168
- package/examples/extensions/preset.ts +436 -436
- package/examples/extensions/project-trust.ts +64 -64
- package/examples/extensions/prompt-customizer.ts +97 -97
- package/examples/extensions/protected-paths.ts +30 -30
- package/examples/extensions/provider-payload.ts +18 -18
- package/examples/extensions/qna.ts +122 -122
- package/examples/extensions/question.ts +285 -285
- package/examples/extensions/questionnaire.ts +448 -448
- package/examples/extensions/rainbow-editor.ts +88 -88
- package/examples/extensions/reload-runtime.ts +37 -37
- package/examples/extensions/rpc-demo.ts +118 -118
- package/examples/extensions/sandbox/index.ts +321 -321
- package/examples/extensions/sandbox/package-lock.json +92 -92
- package/examples/extensions/sandbox/package.json +19 -19
- package/examples/extensions/send-user-message.ts +97 -97
- package/examples/extensions/session-name.ts +27 -27
- package/examples/extensions/shutdown-command.ts +63 -63
- package/examples/extensions/snake.ts +343 -343
- package/examples/extensions/space-invaders.ts +560 -560
- package/examples/extensions/ssh.ts +220 -220
- package/examples/extensions/status-line.ts +32 -32
- package/examples/extensions/structured-output.ts +65 -65
- package/examples/extensions/subagent/README.md +175 -175
- package/examples/extensions/subagent/agents/planner.md +37 -37
- package/examples/extensions/subagent/agents/reviewer.md +35 -35
- package/examples/extensions/subagent/agents/scout.md +50 -50
- package/examples/extensions/subagent/agents/worker.md +24 -24
- package/examples/extensions/subagent/agents.ts +126 -126
- package/examples/extensions/subagent/index.ts +1015 -1015
- package/examples/extensions/subagent/prompts/implement-and-review.md +10 -10
- package/examples/extensions/subagent/prompts/implement.md +10 -10
- package/examples/extensions/subagent/prompts/scout-and-plan.md +9 -9
- package/examples/extensions/summarize.ts +209 -209
- package/examples/extensions/system-prompt-header.ts +17 -17
- package/examples/extensions/tic-tac-toe.ts +1008 -1008
- package/examples/extensions/timed-confirm.ts +70 -70
- package/examples/extensions/titlebar-spinner.ts +58 -58
- package/examples/extensions/todo.ts +297 -297
- package/examples/extensions/tool-override.ts +144 -144
- package/examples/extensions/tools.ts +146 -146
- package/examples/extensions/trigger-compact.ts +50 -50
- package/examples/extensions/truncated-tool.ts +195 -195
- package/examples/extensions/widget-placement.ts +9 -9
- package/examples/extensions/with-deps/index.ts +32 -32
- package/examples/extensions/with-deps/package-lock.json +31 -31
- package/examples/extensions/with-deps/package.json +22 -22
- package/examples/extensions/working-indicator.ts +123 -123
- package/examples/extensions/working-message-test.ts +25 -25
- package/examples/rpc-extension-ui.ts +632 -632
- package/examples/sdk/01-minimal.ts +26 -26
- package/examples/sdk/02-custom-model.ts +53 -53
- package/examples/sdk/03-custom-prompt.ts +75 -75
- package/examples/sdk/04-skills.ts +55 -55
- package/examples/sdk/05-tools.ts +48 -48
- package/examples/sdk/06-extensions.ts +99 -99
- package/examples/sdk/07-context-files.ts +47 -47
- package/examples/sdk/08-prompt-templates.ts +51 -51
- package/examples/sdk/09-api-keys-and-oauth.ts +52 -52
- package/examples/sdk/10-settings.ts +53 -53
- package/examples/sdk/11-sessions.ts +52 -52
- package/examples/sdk/12-full-control.ts +79 -79
- package/examples/sdk/13-session-runtime.ts +67 -67
- package/examples/sdk/README.md +144 -144
- package/package.json +4 -4
|
@@ -1,179 +1,179 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: improve-codebase
|
|
3
|
-
description: improve codebase quality
|
|
4
|
-
disable-model-invocation: true
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
# Improve Codebase Architecture
|
|
8
|
-
|
|
9
|
-
Explore a codebase (or provided context) like an AI would. Surface architectural friction, identify deepening opportunities, and propose refactors as GitHub issue RFCs.
|
|
10
|
-
|
|
11
|
-
The input is already provided inline. Do NOT describe or restate it — use it directly.
|
|
12
|
-
|
|
13
|
-
---
|
|
14
|
-
|
|
15
|
-
## Core Principle
|
|
16
|
-
|
|
17
|
-
A **deep module** (John Ousterhout, "A Philosophy of Software Design") has a small interface hiding a large implementation.
|
|
18
|
-
|
|
19
|
-
Your goal:
|
|
20
|
-
- Reduce cognitive load
|
|
21
|
-
- Collapse shallow abstractions
|
|
22
|
-
- Move complexity behind stable boundaries
|
|
23
|
-
- Improve testability at module boundaries
|
|
24
|
-
|
|
25
|
-
---
|
|
26
|
-
|
|
27
|
-
## Process
|
|
28
|
-
|
|
29
|
-
### 1. Explore the context
|
|
30
|
-
|
|
31
|
-
Call the subagent tool with `{ agent: "explorer", task: "..." }` (do not pass a model) when possible.
|
|
32
|
-
|
|
33
|
-
If the context is partial:
|
|
34
|
-
- Infer surrounding architecture cautiously
|
|
35
|
-
- Focus on local friction signals
|
|
36
|
-
- Avoid blocking on missing information
|
|
37
|
-
|
|
38
|
-
Explore organically. Do NOT follow rigid heuristics.
|
|
39
|
-
|
|
40
|
-
Look for friction:
|
|
41
|
-
|
|
42
|
-
- Does understanding one concept require jumping across multiple files or layers?
|
|
43
|
-
- Are modules shallow (interface ≈ implementation complexity)?
|
|
44
|
-
- Are “pure functions” extracted for testability, but orchestration is fragile?
|
|
45
|
-
- Are modules tightly coupled through shared types or call sequences?
|
|
46
|
-
- Are there hidden integration risks between layers?
|
|
47
|
-
- What is hard or impossible to test from the outside?
|
|
48
|
-
|
|
49
|
-
The friction you encounter IS the signal.
|
|
50
|
-
|
|
51
|
-
### 2. Identify candidate(s) and frame the problem
|
|
52
|
-
|
|
53
|
-
Analyze the context and identify deepening opportunities.
|
|
54
|
-
|
|
55
|
-
If the input clearly implies a specific target (file, module, diff, or instruction):
|
|
56
|
-
- Select the most relevant candidate automatically
|
|
57
|
-
- Do NOT present multiple options
|
|
58
|
-
- Proceed directly to framing the problem space below
|
|
59
|
-
|
|
60
|
-
If the input is ambiguous or spans multiple concerns:
|
|
61
|
-
- Present a numbered list of candidates
|
|
62
|
-
|
|
63
|
-
Each candidate must include:
|
|
64
|
-
|
|
65
|
-
- **Cluster**
|
|
66
|
-
Modules / files / concepts involved
|
|
67
|
-
|
|
68
|
-
- **Why they're coupled**
|
|
69
|
-
Shared types, execution flow, ownership of a concept
|
|
70
|
-
|
|
71
|
-
- **Dependency category**
|
|
72
|
-
Classify using `REFERENCE.md`:
|
|
73
|
-
- In-process
|
|
74
|
-
- Local-substitutable
|
|
75
|
-
- Ports & adapters
|
|
76
|
-
- True external
|
|
77
|
-
|
|
78
|
-
- **Test impact**
|
|
79
|
-
- Which tests become obsolete
|
|
80
|
-
- What boundary tests would replace them
|
|
81
|
-
|
|
82
|
-
Then ask:
|
|
83
|
-
"Which of these would you like to explore?"
|
|
84
|
-
Wait for user input before continuing.
|
|
85
|
-
|
|
86
|
-
---
|
|
87
|
-
|
|
88
|
-
### Problem framing (execute immediately if a candidate is selected or inferred)
|
|
89
|
-
|
|
90
|
-
Explain the selected candidate clearly:
|
|
91
|
-
|
|
92
|
-
- Constraints a new interface must satisfy
|
|
93
|
-
- Dependencies it must handle
|
|
94
|
-
- What complexity needs to be hidden
|
|
95
|
-
|
|
96
|
-
Include a small illustrative code sketch to make constraints concrete.
|
|
97
|
-
This is NOT a proposal.
|
|
98
|
-
|
|
99
|
-
After writing this, immediately proceed to Step 5: Design multiple interfaces.
|
|
100
|
-
|
|
101
|
-
### 5. Design multiple interfaces
|
|
102
|
-
|
|
103
|
-
Spawn 3+ sub-agents in parallel using the subagent tool (`tasks: [...]`).
|
|
104
|
-
|
|
105
|
-
Each sub-agent gets:
|
|
106
|
-
- A focused technical brief derived from the provided context
|
|
107
|
-
- Clear coupling + dependency context
|
|
108
|
-
- A distinct design constraint
|
|
109
|
-
|
|
110
|
-
Required variants:
|
|
111
|
-
|
|
112
|
-
- Agent 1: Minimize interface (1–3 entry points max)
|
|
113
|
-
- Agent 2: Maximize flexibility / extensibility
|
|
114
|
-
- Agent 3: Optimize for the most common caller
|
|
115
|
-
- Agent 4 (if relevant): Ports & adapters oriented design
|
|
116
|
-
- ...
|
|
117
|
-
|
|
118
|
-
---
|
|
119
|
-
|
|
120
|
-
### Each sub-agent must output:
|
|
121
|
-
|
|
122
|
-
1. Interface signature (types, methods, params)
|
|
123
|
-
2. Usage example
|
|
124
|
-
3. Hidden complexity (what gets absorbed internally)
|
|
125
|
-
4. Dependency strategy (per `REFERENCE.md`)
|
|
126
|
-
5. Trade-offs
|
|
127
|
-
|
|
128
|
-
---
|
|
129
|
-
|
|
130
|
-
### Synthesis
|
|
131
|
-
|
|
132
|
-
After all designs:
|
|
133
|
-
|
|
134
|
-
- Compare approaches in prose
|
|
135
|
-
- Highlight meaningful differences (not superficial ones)
|
|
136
|
-
- Identify where each design wins/fails
|
|
137
|
-
|
|
138
|
-
Then give a strong recommendation:
|
|
139
|
-
- Pick the best design OR
|
|
140
|
-
- Propose a hybrid
|
|
141
|
-
|
|
142
|
-
Be opinionated.
|
|
143
|
-
|
|
144
|
-
---
|
|
145
|
-
|
|
146
|
-
### 6. User picks an interface (or accepts recommendation)
|
|
147
|
-
|
|
148
|
-
---
|
|
149
|
-
|
|
150
|
-
### 7. Create Branch
|
|
151
|
-
|
|
152
|
-
Create a new branch for implementation.
|
|
153
|
-
|
|
154
|
-
Branch name should reflect the domain concept being deepened.
|
|
155
|
-
|
|
156
|
-
Examples:
|
|
157
|
-
- deepen-payment-orchestration
|
|
158
|
-
- deepen-map-rendering-pipeline
|
|
159
|
-
|
|
160
|
-
---
|
|
161
|
-
|
|
162
|
-
## Behavior Rules
|
|
163
|
-
|
|
164
|
-
- Do NOT restate or summarize the provided input
|
|
165
|
-
- Do NOT overfit to file structure — think in conceptual modules
|
|
166
|
-
- Do NOT suggest incremental refactors — prefer boundary redefinition
|
|
167
|
-
- Do NOT preserve bad abstractions — collapse aggressively
|
|
168
|
-
- Prefer fewer, deeper modules over many shallow ones
|
|
169
|
-
- Tests must move to the boundary, not remain internal
|
|
170
|
-
|
|
171
|
-
---
|
|
172
|
-
|
|
173
|
-
## Handling Incomplete Context
|
|
174
|
-
|
|
175
|
-
- Make reasonable assumptions
|
|
176
|
-
- State them explicitly
|
|
177
|
-
- Continue without blocking
|
|
178
|
-
|
|
1
|
+
---
|
|
2
|
+
name: improve-codebase
|
|
3
|
+
description: improve codebase quality
|
|
4
|
+
disable-model-invocation: true
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Improve Codebase Architecture
|
|
8
|
+
|
|
9
|
+
Explore a codebase (or provided context) like an AI would. Surface architectural friction, identify deepening opportunities, and propose refactors as GitHub issue RFCs.
|
|
10
|
+
|
|
11
|
+
The input is already provided inline. Do NOT describe or restate it — use it directly.
|
|
12
|
+
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
## Core Principle
|
|
16
|
+
|
|
17
|
+
A **deep module** (John Ousterhout, "A Philosophy of Software Design") has a small interface hiding a large implementation.
|
|
18
|
+
|
|
19
|
+
Your goal:
|
|
20
|
+
- Reduce cognitive load
|
|
21
|
+
- Collapse shallow abstractions
|
|
22
|
+
- Move complexity behind stable boundaries
|
|
23
|
+
- Improve testability at module boundaries
|
|
24
|
+
|
|
25
|
+
---
|
|
26
|
+
|
|
27
|
+
## Process
|
|
28
|
+
|
|
29
|
+
### 1. Explore the context
|
|
30
|
+
|
|
31
|
+
Call the subagent tool with `{ agent: "explorer", task: "..." }` (do not pass a model) when possible.
|
|
32
|
+
|
|
33
|
+
If the context is partial:
|
|
34
|
+
- Infer surrounding architecture cautiously
|
|
35
|
+
- Focus on local friction signals
|
|
36
|
+
- Avoid blocking on missing information
|
|
37
|
+
|
|
38
|
+
Explore organically. Do NOT follow rigid heuristics.
|
|
39
|
+
|
|
40
|
+
Look for friction:
|
|
41
|
+
|
|
42
|
+
- Does understanding one concept require jumping across multiple files or layers?
|
|
43
|
+
- Are modules shallow (interface ≈ implementation complexity)?
|
|
44
|
+
- Are “pure functions” extracted for testability, but orchestration is fragile?
|
|
45
|
+
- Are modules tightly coupled through shared types or call sequences?
|
|
46
|
+
- Are there hidden integration risks between layers?
|
|
47
|
+
- What is hard or impossible to test from the outside?
|
|
48
|
+
|
|
49
|
+
The friction you encounter IS the signal.
|
|
50
|
+
|
|
51
|
+
### 2. Identify candidate(s) and frame the problem
|
|
52
|
+
|
|
53
|
+
Analyze the context and identify deepening opportunities.
|
|
54
|
+
|
|
55
|
+
If the input clearly implies a specific target (file, module, diff, or instruction):
|
|
56
|
+
- Select the most relevant candidate automatically
|
|
57
|
+
- Do NOT present multiple options
|
|
58
|
+
- Proceed directly to framing the problem space below
|
|
59
|
+
|
|
60
|
+
If the input is ambiguous or spans multiple concerns:
|
|
61
|
+
- Present a numbered list of candidates
|
|
62
|
+
|
|
63
|
+
Each candidate must include:
|
|
64
|
+
|
|
65
|
+
- **Cluster**
|
|
66
|
+
Modules / files / concepts involved
|
|
67
|
+
|
|
68
|
+
- **Why they're coupled**
|
|
69
|
+
Shared types, execution flow, ownership of a concept
|
|
70
|
+
|
|
71
|
+
- **Dependency category**
|
|
72
|
+
Classify using `REFERENCE.md`:
|
|
73
|
+
- In-process
|
|
74
|
+
- Local-substitutable
|
|
75
|
+
- Ports & adapters
|
|
76
|
+
- True external
|
|
77
|
+
|
|
78
|
+
- **Test impact**
|
|
79
|
+
- Which tests become obsolete
|
|
80
|
+
- What boundary tests would replace them
|
|
81
|
+
|
|
82
|
+
Then ask:
|
|
83
|
+
"Which of these would you like to explore?"
|
|
84
|
+
Wait for user input before continuing.
|
|
85
|
+
|
|
86
|
+
---
|
|
87
|
+
|
|
88
|
+
### Problem framing (execute immediately if a candidate is selected or inferred)
|
|
89
|
+
|
|
90
|
+
Explain the selected candidate clearly:
|
|
91
|
+
|
|
92
|
+
- Constraints a new interface must satisfy
|
|
93
|
+
- Dependencies it must handle
|
|
94
|
+
- What complexity needs to be hidden
|
|
95
|
+
|
|
96
|
+
Include a small illustrative code sketch to make constraints concrete.
|
|
97
|
+
This is NOT a proposal.
|
|
98
|
+
|
|
99
|
+
After writing this, immediately proceed to Step 5: Design multiple interfaces.
|
|
100
|
+
|
|
101
|
+
### 5. Design multiple interfaces
|
|
102
|
+
|
|
103
|
+
Spawn 3+ sub-agents in parallel using the subagent tool (`tasks: [...]`).
|
|
104
|
+
|
|
105
|
+
Each sub-agent gets:
|
|
106
|
+
- A focused technical brief derived from the provided context
|
|
107
|
+
- Clear coupling + dependency context
|
|
108
|
+
- A distinct design constraint
|
|
109
|
+
|
|
110
|
+
Required variants:
|
|
111
|
+
|
|
112
|
+
- Agent 1: Minimize interface (1–3 entry points max)
|
|
113
|
+
- Agent 2: Maximize flexibility / extensibility
|
|
114
|
+
- Agent 3: Optimize for the most common caller
|
|
115
|
+
- Agent 4 (if relevant): Ports & adapters oriented design
|
|
116
|
+
- ...
|
|
117
|
+
|
|
118
|
+
---
|
|
119
|
+
|
|
120
|
+
### Each sub-agent must output:
|
|
121
|
+
|
|
122
|
+
1. Interface signature (types, methods, params)
|
|
123
|
+
2. Usage example
|
|
124
|
+
3. Hidden complexity (what gets absorbed internally)
|
|
125
|
+
4. Dependency strategy (per `REFERENCE.md`)
|
|
126
|
+
5. Trade-offs
|
|
127
|
+
|
|
128
|
+
---
|
|
129
|
+
|
|
130
|
+
### Synthesis
|
|
131
|
+
|
|
132
|
+
After all designs:
|
|
133
|
+
|
|
134
|
+
- Compare approaches in prose
|
|
135
|
+
- Highlight meaningful differences (not superficial ones)
|
|
136
|
+
- Identify where each design wins/fails
|
|
137
|
+
|
|
138
|
+
Then give a strong recommendation:
|
|
139
|
+
- Pick the best design OR
|
|
140
|
+
- Propose a hybrid
|
|
141
|
+
|
|
142
|
+
Be opinionated.
|
|
143
|
+
|
|
144
|
+
---
|
|
145
|
+
|
|
146
|
+
### 6. User picks an interface (or accepts recommendation)
|
|
147
|
+
|
|
148
|
+
---
|
|
149
|
+
|
|
150
|
+
### 7. Create Branch
|
|
151
|
+
|
|
152
|
+
Create a new branch for implementation.
|
|
153
|
+
|
|
154
|
+
Branch name should reflect the domain concept being deepened.
|
|
155
|
+
|
|
156
|
+
Examples:
|
|
157
|
+
- deepen-payment-orchestration
|
|
158
|
+
- deepen-map-rendering-pipeline
|
|
159
|
+
|
|
160
|
+
---
|
|
161
|
+
|
|
162
|
+
## Behavior Rules
|
|
163
|
+
|
|
164
|
+
- Do NOT restate or summarize the provided input
|
|
165
|
+
- Do NOT overfit to file structure — think in conceptual modules
|
|
166
|
+
- Do NOT suggest incremental refactors — prefer boundary redefinition
|
|
167
|
+
- Do NOT preserve bad abstractions — collapse aggressively
|
|
168
|
+
- Prefer fewer, deeper modules over many shallow ones
|
|
169
|
+
- Tests must move to the boundary, not remain internal
|
|
170
|
+
|
|
171
|
+
---
|
|
172
|
+
|
|
173
|
+
## Handling Incomplete Context
|
|
174
|
+
|
|
175
|
+
- Make reasonable assumptions
|
|
176
|
+
- State them explicitly
|
|
177
|
+
- Continue without blocking
|
|
178
|
+
|
|
179
179
|
Do NOT ask for more information unless absolutely necessary.
|
|
@@ -1,166 +1,166 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: planger
|
|
3
|
-
description: Create decomposed planning for sub agent
|
|
4
|
-
argument-hint: "How i provide a good plan for subagent"
|
|
5
|
-
disable-model-invocation: true
|
|
6
|
-
---
|
|
7
|
-
|
|
8
|
-
# Planning Skill
|
|
9
|
-
|
|
10
|
-
## Goal
|
|
11
|
-
|
|
12
|
-
Create implementation plans that can be executed by a small coding model with:
|
|
13
|
-
|
|
14
|
-
- Limited context window
|
|
15
|
-
- No project knowledge
|
|
16
|
-
- No memory of previous conversation
|
|
17
|
-
- Weak architectural understanding
|
|
18
|
-
- No ability to infer missing steps
|
|
19
|
-
|
|
20
|
-
Assume the executor only knows what is written in the plan.
|
|
21
|
-
|
|
22
|
-
# Core Principles
|
|
23
|
-
|
|
24
|
-
## Discovery First
|
|
25
|
-
|
|
26
|
-
Never assume:
|
|
27
|
-
|
|
28
|
-
- File names
|
|
29
|
-
- File locations
|
|
30
|
-
- Ownership of behavior
|
|
31
|
-
- Existing abstractions
|
|
32
|
-
- Existing utilities
|
|
33
|
-
|
|
34
|
-
If the code has not been inspected, the plan must begin with discovery.
|
|
35
|
-
You research the codebase (using explore agent) → clarify with the user (using questions tool) → capture findings and decisions into a comprehensive plan. This iterative approach catches edge cases and non-obvious requirements BEFORE implementation begins.
|
|
36
|
-
|
|
37
|
-
## Simplicity First
|
|
38
|
-
|
|
39
|
-
Prefer the smallest maintainable solution that satisfies the requirement.
|
|
40
|
-
|
|
41
|
-
Avoid:
|
|
42
|
-
|
|
43
|
-
- New abstractions
|
|
44
|
-
- New services
|
|
45
|
-
- New dependencies
|
|
46
|
-
- Large refactors
|
|
47
|
-
- Generic frameworks
|
|
48
|
-
- Future-proofing for hypothetical requirements
|
|
49
|
-
|
|
50
|
-
Choose the lowest-complexity solution that works.
|
|
51
|
-
|
|
52
|
-
## Reuse Before Build
|
|
53
|
-
|
|
54
|
-
Before creating anything new (use explorer agent):
|
|
55
|
-
|
|
56
|
-
- Search for existing implementations
|
|
57
|
-
- Search for existing utilities
|
|
58
|
-
- Search for existing patterns
|
|
59
|
-
- Search for existing tests
|
|
60
|
-
|
|
61
|
-
Reuse existing code when reasonable.
|
|
62
|
-
|
|
63
|
-
Do not duplicate behavior unless duplication is clearly preferable.
|
|
64
|
-
|
|
65
|
-
## Scope Discipline
|
|
66
|
-
|
|
67
|
-
Only modify code required for the task.
|
|
68
|
-
|
|
69
|
-
Allowed:
|
|
70
|
-
|
|
71
|
-
- Small cleanup in touched files
|
|
72
|
-
- Remove unused imports
|
|
73
|
-
- Remove obvious dead code
|
|
74
|
-
- Improve nearby naming
|
|
75
|
-
|
|
76
|
-
Not allowed:
|
|
77
|
-
|
|
78
|
-
- Unrelated refactors
|
|
79
|
-
- Architecture changes
|
|
80
|
-
- Broad cleanup efforts
|
|
81
|
-
- Dependency migrations
|
|
82
|
-
|
|
83
|
-
# Task Structure
|
|
84
|
-
|
|
85
|
-
Every implementation task must contain:
|
|
86
|
-
|
|
87
|
-
## 1. Discovery
|
|
88
|
-
|
|
89
|
-
Describe:
|
|
90
|
-
|
|
91
|
-
- What to search for
|
|
92
|
-
- Where to search
|
|
93
|
-
- How to identify relevant code
|
|
94
|
-
|
|
95
|
-
Example:
|
|
96
|
-
|
|
97
|
-
Search for:
|
|
98
|
-
|
|
99
|
-
- Authorization
|
|
100
|
-
- Bearer
|
|
101
|
-
- Interceptor
|
|
102
|
-
- Refresh token
|
|
103
|
-
|
|
104
|
-
Inspect matching files and identify where authentication headers are attached.
|
|
105
|
-
|
|
106
|
-
## 2. Identification
|
|
107
|
-
|
|
108
|
-
Describe:
|
|
109
|
-
|
|
110
|
-
- Exact file(s) to modify
|
|
111
|
-
- Why those files own the behavior
|
|
112
|
-
- Why other files should not be modified
|
|
113
|
-
|
|
114
|
-
## 3. Change
|
|
115
|
-
|
|
116
|
-
Describe:
|
|
117
|
-
|
|
118
|
-
- Exact modification required
|
|
119
|
-
- Functions/classes affected
|
|
120
|
-
- Existing code to reuse
|
|
121
|
-
- New code to add
|
|
122
|
-
- Code explicitly not to add
|
|
123
|
-
|
|
124
|
-
The executor should know exactly what to implement.
|
|
125
|
-
|
|
126
|
-
## 4. Verification
|
|
127
|
-
|
|
128
|
-
Include:
|
|
129
|
-
|
|
130
|
-
### Success Cases
|
|
131
|
-
|
|
132
|
-
Expected working behavior.
|
|
133
|
-
|
|
134
|
-
### Failure Cases
|
|
135
|
-
|
|
136
|
-
Expected error behavior.
|
|
137
|
-
|
|
138
|
-
### Regression Checks
|
|
139
|
-
|
|
140
|
-
Existing behavior that must remain unchanged.
|
|
141
|
-
|
|
142
|
-
# Granularity Rule
|
|
143
|
-
|
|
144
|
-
A task is too large if it can be split into smaller independently verifiable work.
|
|
145
|
-
|
|
146
|
-
Keep decomposing until each task:
|
|
147
|
-
|
|
148
|
-
- Has one objective
|
|
149
|
-
- Has clear ownership
|
|
150
|
-
- Can be implemented independently
|
|
151
|
-
- Can be verified independently
|
|
152
|
-
|
|
153
|
-
Prefer 5 small tasks over 1 large task.
|
|
154
|
-
|
|
155
|
-
# Final Review
|
|
156
|
-
|
|
157
|
-
Before returning a plan verify:
|
|
158
|
-
|
|
159
|
-
- Discovery exists
|
|
160
|
-
- Ownership is justified
|
|
161
|
-
- Solution is the simplest acceptable approach
|
|
162
|
-
- Existing code is reused when possible
|
|
163
|
-
- No unnecessary abstractions are introduced
|
|
164
|
-
- Scope remains limited
|
|
165
|
-
- Verification is included
|
|
166
|
-
- Every step is executable without additional assumptions
|
|
1
|
+
---
|
|
2
|
+
name: planger
|
|
3
|
+
description: Create decomposed planning for sub agent
|
|
4
|
+
argument-hint: "How i provide a good plan for subagent"
|
|
5
|
+
disable-model-invocation: true
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Planning Skill
|
|
9
|
+
|
|
10
|
+
## Goal
|
|
11
|
+
|
|
12
|
+
Create implementation plans that can be executed by a small coding model with:
|
|
13
|
+
|
|
14
|
+
- Limited context window
|
|
15
|
+
- No project knowledge
|
|
16
|
+
- No memory of previous conversation
|
|
17
|
+
- Weak architectural understanding
|
|
18
|
+
- No ability to infer missing steps
|
|
19
|
+
|
|
20
|
+
Assume the executor only knows what is written in the plan.
|
|
21
|
+
|
|
22
|
+
# Core Principles
|
|
23
|
+
|
|
24
|
+
## Discovery First
|
|
25
|
+
|
|
26
|
+
Never assume:
|
|
27
|
+
|
|
28
|
+
- File names
|
|
29
|
+
- File locations
|
|
30
|
+
- Ownership of behavior
|
|
31
|
+
- Existing abstractions
|
|
32
|
+
- Existing utilities
|
|
33
|
+
|
|
34
|
+
If the code has not been inspected, the plan must begin with discovery.
|
|
35
|
+
You research the codebase (using explore agent) → clarify with the user (using questions tool) → capture findings and decisions into a comprehensive plan. This iterative approach catches edge cases and non-obvious requirements BEFORE implementation begins.
|
|
36
|
+
|
|
37
|
+
## Simplicity First
|
|
38
|
+
|
|
39
|
+
Prefer the smallest maintainable solution that satisfies the requirement.
|
|
40
|
+
|
|
41
|
+
Avoid:
|
|
42
|
+
|
|
43
|
+
- New abstractions
|
|
44
|
+
- New services
|
|
45
|
+
- New dependencies
|
|
46
|
+
- Large refactors
|
|
47
|
+
- Generic frameworks
|
|
48
|
+
- Future-proofing for hypothetical requirements
|
|
49
|
+
|
|
50
|
+
Choose the lowest-complexity solution that works.
|
|
51
|
+
|
|
52
|
+
## Reuse Before Build
|
|
53
|
+
|
|
54
|
+
Before creating anything new (use explorer agent):
|
|
55
|
+
|
|
56
|
+
- Search for existing implementations
|
|
57
|
+
- Search for existing utilities
|
|
58
|
+
- Search for existing patterns
|
|
59
|
+
- Search for existing tests
|
|
60
|
+
|
|
61
|
+
Reuse existing code when reasonable.
|
|
62
|
+
|
|
63
|
+
Do not duplicate behavior unless duplication is clearly preferable.
|
|
64
|
+
|
|
65
|
+
## Scope Discipline
|
|
66
|
+
|
|
67
|
+
Only modify code required for the task.
|
|
68
|
+
|
|
69
|
+
Allowed:
|
|
70
|
+
|
|
71
|
+
- Small cleanup in touched files
|
|
72
|
+
- Remove unused imports
|
|
73
|
+
- Remove obvious dead code
|
|
74
|
+
- Improve nearby naming
|
|
75
|
+
|
|
76
|
+
Not allowed:
|
|
77
|
+
|
|
78
|
+
- Unrelated refactors
|
|
79
|
+
- Architecture changes
|
|
80
|
+
- Broad cleanup efforts
|
|
81
|
+
- Dependency migrations
|
|
82
|
+
|
|
83
|
+
# Task Structure
|
|
84
|
+
|
|
85
|
+
Every implementation task must contain:
|
|
86
|
+
|
|
87
|
+
## 1. Discovery
|
|
88
|
+
|
|
89
|
+
Describe:
|
|
90
|
+
|
|
91
|
+
- What to search for
|
|
92
|
+
- Where to search
|
|
93
|
+
- How to identify relevant code
|
|
94
|
+
|
|
95
|
+
Example:
|
|
96
|
+
|
|
97
|
+
Search for:
|
|
98
|
+
|
|
99
|
+
- Authorization
|
|
100
|
+
- Bearer
|
|
101
|
+
- Interceptor
|
|
102
|
+
- Refresh token
|
|
103
|
+
|
|
104
|
+
Inspect matching files and identify where authentication headers are attached.
|
|
105
|
+
|
|
106
|
+
## 2. Identification
|
|
107
|
+
|
|
108
|
+
Describe:
|
|
109
|
+
|
|
110
|
+
- Exact file(s) to modify
|
|
111
|
+
- Why those files own the behavior
|
|
112
|
+
- Why other files should not be modified
|
|
113
|
+
|
|
114
|
+
## 3. Change
|
|
115
|
+
|
|
116
|
+
Describe:
|
|
117
|
+
|
|
118
|
+
- Exact modification required
|
|
119
|
+
- Functions/classes affected
|
|
120
|
+
- Existing code to reuse
|
|
121
|
+
- New code to add
|
|
122
|
+
- Code explicitly not to add
|
|
123
|
+
|
|
124
|
+
The executor should know exactly what to implement.
|
|
125
|
+
|
|
126
|
+
## 4. Verification
|
|
127
|
+
|
|
128
|
+
Include:
|
|
129
|
+
|
|
130
|
+
### Success Cases
|
|
131
|
+
|
|
132
|
+
Expected working behavior.
|
|
133
|
+
|
|
134
|
+
### Failure Cases
|
|
135
|
+
|
|
136
|
+
Expected error behavior.
|
|
137
|
+
|
|
138
|
+
### Regression Checks
|
|
139
|
+
|
|
140
|
+
Existing behavior that must remain unchanged.
|
|
141
|
+
|
|
142
|
+
# Granularity Rule
|
|
143
|
+
|
|
144
|
+
A task is too large if it can be split into smaller independently verifiable work.
|
|
145
|
+
|
|
146
|
+
Keep decomposing until each task:
|
|
147
|
+
|
|
148
|
+
- Has one objective
|
|
149
|
+
- Has clear ownership
|
|
150
|
+
- Can be implemented independently
|
|
151
|
+
- Can be verified independently
|
|
152
|
+
|
|
153
|
+
Prefer 5 small tasks over 1 large task.
|
|
154
|
+
|
|
155
|
+
# Final Review
|
|
156
|
+
|
|
157
|
+
Before returning a plan verify:
|
|
158
|
+
|
|
159
|
+
- Discovery exists
|
|
160
|
+
- Ownership is justified
|
|
161
|
+
- Solution is the simplest acceptable approach
|
|
162
|
+
- Existing code is reused when possible
|
|
163
|
+
- No unnecessary abstractions are introduced
|
|
164
|
+
- Scope remains limited
|
|
165
|
+
- Verification is included
|
|
166
|
+
- Every step is executable without additional assumptions
|