@use-the-fork/spindle 0.0.0-stage → 0.0.1
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/LICENSE +21 -0
- package/README.md +3 -2
- package/build/Assets/Blueprints/Catalog.js +110 -0
- package/build/Assets/Blueprints/agents/general.agent.md +67 -0
- package/build/Assets/Blueprints/agents/sdd-code-reviewer.agent.md +62 -0
- package/build/Assets/Blueprints/agents/sdd-code-slop-reviewer.agent.md +59 -0
- package/build/Assets/Blueprints/agents/sdd-implementer.agent.md +77 -0
- package/build/Assets/Blueprints/agents/sdd-orchestrator.agent.md +42 -0
- package/build/Assets/Blueprints/agents/sdd-re-review.agent.md +57 -0
- package/build/Assets/Blueprints/agents/sdd-reviewer.agent.md +89 -0
- package/build/Assets/Blueprints/agents/sdd-task-reviewer.agent.md +54 -0
- package/build/Assets/Blueprints/agents/shared-codebase-analyzer.agent.md +151 -0
- package/build/Assets/Blueprints/agents/shared-codebase-locator.agent.md +130 -0
- package/build/Assets/Blueprints/agents/shared-codebase-pattern-finder.agent.md +247 -0
- package/build/Assets/Blueprints/agents/shared-explore.agent.md +53 -0
- package/build/Assets/Blueprints/agents/shared-r.agent.md +17 -0
- package/build/Assets/Blueprints/agents/shared-rw.agent.md +17 -0
- package/build/Assets/Blueprints/agents/shared-rwx.agent.md +17 -0
- package/build/Assets/Blueprints/agents/shared-web-search-researcher.agent.md +122 -0
- package/build/Assets/Blueprints/instructions/code-commenting.instructions.md +39 -0
- package/build/Assets/Blueprints/instructions/source-architecture.instructions.md +15 -0
- package/build/Assets/Blueprints/skills/asd-ste100/CREDITS.MD +1 -0
- package/build/Assets/Blueprints/skills/asd-ste100/SKILL.md +83 -0
- package/build/Assets/Blueprints/skills/asd-ste100/examples/before-after.md +107 -0
- package/build/Assets/Blueprints/skills/asd-ste100/references/writing-rules.md +65 -0
- package/build/Assets/Blueprints/skills/author-agent/SKILL.md +26 -0
- package/build/Assets/Blueprints/skills/author-design/SKILL.md +38 -0
- package/build/Assets/Blueprints/skills/author-instruction/SKILL.md +28 -0
- package/build/Assets/Blueprints/skills/author-skill/SKILL.md +26 -0
- package/build/Assets/Blueprints/skills/grill/SKILL.md +33 -0
- package/build/Assets/Blueprints/skills/grill-design/SKILL.md +41 -0
- package/build/Assets/Blueprints/skills/grill-with-docs/SKILL.md +14 -0
- package/build/Assets/Blueprints/skills/implement/SKILL.md +79 -0
- package/build/Assets/Blueprints/skills/implement-spec/SKILL.md +34 -0
- package/build/Assets/Blueprints/skills/improve-codebase-architecture/HTML-REPORT.md +129 -0
- package/build/Assets/Blueprints/skills/improve-codebase-architecture/SKILL.md +74 -0
- package/build/Assets/Blueprints/skills/int-code-review/SKILL.md +76 -0
- package/build/Assets/Blueprints/skills/int-code-slop-review/SKILL.md +238 -0
- package/build/Assets/Blueprints/skills/int-code-slop-review/rules/_sections.md +36 -0
- package/build/Assets/Blueprints/skills/int-code-slop-review/rules/_template.md +42 -0
- package/build/Assets/Blueprints/skills/int-code-slop-review/rules/comments-closing-brace-labels.md +112 -0
- package/build/Assets/Blueprints/skills/int-code-slop-review/rules/comments-empty-docblocks.md +132 -0
- package/build/Assets/Blueprints/skills/int-code-slop-review/rules/comments-narration.md +118 -0
- package/build/Assets/Blueprints/skills/int-code-slop-review/rules/comments-placeholder.md +130 -0
- package/build/Assets/Blueprints/skills/int-code-slop-review/rules/defensive-generic-catch.md +153 -0
- package/build/Assets/Blueprints/skills/int-code-slop-review/rules/defensive-impossible-null.md +157 -0
- package/build/Assets/Blueprints/skills/int-code-slop-review/rules/defensive-missing-real.md +157 -0
- package/build/Assets/Blueprints/skills/int-code-slop-review/rules/naming-generic-placeholders.md +120 -0
- package/build/Assets/Blueprints/skills/int-code-slop-review/rules/naming-over-descriptive.md +108 -0
- package/build/Assets/Blueprints/skills/int-code-slop-review/rules/naming-suffix-abuse.md +167 -0
- package/build/Assets/Blueprints/skills/int-code-slop-review/rules/naming-type-in-name.md +100 -0
- package/build/Assets/Blueprints/skills/int-code-slop-review/rules/over-eng-dependency-creep.md +114 -0
- package/build/Assets/Blueprints/skills/int-code-slop-review/rules/over-eng-premature-interface.md +136 -0
- package/build/Assets/Blueprints/skills/int-code-slop-review/rules/over-eng-single-method-class.md +161 -0
- package/build/Assets/Blueprints/skills/int-code-slop-review/rules/over-eng-useless-wrapper.md +140 -0
- package/build/Assets/Blueprints/skills/int-code-slop-review/rules/style-as-any-escape.md +127 -0
- package/build/Assets/Blueprints/skills/int-code-slop-review/rules/style-debug-artifacts.md +144 -0
- package/build/Assets/Blueprints/skills/int-code-slop-review/rules/style-hyper-consistent.md +84 -0
- package/build/Assets/Blueprints/skills/int-code-slop-review/rules/style-no-hack-scars.md +113 -0
- package/build/Assets/Blueprints/skills/int-code-slop-review/rules/style-trivial-boilerplate.md +191 -0
- package/build/Assets/Blueprints/skills/int-code-slop-review/rules/test-doesnt-throw.md +132 -0
- package/build/Assets/Blueprints/skills/int-code-slop-review/rules/test-mirror-implementation.md +125 -0
- package/build/Assets/Blueprints/skills/int-code-slop-review/rules/test-mock-everything.md +148 -0
- package/build/Assets/Blueprints/skills/int-code-slop-review/rules/test-snapshot-abuse.md +131 -0
- package/build/Assets/Blueprints/skills/int-codebase-design/SKILL.md +116 -0
- package/build/Assets/Blueprints/skills/int-codebase-design/references/DEEPENING.md +37 -0
- package/build/Assets/Blueprints/skills/int-codebase-design/references/DESIGN-IT-TWICE.md +44 -0
- package/build/Assets/Blueprints/skills/int-domain-modeling/SKILL.md +78 -0
- package/build/Assets/Blueprints/skills/int-domain-modeling/references/ADR-FORMAT.md +47 -0
- package/build/Assets/Blueprints/skills/int-domain-modeling/references/GLOSSARY-FORMAT.md +60 -0
- package/build/Assets/Blueprints/skills/int-prototype/LOGIC.md +67 -0
- package/build/Assets/Blueprints/skills/int-prototype/SKILL.md +30 -0
- package/build/Assets/Blueprints/skills/int-prototype/UI.md +112 -0
- package/build/Assets/Blueprints/skills/int-retrospective/SKILL.md +88 -0
- package/build/Assets/Blueprints/skills/int-retrospective/assets/retrospective-prompt.md +38 -0
- package/build/Assets/Blueprints/skills/int-retrospective/references/assessment.md +56 -0
- package/build/Assets/Blueprints/skills/int-subagent-driven-dev/SKILL.md +64 -0
- package/build/Assets/Blueprints/skills/int-subagent-driven-dev/assets/implementer-prompt.md +40 -0
- package/build/Assets/Blueprints/skills/int-subagent-driven-dev/assets/reviewer-prompt.md +43 -0
- package/build/Assets/Blueprints/skills/int-subagent-driven-dev/references/aggregate-review.md +7 -0
- package/build/Assets/Blueprints/skills/int-subagent-driven-dev/references/corrective-rounds.md +72 -0
- package/build/Assets/Blueprints/skills/int-subagent-driven-dev/references/example-workflow.md +25 -0
- package/build/Assets/Blueprints/skills/int-subagent-driven-dev/references/full-spec.md +72 -0
- package/build/Assets/Blueprints/skills/int-subagent-driven-dev/references/implementer-corrections.md +9 -0
- package/build/Assets/Blueprints/skills/int-subagent-driven-dev/references/review-inputs.md +26 -0
- package/build/Assets/Blueprints/skills/int-subagent-driven-dev/references/verification-evidence.md +7 -0
- package/build/Assets/Blueprints/skills/int-test-driven-development/SKILL.md +51 -0
- package/build/Assets/Blueprints/skills/int-test-driven-development/references/mocking.md +31 -0
- package/build/Assets/Blueprints/skills/int-test-driven-development/references/tests.md +68 -0
- package/build/Assets/Blueprints/skills/int-testing-agent-guidance/SKILL.md +53 -0
- package/build/Assets/Blueprints/skills/int-verification-before-completion/SKILL.md +25 -0
- package/build/Assets/Blueprints/skills/int-writing-agents/SKILL.md +66 -0
- package/build/Assets/Blueprints/skills/int-writing-for-agents/SKILL.md +86 -0
- package/build/Assets/Blueprints/skills/int-writing-instruction/SKILL.md +57 -0
- package/build/Assets/Blueprints/skills/int-writing-skills/SKILL.md +129 -0
- package/build/Assets/Blueprints/skills/int-writing-skills/assets/interactive.md +83 -0
- package/build/Assets/Blueprints/skills/int-writing-skills/assets/reference.md +32 -0
- package/build/Assets/Blueprints/skills/int-writing-skills/references/arguments.md +50 -0
- package/build/Assets/Blueprints/skills/int-writing-skills/references/interactive-skills.md +53 -0
- package/build/Assets/Blueprints/skills/int-writing-skills/references/persuasion-principles.md +220 -0
- package/build/Assets/Blueprints/skills/int-writing-skills/references/reference-skills.md +20 -0
- package/build/Assets/Blueprints/skills/int-writing-skills/references/testing-skills.md +48 -0
- package/build/Assets/Blueprints/skills/retrospective/SKILL.md +16 -0
- package/build/Assets/Blueprints/skills/setup-project/SKILL.md +66 -0
- package/build/Assets/Blueprints/skills/to-spec/SKILL.md +53 -0
- package/build/Assets/Blueprints/skills/to-tickets/SKILL.md +49 -0
- package/build/Assets/Blueprints/skills/update-tooling/SKILL.md +86 -0
- package/build/Assets/Templates/Catalog.js +12 -0
- package/build/Assets/Templates/Catalog.ts +17 -0
- package/build/Assets/Templates/project/copilot-instructions.md +17 -0
- package/build/Assets/Templates/project/domain.md +51 -0
- package/build/Assets/Templates/project/ticket-tracker.md +33 -0
- package/build/Assets/Templates/sdd/design.md +25 -0
- package/build/Assets/Templates/sdd/spec.md +29 -0
- package/build/Assets/Templates/sdd/ticket.md +15 -0
- package/build/BlueprintManagement/BlueprintManagementServiceProvider.js +15 -0
- package/build/BlueprintManagement/Catalog/BlueprintCatalog.js +238 -0
- package/build/BlueprintManagement/Commands/BlueprintCommandOptions.js +9 -0
- package/build/BlueprintManagement/Commands/ConflictPolicy.js +6 -0
- package/build/BlueprintManagement/Commands/InitCommand.js +117 -0
- package/build/BlueprintManagement/Commands/Prompts.js +66 -0
- package/build/BlueprintManagement/Commands/UpdateCommand.js +86 -0
- package/build/BlueprintManagement/Handlers/Agents/AgentHandler.js +21 -0
- package/build/BlueprintManagement/Handlers/BlueprintHandlers.js +4 -0
- package/build/BlueprintManagement/Handlers/Instructions/InstructionHandler.js +21 -0
- package/build/BlueprintManagement/Handlers/Skills/SkillHandler.js +10 -0
- package/build/BlueprintManagement/Reconciliation/BlueprintCatalogPlanner.js +87 -0
- package/build/BlueprintManagement/Reconciliation/BlueprintRemovalCoordinator.js +78 -0
- package/build/BlueprintManagement/Services/BlueprintReconciliationService.js +391 -0
- package/build/BlueprintManagement/Services/InstallationService.js +54 -0
- package/build/BlueprintManagement/Support/BlueprintFiles.js +113 -0
- package/build/BlueprintManagement/Types/Blueprint.js +1 -0
- package/build/BlueprintManagement/Types/Installation.js +1 -0
- package/build/BlueprintManagement/Types/Reconciliation.js +1 -0
- package/build/BlueprintManagement/Versioning/BlueprintVersion.js +70 -0
- package/build/BlueprintManagement/Versioning/BlueprintVersioning.js +55 -0
- package/build/Commands/Command.js +3 -0
- package/build/Commands/CommandOptions.js +12 -0
- package/build/Config/Config.js +3 -0
- package/build/Foundation/Application.js +112 -0
- package/build/Foundation/ApplicationBuilder.js +23 -0
- package/build/Foundation/Bootstrap/Bootstrapper.js +2 -0
- package/build/Foundation/Bootstrap/DiscoverGitRoot.js +8 -0
- package/build/Foundation/Bootstrap/LoadConsoleArgs.js +47 -0
- package/build/Foundation/Bootstrap/LoadProjectConfiguration.js +144 -0
- package/build/Foundation/Bootstrap/RegisterProviders.js +12 -0
- package/build/Foundation/Bootstrap/RequireProjectConfiguration.js +14 -0
- package/build/Foundation/ConsoleInvocation.js +1 -0
- package/build/Foundation/Container.js +185 -0
- package/build/Foundation/FoundationServiceProvider.js +5 -0
- package/build/Foundation/Kernel.js +30 -0
- package/build/Foundation/Service.js +23 -0
- package/build/Foundation/ServiceProvider.js +12 -0
- package/build/Git/GitServiceProvider.js +8 -0
- package/build/Git/Services/GitService.js +26 -0
- package/build/Project/ProjectServiceProvider.js +8 -0
- package/build/Project/Services/ProjectService.js +124 -0
- package/build/SubagentDrivenDevelopment/Commands/ChecksRecordCommand.js +35 -0
- package/build/SubagentDrivenDevelopment/Commands/ChecksRequireCommand.js +33 -0
- package/build/SubagentDrivenDevelopment/Commands/ClaimCommand.js +23 -0
- package/build/SubagentDrivenDevelopment/Commands/CorrectCommand.js +37 -0
- package/build/SubagentDrivenDevelopment/Commands/CreateCommand.js +26 -0
- package/build/SubagentDrivenDevelopment/Commands/FindingCreateCommand.js +39 -0
- package/build/SubagentDrivenDevelopment/Commands/FindingUpdateCommand.js +36 -0
- package/build/SubagentDrivenDevelopment/Commands/FinishCommand.js +23 -0
- package/build/SubagentDrivenDevelopment/Commands/ImplementCommand.js +23 -0
- package/build/SubagentDrivenDevelopment/Commands/NextCommand.js +21 -0
- package/build/SubagentDrivenDevelopment/Commands/ReadyCommand.js +21 -0
- package/build/SubagentDrivenDevelopment/Commands/RequirementsDecideCommand.js +33 -0
- package/build/SubagentDrivenDevelopment/Commands/ResumeCommand.js +31 -0
- package/build/SubagentDrivenDevelopment/Commands/ReviewCommand.js +55 -0
- package/build/SubagentDrivenDevelopment/Commands/ReviewRequireCommand.js +12 -0
- package/build/SubagentDrivenDevelopment/Commands/StatusCommand.js +21 -0
- package/build/SubagentDrivenDevelopment/Commands/SubmitCommand.js +59 -0
- package/build/SubagentDrivenDevelopment/Commands/TicketCommentCommand.js +24 -0
- package/build/SubagentDrivenDevelopment/Commands/TicketCreateCommand.js +25 -0
- package/build/SubagentDrivenDevelopment/Commands/TicketUpdateCommand.js +31 -0
- package/build/SubagentDrivenDevelopment/Commands/groups.js +36 -0
- package/build/SubagentDrivenDevelopment/Evidence/GitEvidence.js +449 -0
- package/build/SubagentDrivenDevelopment/Evidence/ReportEvidence.js +80 -0
- package/build/SubagentDrivenDevelopment/Models/Assignments.js +1 -0
- package/build/SubagentDrivenDevelopment/Models/Evidence.js +1 -0
- package/build/SubagentDrivenDevelopment/Models/Findings.js +1 -0
- package/build/SubagentDrivenDevelopment/Models/Options.js +1 -0
- package/build/SubagentDrivenDevelopment/Models/Workflow.js +16 -0
- package/build/SubagentDrivenDevelopment/Persistence/AssignmentSchema.js +155 -0
- package/build/SubagentDrivenDevelopment/Persistence/CheckSchema.js +71 -0
- package/build/SubagentDrivenDevelopment/Persistence/FeatureWorkspace.js +76 -0
- package/build/SubagentDrivenDevelopment/Persistence/FileSystem.js +28 -0
- package/build/SubagentDrivenDevelopment/Persistence/FindingSchema.js +81 -0
- package/build/SubagentDrivenDevelopment/Persistence/LedgerRepository.js +322 -0
- package/build/SubagentDrivenDevelopment/Persistence/PathSafety.js +62 -0
- package/build/SubagentDrivenDevelopment/Persistence/ProgressSchema.js +95 -0
- package/build/SubagentDrivenDevelopment/Persistence/ReadinessReader.js +40 -0
- package/build/SubagentDrivenDevelopment/Persistence/ReviewSchema.js +68 -0
- package/build/SubagentDrivenDevelopment/Persistence/TicketRepository.js +147 -0
- package/build/SubagentDrivenDevelopment/Persistence/WorkspaceTransaction.js +282 -0
- package/build/SubagentDrivenDevelopment/Policies/AcceptancePolicy.js +100 -0
- package/build/SubagentDrivenDevelopment/Policies/AssignmentPolicy.js +36 -0
- package/build/SubagentDrivenDevelopment/Policies/CheckPolicy.js +93 -0
- package/build/SubagentDrivenDevelopment/Policies/FindingPolicy.js +53 -0
- package/build/SubagentDrivenDevelopment/Policies/InputValidation.js +36 -0
- package/build/SubagentDrivenDevelopment/Policies/ReadinessPolicy.js +26 -0
- package/build/SubagentDrivenDevelopment/Policies/RequiredReviewers.js +12 -0
- package/build/SubagentDrivenDevelopment/Policies/ReviewPolicy.js +87 -0
- package/build/SubagentDrivenDevelopment/Policies/WorkflowPolicy.js +85 -0
- package/build/SubagentDrivenDevelopment/Services/AssignmentService.js +269 -0
- package/build/SubagentDrivenDevelopment/Services/ChecksService.js +319 -0
- package/build/SubagentDrivenDevelopment/Services/CorrectionService.js +273 -0
- package/build/SubagentDrivenDevelopment/Services/DeliveryCorrectionService.js +253 -0
- package/build/SubagentDrivenDevelopment/Services/DeliveryFindingService.js +302 -0
- package/build/SubagentDrivenDevelopment/Services/DeliveryService.js +160 -0
- package/build/SubagentDrivenDevelopment/Services/DeliverySubmissionService.js +273 -0
- package/build/SubagentDrivenDevelopment/Services/FeatureCreationService.js +138 -0
- package/build/SubagentDrivenDevelopment/Services/FeatureInspectionService.js +399 -0
- package/build/SubagentDrivenDevelopment/Services/FindingService.js +392 -0
- package/build/SubagentDrivenDevelopment/Services/IntegrationService.js +258 -0
- package/build/SubagentDrivenDevelopment/Services/ReadinessService.js +21 -0
- package/build/SubagentDrivenDevelopment/Services/RequirementsService.js +216 -0
- package/build/SubagentDrivenDevelopment/Services/ReviewService.js +471 -0
- package/build/SubagentDrivenDevelopment/Services/SubmissionService.js +299 -0
- package/build/SubagentDrivenDevelopment/Services/TicketService.js +186 -0
- package/build/SubagentDrivenDevelopment/SubagentDrivenDevelopmentServiceProvider.js +113 -0
- package/build/Support/Records.js +5 -0
- package/build/Support/Repository.js +139 -0
- package/build/Support/Stacks.js +10 -0
- package/build/TemplateRendering/Computed/ComputedContextService.js +13 -0
- package/build/TemplateRendering/Computed/ComputedVariableProvider.js +6 -0
- package/build/TemplateRendering/Computed/ComputedVariableProviders.js +6 -0
- package/build/TemplateRendering/Computed/Providers/InternalSkillDescriptionProvider.js +6 -0
- package/build/TemplateRendering/Computed/Providers/SpindlePackageManagerProvider.js +11 -0
- package/build/TemplateRendering/Computed/ResolveRenderContext.js +18 -0
- package/build/TemplateRendering/Rendering/RenderText.js +43 -0
- package/build/TemplateRendering/TemplateRenderingServiceProvider.js +8 -0
- package/build/Tooling/Commands/ToolingAddCommand.js +29 -0
- package/build/Tooling/Commands/ToolingListCommand.js +19 -0
- package/build/Tooling/Commands/ToolingRemoveCommand.js +19 -0
- package/build/Tooling/Commands/ToolingUpdateCommand.js +30 -0
- package/build/Tooling/Commands/groups.js +4 -0
- package/build/Tooling/Models/ToolingEntry.js +1 -0
- package/build/Tooling/Services/ToolingService.js +278 -0
- package/build/Tooling/ToolingServiceProvider.js +15 -0
- package/build/cli.js +36 -0
- package/build/index.js +31 -0
- package/package.json +54 -3
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: grill-design
|
|
3
|
+
description: "Challenge and refine an existing design through an interview, updating the design and relevant domain documentation."
|
|
4
|
+
argument-hint: "[design.md path or feature directory]"
|
|
5
|
+
disable-model-invocation: true
|
|
6
|
+
user-invocable: true
|
|
7
|
+
metadata:
|
|
8
|
+
spindle:
|
|
9
|
+
version: 1.1.0
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
Challenge and refine an existing design through an interview, keeping the selected design as the source of truth. A feature design is optional, but when present it precedes the spec and tickets.
|
|
13
|
+
|
|
14
|
+
## Select the design
|
|
15
|
+
|
|
16
|
+
- **The user supplies a design:** read that file. For a supplied numbered SDD feature directory, read its `design.md`. An explicit target takes precedence over discovery and may have `spec.md`, `sdd.json`, and issue data alongside it. If the target is missing or unreadable, report the problem and ask for a corrected path; keep the target unresolved.
|
|
17
|
+
- **No design supplied:** scan numbered feature directories directly under `.scratch/` for `design.md` files whose sibling `spec.md` is still an unfilled template. Do not require `design.md` to be the directory's only file; SDD workspaces also contain their spec template, ledger, and tracker folders. Inspect candidates and present their paths; ask the user which design to grill, even when there is only one. Never automatically pick the newest.
|
|
18
|
+
- If `.scratch/` is absent or no candidates qualify, explain that no unfilled SDD design was found and ask for a design path. Do not substitute an ineligible design or create a new one.
|
|
19
|
+
|
|
20
|
+
**Complete when:** the user has supplied or selected one readable design.
|
|
21
|
+
|
|
22
|
+
## Required skills
|
|
23
|
+
|
|
24
|
+
Before acting, read and understand each required skill:
|
|
25
|
+
|
|
26
|
+
- **REQUIRED:** `grill`
|
|
27
|
+
- **REQUIRED:** `int-domain-modeling`
|
|
28
|
+
|
|
29
|
+
These skills define the interview and domain-modeling workflows.
|
|
30
|
+
|
|
31
|
+
## Refine and finish
|
|
32
|
+
|
|
33
|
+
Aim for the smallest design that satisfies the agreed goal and success criteria. Challenge unnecessary requirements and complexity as actively as missing decisions. Recommend additional scope only when needed to meet those criteria, explaining the concrete failure it prevents; optional improvements remain out of scope unless the user expands the goal.
|
|
34
|
+
|
|
35
|
+
Read the selected design and relevant supporting context, including its feature spec when present. Ground the interview in the proposal, verified facts, and unresolved decisions. When a spec already contains substantive content, preserve the design-before-spec sequence: do not silently reorder or overwrite either document.
|
|
36
|
+
|
|
37
|
+
As answers settle decisions, update the selected design in place, reconciling affected passages and preserving unrelated content. Keep unresolved questions explicit; recommendations are not accepted decisions. Recording accepted decisions in the design and relevant domain documentation is part of the interview: the shared-understanding confirmation gate in `grill` does not defer these updates.
|
|
38
|
+
|
|
39
|
+
Once every decision branch within the agreed scope is settled and the design and relevant domain documentation are consistent, summarize the refinements, link the changed documents, and ask the user to confirm shared understanding. Revise and repeat if corrections remain.
|
|
40
|
+
|
|
41
|
+
Stop when the user confirms the refined design. Do not generate a spec, tickets, or implementation, or automatically invoke a delivery workflow.
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: grill-with-docs
|
|
3
|
+
description: A relentless interview to sharpen a plan or design, which also creates docs (ADR's and glossary) as we go.
|
|
4
|
+
disable-model-invocation: true
|
|
5
|
+
user-invocable: true
|
|
6
|
+
metadata:
|
|
7
|
+
spindle:
|
|
8
|
+
version: 1.0.1
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
Before acting, read and understand each required skill:
|
|
12
|
+
|
|
13
|
+
- **REQUIRED:** `grill`
|
|
14
|
+
- **REQUIRED:** `int-domain-modeling`
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: implement
|
|
3
|
+
description: "Implement a piece of work based on a spec or set of tickets."
|
|
4
|
+
disable-model-invocation: true
|
|
5
|
+
metadata:
|
|
6
|
+
spindle:
|
|
7
|
+
version: 1.0.2
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# Implement
|
|
11
|
+
|
|
12
|
+
Implement the user's task or supplied ticket/spec, verify it, and obtain a clean code review before committing.
|
|
13
|
+
|
|
14
|
+
## Workflow
|
|
15
|
+
|
|
16
|
+
Announce `Step <node ID> - <node label>` before acting on each node, including resumed steps and loop re-entries. After each decision, state its result and selected branch.
|
|
17
|
+
|
|
18
|
+
```mermaid
|
|
19
|
+
flowchart TD
|
|
20
|
+
A[Prepare task and checkout] --> B[Implement]
|
|
21
|
+
A -- Ambiguous task --> X[Ask and stop]
|
|
22
|
+
A -- Dirty worktree --> X
|
|
23
|
+
B --> C[Verify implementation]
|
|
24
|
+
C -- Required check fails --> X
|
|
25
|
+
C -- Checks pass --> D[Freeze review snapshot]
|
|
26
|
+
D --> E[Review implementation]
|
|
27
|
+
E -- Snapshot changed --> C
|
|
28
|
+
E -- Commit blockers --> F[Fix blockers]
|
|
29
|
+
F --> C
|
|
30
|
+
E -- No blockers --> G[Commit and report]
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
### A. Prepare task and checkout
|
|
34
|
+
|
|
35
|
+
If the user supplies a ticket reference, read it and state its title; ask if the reference is ambiguous. Preserve the original task description and any supplied ticket/spec paths for the review. Before changing files, check `git status --short`. If staged, unstaged, or untracked changes already exist, preserve them, ask the user to clean or separately preserve them, and stop. Once clean, record `git rev-parse HEAD` as the implementation base before making changes.
|
|
36
|
+
|
|
37
|
+
**Complete when:** the task and requirements context are clear, the worktree is clean, and the starting base revision is recorded; otherwise stop without editing.
|
|
38
|
+
|
|
39
|
+
### B. Implement
|
|
40
|
+
|
|
41
|
+
Implement the requested work. Call `int-test-driven-development` at pre-agreed seams where appropriate. Keep changes within the task scope.
|
|
42
|
+
|
|
43
|
+
**Complete when:** the requested implementation is complete and its changed files are known, selecting C.
|
|
44
|
+
|
|
45
|
+
### C. Verify implementation
|
|
46
|
+
|
|
47
|
+
Run applicable project completion checks through the repository's Just recipes. Call `int-verification-before-completion` for evidence-backed claims. If a required check fails or is unavailable, report the blocker and do not proceed to commit.
|
|
48
|
+
|
|
49
|
+
**Complete when:** required checks pass and their results identify the snapshot they cover, selecting D; otherwise stop with the failing or unavailable checks.
|
|
50
|
+
|
|
51
|
+
### D. Freeze review snapshot
|
|
52
|
+
|
|
53
|
+
Stop implementation edits while review runs. Prepare review inputs using the existing [review-input contract](../int-subagent-driven-dev/references/review-inputs.md): absolute workspace, recorded starting base, current head, exact snapshot identity, complete changed-file inventory and diff including staged, unstaged, and untracked changes, original task description and known ticket/spec pointers, and verification evidence for the same snapshot. Use `just tool::git-detailed-diff` to capture staged, unstaged, and untracked content. Keep the implementation frozen until review returns.
|
|
54
|
+
|
|
55
|
+
**Complete when:** the caller can supply a complete, internally consistent review snapshot and matching verification evidence; otherwise stop and identify the gap.
|
|
56
|
+
|
|
57
|
+
### E. Review implementation
|
|
58
|
+
|
|
59
|
+
Load and follow `int-code-review`. Supply the frozen review inputs and task requirements context. If the review reports a snapshot mismatch or incomplete evidence, do not commit; refresh the snapshot and required checks before reviewing again.
|
|
60
|
+
|
|
61
|
+
**Complete when:** review findings identify the current snapshot and explicitly classify each finding as blocking or non-blocking, selecting F for blockers or G when there are none.
|
|
62
|
+
|
|
63
|
+
### F. Fix blockers
|
|
64
|
+
|
|
65
|
+
Fix every substantiated requirement defect and confirmed mandatory repository-rule violation marked as a commit blocker. Keep advisory smells and optional recommendations separate; do not treat them as blockers. After changing code, rerun affected required checks, prepare a new frozen snapshot, and rerun `int-code-review`. Do not commit while any blocker remains.
|
|
66
|
+
|
|
67
|
+
**Complete when:** the updated snapshot has passing required checks and a current review with no commit blockers, selecting G; unresolved or unverified blockers remain here.
|
|
68
|
+
|
|
69
|
+
### G. Commit and report
|
|
70
|
+
|
|
71
|
+
Commit only the reviewed task changes after confirming the reviewed snapshot is still current and no commit blockers remain. Report the commit and verification and review outcomes.
|
|
72
|
+
|
|
73
|
+
**Complete when:** the reviewed changes are committed and the caller receives the commit and evidence summary.
|
|
74
|
+
|
|
75
|
+
### X. Ask and stop
|
|
76
|
+
|
|
77
|
+
Request the missing task clarification, clean-worktree action, or verification correction. Preserve existing work and do not commit.
|
|
78
|
+
|
|
79
|
+
**Complete when:** the blocker and required next action are explicit; stop.
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: implement-spec
|
|
3
|
+
description: "Implement the result of /to-spec and /to-tickets in code."
|
|
4
|
+
disable-model-invocation: true
|
|
5
|
+
metadata:
|
|
6
|
+
spindle:
|
|
7
|
+
version: 1.0.0
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# Implement a Spec
|
|
11
|
+
|
|
12
|
+
Deliver the supplied spec and all associated tickets in the existing checkout. Require configured tracker guidance; if absent, request `/setup-project`.
|
|
13
|
+
|
|
14
|
+
## Required Skills
|
|
15
|
+
|
|
16
|
+
Before acting, read and follow each required skill:
|
|
17
|
+
|
|
18
|
+
- `int-subagent-driven-dev`
|
|
19
|
+
|
|
20
|
+
## Steps
|
|
21
|
+
|
|
22
|
+
1. **Bind the whole-spec assignment.** Locate the full spec, every ticket and its comments, and tracker guidance. Supply accessible context pointers rather than duplicating their contents. Record the existing checkout, starting revision, existing work and permissions.
|
|
23
|
+
|
|
24
|
+
**Complete when:** the complete graph and delivery inputs are available to one controller, or missing requirements are reported for triage.
|
|
25
|
+
|
|
26
|
+
2. **Execute the complete graph.** Follow [int-subagent-driven-dev](../int-subagent-driven-dev/SKILL.md) once with the entire graph and explicit ownership of frontier selection, sequential ticket delivery, aggregate review, and retrospective. Do not call it as a separate standalone delivery for every ticket. Its dependency validation, shared-checkout workflow, resume handling, review budgets, and completion criteria are authoritative. Accepted work does not unblock dependents until integrated and verified in the existing checkout.
|
|
27
|
+
|
|
28
|
+
If the tracker calls for a PR, or the user requests one, open an authorized draft during execution after the first authorized commit is available; retain it as draft while delivery is incomplete.
|
|
29
|
+
|
|
30
|
+
**Complete when:** its final report reconciles every ticket and requirement, one aggregate review, fresh verification and one retrospective for the spec, or explicitly identifies unfinished work and blockers.
|
|
31
|
+
|
|
32
|
+
3. **Apply authorized publication transitions.** Mark an authorized draft ready only after the full delivery's review and checks pass. Apply closing references and ticket closure only with the user's authorization.
|
|
33
|
+
|
|
34
|
+
**Complete when:** the report identifies the verified checkout snapshot, ticket states, retrospective pointer, and any authorized PR/closure actions; unresolved work remains open with its limitations reported.
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
# HTML Report Format
|
|
2
|
+
|
|
3
|
+
The architectural review is rendered as a single self-contained HTML file in the OS temp directory. Tailwind and Mermaid both come from CDNs. Mermaid handles graph-shaped diagrams reliably; hand-built divs and inline SVG handle the more editorial visuals (mass diagrams, cross-sections). Mix the two: don't lean on Mermaid for everything, it'll start to look generic.
|
|
4
|
+
|
|
5
|
+
## Scaffold
|
|
6
|
+
|
|
7
|
+
```html
|
|
8
|
+
<!doctype html>
|
|
9
|
+
<html lang="en">
|
|
10
|
+
<head>
|
|
11
|
+
<meta charset="utf-8" />
|
|
12
|
+
<title>Architecture review for {% raw %}{{repo name}}{% endraw %}</title>
|
|
13
|
+
<script src="https://cdn.tailwindcss.com"></script>
|
|
14
|
+
<script type="module">
|
|
15
|
+
import mermaid from "https://cdn.jsdelivr.net/npm/mermaid@11/dist/mermaid.esm.min.mjs";
|
|
16
|
+
mermaid.initialize({ startOnLoad: true, theme: "neutral", securityLevel: "loose" });
|
|
17
|
+
</script>
|
|
18
|
+
<style>
|
|
19
|
+
/* small custom layer for things Tailwind doesn't cover cleanly:
|
|
20
|
+
dashed seam lines, hand-drawn-feeling arrow heads, etc. */
|
|
21
|
+
.seam {
|
|
22
|
+
stroke-dasharray: 4 4;
|
|
23
|
+
}
|
|
24
|
+
.leak {
|
|
25
|
+
stroke: #dc2626;
|
|
26
|
+
}
|
|
27
|
+
.deep {
|
|
28
|
+
background: linear-gradient(135deg, #0f172a, #1e293b);
|
|
29
|
+
}
|
|
30
|
+
</style>
|
|
31
|
+
</head>
|
|
32
|
+
<body class="bg-stone-50 font-sans text-slate-900">
|
|
33
|
+
<main class="mx-auto max-w-5xl space-y-12 px-6 py-12">
|
|
34
|
+
<header>...</header>
|
|
35
|
+
<section id="candidates" class="space-y-10">...</section>
|
|
36
|
+
<section id="top-recommendation">...</section>
|
|
37
|
+
</main>
|
|
38
|
+
</body>
|
|
39
|
+
</html>
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
## Header
|
|
43
|
+
|
|
44
|
+
Repo name, date, and a compact legend: solid box = module, dashed line = seam, red arrow = leakage, thick dark box = deep module. No introduction paragraph. Straight into the candidates.
|
|
45
|
+
|
|
46
|
+
## Candidate card
|
|
47
|
+
|
|
48
|
+
The diagrams carry the weight. Prose is sparse, plain, and uses the glossary terms (from the `/int-codebase-design` skill) without ceremony.
|
|
49
|
+
|
|
50
|
+
Each candidate is one `<article>`:
|
|
51
|
+
|
|
52
|
+
- **Title**: short, names the deepening (e.g. "Collapse the Order intake pipeline").
|
|
53
|
+
- **Badge row**: recommendation strength (`Strong` = emerald, `Worth exploring` = amber, `Speculative` = slate), plus a tag for the dependency category (`in-process`, `local-substitutable`, `ports & adapters`, `mock`).
|
|
54
|
+
- **Files**: monospaced list, `font-mono text-sm`.
|
|
55
|
+
- **Before / After diagram**: the centrepiece. Two columns, side by side. See patterns below.
|
|
56
|
+
- **Problem**: one sentence. What hurts.
|
|
57
|
+
- **Solution**: one sentence. What changes.
|
|
58
|
+
- **Wins**: bullets, ≤6 words each. e.g. "Tests hit one interface", "Pricing logic stops leaking", "Delete 4 shallow wrappers".
|
|
59
|
+
- **ADR callout** (if applicable): one line in an amber-tinted box.
|
|
60
|
+
|
|
61
|
+
No paragraphs of explanation. If the diagram needs a paragraph to be understood, redraw the diagram.
|
|
62
|
+
|
|
63
|
+
## Diagram patterns
|
|
64
|
+
|
|
65
|
+
Pick the pattern that fits the candidate. Mix them. Don't make every diagram look the same. Variety is part of the point.
|
|
66
|
+
|
|
67
|
+
### Mermaid graph (the workhorse for dependencies / call flow)
|
|
68
|
+
|
|
69
|
+
Use a Mermaid `flowchart` or `graph` when the point is "X calls Y calls Z, and look at the mess." Wrap it in a Tailwind-styled card so it doesn't feel parachuted in. Style with classDef to colour leakage edges red and the deep module dark. Sequence diagrams work well for "before: 6 round-trips; after: 1."
|
|
70
|
+
|
|
71
|
+
```html
|
|
72
|
+
<div class="rounded-lg border border-slate-200 bg-white p-4">
|
|
73
|
+
<pre class="mermaid">
|
|
74
|
+
flowchart LR
|
|
75
|
+
A[OrderHandler] --> B[OrderValidator]
|
|
76
|
+
B --> C[OrderRepo]
|
|
77
|
+
C -.leak.-> D[PricingClient]
|
|
78
|
+
classDef leak stroke:#dc2626,stroke-width:2px;
|
|
79
|
+
class C,D leak
|
|
80
|
+
</pre>
|
|
81
|
+
</div>
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
### Hand-built boxes-and-arrows (when Mermaid's layout fights you)
|
|
85
|
+
|
|
86
|
+
Modules as `<div>`s with borders and labels. Arrows as inline SVG `<line>` or `<path>` elements positioned absolutely over a relative container. Reach for this when you want the "after" diagram to feel like one thick-bordered deep module with greyed-out internals, since Mermaid won't render that with the right weight.
|
|
87
|
+
|
|
88
|
+
### Cross-section (good for layered shallowness)
|
|
89
|
+
|
|
90
|
+
Stack horizontal bands (`h-12 border-l-4`) to show layers a call passes through. Before: 6 thin layers each doing nothing. After: 1 thick band labelled with the consolidated responsibility.
|
|
91
|
+
|
|
92
|
+
### Mass diagram (good for "interface as wide as implementation")
|
|
93
|
+
|
|
94
|
+
Two rectangles per module: one for interface surface area, one for implementation. Before: interface rectangle is nearly as tall as the implementation rectangle (shallow). After: interface rectangle is short, implementation rectangle is tall (deep).
|
|
95
|
+
|
|
96
|
+
### Call-graph collapse
|
|
97
|
+
|
|
98
|
+
Before: a tree of function calls rendered as nested boxes. After: the same tree collapsed into one box, with the now-internal calls shown faded inside it.
|
|
99
|
+
|
|
100
|
+
## Style guidance
|
|
101
|
+
|
|
102
|
+
- Lean editorial, not corporate-dashboard. Generous whitespace. Serif optional for headings (`font-serif` works well with stone/slate).
|
|
103
|
+
- Colour sparingly: one accent (emerald or indigo) plus red for leakage and amber for warnings.
|
|
104
|
+
- Keep diagrams ~320px tall so before/after sits comfortably side by side without scrolling.
|
|
105
|
+
- Use `text-xs uppercase tracking-wider` for module labels inside diagrams, so they read as schematic, not as UI.
|
|
106
|
+
- The only scripts are the Tailwind CDN and the Mermaid ESM import. The report is otherwise static: no app code, no interactivity beyond Mermaid's own rendering.
|
|
107
|
+
|
|
108
|
+
## Top recommendation section
|
|
109
|
+
|
|
110
|
+
One larger card. Candidate name, one sentence on why, anchor link to its card. That's it.
|
|
111
|
+
|
|
112
|
+
## Tone
|
|
113
|
+
|
|
114
|
+
Plain English, concise, but the architectural nouns and verbs come straight from the `/int-codebase-design` skill. Concision is not an excuse to drift.
|
|
115
|
+
|
|
116
|
+
**Use exactly:** module, interface, implementation, depth, deep, shallow, seam, adapter, leverage, locality.
|
|
117
|
+
|
|
118
|
+
**Never substitute:** component, service, unit (for module) · API, signature (for interface) · boundary (for seam) · layer, wrapper (for module, when you mean module).
|
|
119
|
+
|
|
120
|
+
**Phrasings that fit the style:**
|
|
121
|
+
|
|
122
|
+
- "Order intake module is shallow: interface nearly matches the implementation."
|
|
123
|
+
- "Pricing leaks across the seam."
|
|
124
|
+
- "Deepen: one interface, one place to test."
|
|
125
|
+
- "Two adapters justify the seam: HTTP in prod, in-memory in tests."
|
|
126
|
+
|
|
127
|
+
**Wins bullets** name the gain in glossary terms: _"locality: bugs concentrate in one module"_, _"leverage: one interface, N call sites"_, _"interface shrinks; implementation absorbs the wrappers"_. Don't write _"easier to maintain"_ or _"cleaner code"_, because those terms aren't in the glossary and don't earn their place.
|
|
128
|
+
|
|
129
|
+
No hedging, no throat-clearing, no "it's worth noting that…". If a sentence could be a bullet, make it a bullet. If a bullet could be cut, cut it. If a term isn't in the `/int-codebase-design` glossary, reach for one that is before inventing a new one.
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: improve-codebase-architecture
|
|
3
|
+
description: Scan a codebase for deepening opportunities, present them as a visual HTML report, then grill through whichever one you pick.
|
|
4
|
+
disable-model-invocation: true
|
|
5
|
+
metadata:
|
|
6
|
+
spindle:
|
|
7
|
+
version: 1.0.0
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# Improve Codebase Architecture
|
|
11
|
+
|
|
12
|
+
Surface architectural friction and propose **deepening opportunities**: refactors that turn shallow modules into deep ones. The aim is testability and AI-navigability.
|
|
13
|
+
|
|
14
|
+
This command is _informed_ by the project's domain model and built on a shared design vocabulary:
|
|
15
|
+
|
|
16
|
+
- Call the Skill tool with "int-codebase-design" for the architecture vocabulary (**module**, **interface**, **depth**, **seam**, **adapter**, **leverage**, **locality**) and its principles (the deletion test, "the interface is the test surface", "one adapter = hypothetical seam, two = real"). Use these terms exactly in every suggestion, and don't drift into "component," "service," "API," or "boundary."
|
|
17
|
+
- The domain language in `GLOSSARY.md` gives names to good seams; ADRs in `docs/adr/` record decisions this command should not re-litigate.
|
|
18
|
+
|
|
19
|
+
## Process
|
|
20
|
+
|
|
21
|
+
### 1. Explore
|
|
22
|
+
|
|
23
|
+
**Scope before you scan: YAGNI.** Deepening a module pays off by making future changes to it easier, so put extra weight on the parts of the codebase that have recently changed. Decide _where_ to look before you look:
|
|
24
|
+
|
|
25
|
+
- If the user named a direction (a module, a subsystem, a pain point), take it, and skip the inference below.
|
|
26
|
+
- Otherwise, walk back a good stretch of the commit history (`git log --oneline`) to find the codebase's hot spots, the files and areas that keep coming up, and let those paths pull your attention first. If the changes are scattered with no clear hot spot, widen the net.
|
|
27
|
+
|
|
28
|
+
Read the project's domain glossary (`GLOSSARY.md`) and any ADRs in the area you're touching first.
|
|
29
|
+
|
|
30
|
+
Then spawn a sub-agent to walk the codebase. Don't follow rigid heuristics; explore organically and note where you experience friction:
|
|
31
|
+
|
|
32
|
+
- Where does understanding one concept require bouncing between many small modules?
|
|
33
|
+
- Where are modules **shallow**, with an interface nearly as complex as the implementation?
|
|
34
|
+
- Where have pure functions been extracted just for testability, but the real bugs hide in how they're called (no **locality**)?
|
|
35
|
+
- Where do tightly-coupled modules leak across their seams?
|
|
36
|
+
- Which parts of the codebase are untested, or hard to test through their current interface?
|
|
37
|
+
|
|
38
|
+
Apply the **deletion test** to anything you suspect is shallow: would deleting it concentrate complexity, or just move it? A "yes, concentrates" is the signal you want.
|
|
39
|
+
|
|
40
|
+
### 2. Present candidates as an HTML report
|
|
41
|
+
|
|
42
|
+
Write a self-contained HTML file to the OS temp directory so nothing lands in the repo. Resolve the temp dir from `$TMPDIR`, falling back to `/tmp` (or `%TEMP%` on Windows), and write to `<tmpdir>/architecture-review-<timestamp>.html` so each run gets a fresh file. Open it for the user (`xdg-open <path>` on Linux, `open <path>` on macOS, `start <path>` on Windows) and tell them the absolute path.
|
|
43
|
+
|
|
44
|
+
The report uses **Tailwind via CDN** for layout and styling, and **Mermaid via CDN** for diagrams where a graph/flow/sequence reliably communicates the structure. Mix Mermaid with hand-crafted CSS/SVG visuals: use Mermaid when relationships are graph-shaped (call graphs, dependencies, sequences), and hand-built divs/SVG when you want something more editorial (mass diagrams, cross-sections, collapse animations). Each candidate gets a **before/after visualisation**. Be visual.
|
|
45
|
+
|
|
46
|
+
For each candidate, render a card with:
|
|
47
|
+
|
|
48
|
+
- **Files**: which files/modules are involved
|
|
49
|
+
- **Problem**: why the current architecture is causing friction
|
|
50
|
+
- **Solution**: plain English description of what would change
|
|
51
|
+
- **Benefits**: explained in terms of locality and leverage, and how tests would improve
|
|
52
|
+
- **Before / After diagram**: side-by-side, custom-drawn, illustrating the shallowness and the deepening
|
|
53
|
+
- **Recommendation strength**: one of `Strong`, `Worth exploring`, `Speculative`, rendered as a badge
|
|
54
|
+
|
|
55
|
+
End the report with a **Top recommendation** section: which candidate you'd tackle first and why.
|
|
56
|
+
|
|
57
|
+
**Use GLOSSARY.md vocabulary for the domain, and the `int-codebase-design` skill vocabulary for the architecture.** If `GLOSSARY.md` defines "Order," talk about "the Order intake module," not "the FooBarHandler," and not "the Order service."
|
|
58
|
+
|
|
59
|
+
**ADR conflicts**: if a candidate contradicts an existing ADR, only surface it when the friction is real enough to warrant revisiting the ADR. Mark it clearly in the card (e.g. a warning callout: _"contradicts ADR-0007, but worth reopening because…"_). Don't list every theoretical refactor an ADR forbids.
|
|
60
|
+
|
|
61
|
+
See [HTML-REPORT.md](HTML-REPORT.md) for the full HTML scaffold, diagram patterns, and styling guidance.
|
|
62
|
+
|
|
63
|
+
Do NOT propose interfaces yet. After the file is written, ask the user: "Which of these would you like to explore?"
|
|
64
|
+
|
|
65
|
+
### 3. Grilling loop
|
|
66
|
+
|
|
67
|
+
Once the user picks a candidate, call the Skill tool with "grilling" to walk the decision tree with them: constraints, dependencies, the shape of the deepened module, what sits behind the seam, what tests survive.
|
|
68
|
+
|
|
69
|
+
Side effects happen inline as decisions crystallize; call the Skill tool with "int-domain-modeling" skill to keep the domain model current as you go:
|
|
70
|
+
|
|
71
|
+
- **Naming a deepened module after a concept not in `GLOSSARY.md`?** Add the term to `GLOSSARY.md`. Create the file lazily if it doesn't exist.
|
|
72
|
+
- **Sharpening a fuzzy term during the conversation?** Update `GLOSSARY.md` right there.
|
|
73
|
+
- **User rejects the candidate with a load-bearing reason?** Offer an ADR, framed as: _"Want me to record this as an ADR so future architecture reviews don't re-suggest it?"_ Only offer when the reason would actually be needed by a future explorer to avoid re-suggesting the same thing; skip ephemeral reasons ("not worth it right now") and self-evident ones.
|
|
74
|
+
- **Want to explore alternative interfaces for the deepened module?** Call the Skill tool with "int-codebase-design" and use its design-it-twice parallel sub-agent pattern.
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: int-code-review
|
|
3
|
+
description: "{{ computed.internal_skill_description }}"
|
|
4
|
+
user-invocable: false
|
|
5
|
+
metadata:
|
|
6
|
+
spindle:
|
|
7
|
+
version: 1.0.1
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# Code Review
|
|
11
|
+
|
|
12
|
+
Review an implementation against its requirements and applicable repository standards before the caller commits it. The caller owns implementation, snapshot construction and freezing, corrections, and commit decisions.
|
|
13
|
+
|
|
14
|
+
## Workflow
|
|
15
|
+
|
|
16
|
+
Announce `Step <node ID> - <node label>` before acting on each node, including resumed steps and loop re-entries. After each decision, state its result and selected branch.
|
|
17
|
+
|
|
18
|
+
```mermaid
|
|
19
|
+
flowchart TD
|
|
20
|
+
A[Validate review inputs] --> B[Inspect assigned snapshot]
|
|
21
|
+
A -- Missing or inconsistent --> F[Report review blocked]
|
|
22
|
+
B --> C[Review standards]
|
|
23
|
+
B -- Incomplete snapshot --> F
|
|
24
|
+
C --> D[Review requirements]
|
|
25
|
+
D --> E{Snapshot still matches?}
|
|
26
|
+
E -- No --> F
|
|
27
|
+
E -- Yes --> G[Report findings]
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
### A. Validate review inputs
|
|
31
|
+
|
|
32
|
+
Read and follow the [review-input contract](../int-subagent-driven-dev/references/review-inputs.md). The caller must provide its absolute workspace, starting base and reviewed head revisions, exact change identity, complete change inventory and diff (including staged, unstaged and untracked changes), and verification results for that same snapshot. Also require the original task description and any known ticket/spec pointers. The original task description is sufficient requirements context when no formal spec exists.
|
|
33
|
+
|
|
34
|
+
Do not infer missing revisions, requirements, or changes from Git or conversational mentions. If required inputs are missing or inconsistent, request the specific correction from the caller and stop.
|
|
35
|
+
|
|
36
|
+
**Complete when:** required inputs are present, mutually consistent, and identify one review snapshot; otherwise report the blocker and select F.
|
|
37
|
+
|
|
38
|
+
### B. Inspect assigned snapshot
|
|
39
|
+
|
|
40
|
+
Read the supplied diff, inventory, verification evidence, original task description, and any applicable ticket/spec sources. Read enough surrounding code to substantiate findings. Do not edit the implementation or spawn review sub-agents. If the change is incomplete or evidence does not cover the supplied snapshot, report the gap and select F.
|
|
41
|
+
|
|
42
|
+
**Complete when:** the full assigned change and its requirements and verification evidence are understood, selecting C; missing coverage selects F.
|
|
43
|
+
|
|
44
|
+
### C. Review standards
|
|
45
|
+
|
|
46
|
+
Read instructions applicable to changed files and project-wide coding standards or contributor guidance when present. Do not search unrelated files for standards. Skip requirements already enforced by tooling.
|
|
47
|
+
|
|
48
|
+
Report a confirmed violation of an explicit, mandatory repository rule as a commit blocker, citing the rule and changed location. Keep subjective design smells advisory. Use these as prompts for judgment, not prescribed refactors: feature envy, data clumps, primitive obsession, repeated switches, shotgun surgery, divergent change, message chains, and refused bequest. A repository rule overrides a smell heuristic.
|
|
49
|
+
|
|
50
|
+
**Complete when:** every changed file is checked against its applicable written rules; confirmed mandatory violations and advisory observations are distinguished, selecting D.
|
|
51
|
+
|
|
52
|
+
### D. Review requirements
|
|
53
|
+
|
|
54
|
+
Compare the complete change with the original task description and supplied ticket/spec requirements. Check missing or partial requirements, unintended behavior, and implementations that appear incorrect. Ask the caller for clarification only when the requirements themselves are unclear; do not require a separate formal spec when the task description is clear.
|
|
55
|
+
|
|
56
|
+
Report substantiated failures to meet requirements as commit blockers. Keep optional improvements non-blocking.
|
|
57
|
+
|
|
58
|
+
**Complete when:** each supplied requirement is accounted for with evidence, selecting E.
|
|
59
|
+
|
|
60
|
+
### E. Snapshot still matches?
|
|
61
|
+
|
|
62
|
+
Confirm the review inputs still identify the exact change reviewed and that the caller has kept implementation frozen during review. If the checkout, revisions, or included changes no longer match, do not present findings as current; select F.
|
|
63
|
+
|
|
64
|
+
**Complete when:** a matching snapshot selects G; any mismatch selects F with the invalidation evidence.
|
|
65
|
+
|
|
66
|
+
### F. Report review blocked
|
|
67
|
+
|
|
68
|
+
Name the missing input, evidence gap, or snapshot mismatch and what the caller must provide or refresh. Do not claim a clean review or recommend committing.
|
|
69
|
+
|
|
70
|
+
**Complete when:** the caller has a specific correction request and the review stops.
|
|
71
|
+
|
|
72
|
+
### G. Report findings
|
|
73
|
+
|
|
74
|
+
Return findings directly to the caller under separate `Standards` and `Requirements` headings. For each finding, include its axis, changed file and location, cited rule or requirement, evidence, impact, and `Commit blocker: yes|no`. Use `None` when an axis has no findings. List subjective smells and optional recommendations as non-blocking. State the reviewed snapshot and any coverage limits. Do not change implementation files or make the commit decision.
|
|
75
|
+
|
|
76
|
+
**Complete when:** both axes, blocker status, snapshot identity, and limitations are reported; return to the caller.
|