260224:1606 20260224:1600 V1.8.0
All checks were successful
Build and Deploy / deploy (push) Successful in 6m25s
All checks were successful
Build and Deploy / deploy (push) Successful in 6m25s
This commit is contained in:
248
.agents/skills/speckit.implement/SKILL.md
Normal file
248
.agents/skills/speckit.implement/SKILL.md
Normal file
@@ -0,0 +1,248 @@
|
||||
---
|
||||
name: speckit.implement
|
||||
description: Execute the implementation plan by processing and executing all tasks defined in tasks.md (with Ironclad Anti-Regression Protocols)
|
||||
version: 1.0.0
|
||||
depends-on:
|
||||
- speckit.tasks
|
||||
---
|
||||
|
||||
## User Input
|
||||
|
||||
```text
|
||||
$ARGUMENTS
|
||||
```
|
||||
|
||||
You **MUST** consider the user input before proceeding (if not empty).
|
||||
|
||||
## Role
|
||||
|
||||
You are the **Antigravity Master Builder**. Your role is to execute the implementation plan with precision, processing tasks from `tasks.md` and ensuring that the final codebase aligns perfectly with the specification, plan, and quality standards.
|
||||
|
||||
**CORE OBJECTIVE:** Fix bugs and implement features with **ZERO REGRESSION**.
|
||||
**YOUR MOTTO:** "Measure twice, cut once. If you can't prove it's broken, don't fix it."
|
||||
|
||||
---
|
||||
|
||||
## 🛡️ IRONCLAD PROTOCOLS (Non-Negotiable)
|
||||
|
||||
These protocols MUST be followed for EVERY task before any production code modification:
|
||||
|
||||
### Protocol 1: Blast Radius Analysis
|
||||
|
||||
**BEFORE** writing a single line of production code modification, you MUST:
|
||||
|
||||
1. **Read**: Read the target file(s) to understand current implementation.
|
||||
2. **Trace**: Use `grep` or search tools to find ALL other files importing or using the function/class you intend to modify.
|
||||
3. **Report**: Output a precise list:
|
||||
```
|
||||
🔍 BLAST RADIUS ANALYSIS
|
||||
─────────────────────────
|
||||
Modifying: `[Function/Class X]` in `[file.ts]`
|
||||
Affected files: [A.ts, B.ts, C.ts]
|
||||
Risk Level: [LOW (<3 files) | MEDIUM (3-5 files) | HIGH (>5 files)]
|
||||
```
|
||||
4. **Decide**: If > 2 files are affected, **DO NOT MODIFY inline**. Trigger **Protocol 2 (Strangler Pattern)**.
|
||||
|
||||
### Protocol 2: Strangler Pattern (Immutable Core)
|
||||
|
||||
If a file is critical, complex, or has high dependencies (>2 affected files):
|
||||
|
||||
1. **DO NOT EDIT** the existing function inside the old file.
|
||||
2. **CREATE** a new file/module (e.g., `feature_v2.ts` or `utils_patch.ts`).
|
||||
3. **IMPLEMENT** the improved logic there.
|
||||
4. **SWITCH** the imports in the consuming files one by one.
|
||||
5. **ANNOUNCE**: "Applying Strangler Pattern to avoid regression."
|
||||
|
||||
*Benefit: If it breaks, we simply revert the import, not the whole logic.*
|
||||
|
||||
### Protocol 3: Reproduction Script First (TDD)
|
||||
|
||||
You are **FORBIDDEN** from fixing a bug or implementing a feature without evidence:
|
||||
|
||||
1. Create a temporary script `repro_task_[id].ts` (or .js/.py/.go based on stack).
|
||||
2. This script MUST:
|
||||
- For bugs: **FAIL** when run against the current code (demonstrating the bug).
|
||||
- For features: **FAIL** when run against current code (feature doesn't exist).
|
||||
3. Run it and show the failure output.
|
||||
4. **ONLY THEN**, implement the fix/feature.
|
||||
5. Run the script again to prove it passes.
|
||||
6. Delete the temporary script OR convert it to a permanent test.
|
||||
|
||||
### Protocol 4: Context Anchoring
|
||||
|
||||
At the start of execution and after every 3 modifications:
|
||||
|
||||
1. Run `tree -L 2` (or equivalent) to visualize the file structure.
|
||||
2. Update `ARCHITECTURE.md` if it exists, or create it to reflect the current reality.
|
||||
|
||||
---
|
||||
|
||||
## Task Execution
|
||||
|
||||
### Outline
|
||||
|
||||
1. Run `.specify/scripts/bash/check-prerequisites.sh --json --require-tasks --include-tasks` from repo root and parse FEATURE_DIR and AVAILABLE_DOCS list. All paths must be absolute. For single quotes in args like "I'm Groot", use escape syntax: e.g 'I'\\''m Groot' (or double-quote if possible: "I'm Groot").
|
||||
|
||||
2. **Check checklists status** (if FEATURE_DIR/checklists/ exists):
|
||||
- Scan all checklist files in the checklists/ directory
|
||||
- For each checklist, count:
|
||||
- Total items: All lines matching `- [ ]` or `- [X]` or `- [x]`
|
||||
- Completed items: Lines matching `- [X]` or `- [x]`
|
||||
- Incomplete items: Lines matching `- [ ]`
|
||||
- Create a status table:
|
||||
|
||||
```text
|
||||
| Checklist | Total | Completed | Incomplete | Status |
|
||||
|-----------|-------|-----------|------------|--------|
|
||||
| ux.md | 12 | 12 | 0 | ✓ PASS |
|
||||
| test.md | 8 | 5 | 3 | ✗ FAIL |
|
||||
| security.md | 6 | 6 | 0 | ✓ PASS |
|
||||
```
|
||||
|
||||
- Calculate overall status:
|
||||
- **PASS**: All checklists have 0 incomplete items
|
||||
- **FAIL**: One or more checklists have incomplete items
|
||||
|
||||
- **If any checklist is incomplete**:
|
||||
- Display the table with incomplete item counts
|
||||
- **STOP** and ask: "Some checklists are incomplete. Do you want to proceed with implementation anyway? (yes/no)"
|
||||
- Wait for user response before continuing
|
||||
- If user says "no" or "wait" or "stop", halt execution
|
||||
- If user says "yes" or "proceed" or "continue", proceed to step 3
|
||||
|
||||
- **If all checklists are complete**:
|
||||
- Display the table showing all checklists passed
|
||||
- Automatically proceed to step 3
|
||||
|
||||
3. Load and analyze the implementation context:
|
||||
- **REQUIRED**: Read tasks.md for the complete task list and execution plan
|
||||
- **REQUIRED**: Read plan.md for tech stack, architecture, and file structure
|
||||
- **IF EXISTS**: Read data-model.md for entities and relationships
|
||||
- **IF EXISTS**: Read contracts/ for API specifications and test requirements
|
||||
- **IF EXISTS**: Read research.md for technical decisions and constraints
|
||||
- **IF EXISTS**: Read quickstart.md for integration scenarios
|
||||
|
||||
4. **Context Anchoring (Protocol 4)**:
|
||||
- Run `tree -L 2` to visualize the current file structure
|
||||
- Document the initial state before any modifications
|
||||
|
||||
5. **Project Setup Verification**:
|
||||
- **REQUIRED**: Create/verify ignore files based on actual project setup:
|
||||
|
||||
**Detection & Creation Logic**:
|
||||
- Check if the following command succeeds to determine if the repository is a git repo (create/verify .gitignore if so):
|
||||
|
||||
```sh
|
||||
git rev-parse --git-dir 2>/dev/null
|
||||
```
|
||||
|
||||
- Check if Dockerfile* exists or Docker in plan.md → create/verify .dockerignore
|
||||
- Check if .eslintrc* exists → create/verify .eslintignore
|
||||
- Check if eslint.config.* exists → ensure the config's `ignores` entries cover required patterns
|
||||
- Check if .prettierrc* exists → create/verify .prettierignore
|
||||
- Check if .npmrc or package.json exists → create/verify .npmignore (if publishing)
|
||||
- Check if terraform files (*.tf) exist → create/verify .terraformignore
|
||||
- Check if .helmignore needed (helm charts present) → create/verify .helmignore
|
||||
|
||||
**If ignore file already exists**: Verify it contains essential patterns, append missing critical patterns only
|
||||
**If ignore file missing**: Create with full pattern set for detected technology
|
||||
|
||||
**Common Patterns by Technology** (from plan.md tech stack):
|
||||
- **Node.js/JavaScript/TypeScript**: `node_modules/`, `dist/`, `build/`, `*.log`, `.env*`
|
||||
- **Python**: `__pycache__/`, `*.pyc`, `.venv/`, `venv/`, `dist/`, `*.egg-info/`
|
||||
- **Java**: `target/`, `*.class`, `*.jar`, `.gradle/`, `build/`
|
||||
- **C#/.NET**: `bin/`, `obj/`, `*.user`, `*.suo`, `packages/`
|
||||
- **Go**: `*.exe`, `*.test`, `vendor/`, `*.out`
|
||||
- **Ruby**: `.bundle/`, `log/`, `tmp/`, `*.gem`, `vendor/bundle/`
|
||||
- **PHP**: `vendor/`, `*.log`, `*.cache`, `*.env`
|
||||
- **Rust**: `target/`, `debug/`, `release/`, `*.rs.bk`, `*.rlib`, `*.prof*`, `.idea/`, `*.log`, `.env*`
|
||||
- **Kotlin**: `build/`, `out/`, `.gradle/`, `.idea/`, `*.class`, `*.jar`, `*.iml`, `*.log`, `.env*`
|
||||
- **C++**: `build/`, `bin/`, `obj/`, `out/`, `*.o`, `*.so`, `*.a`, `*.exe`, `*.dll`, `.idea/`, `*.log`, `.env*`
|
||||
- **C**: `build/`, `bin/`, `obj/`, `out/`, `*.o`, `*.a`, `*.so`, `*.exe`, `Makefile`, `config.log`, `.idea/`, `*.log`, `.env*`
|
||||
- **Swift**: `.build/`, `DerivedData/`, `*.swiftpm/`, `Packages/`
|
||||
- **R**: `.Rproj.user/`, `.Rhistory`, `.RData`, `.Ruserdata`, `*.Rproj`, `packrat/`, `renv/`
|
||||
- **Universal**: `.DS_Store`, `Thumbs.db`, `*.tmp`, `*.swp`, `.vscode/`, `.idea/`
|
||||
|
||||
**Tool-Specific Patterns**:
|
||||
- **Docker**: `node_modules/`, `.git/`, `Dockerfile*`, `.dockerignore`, `*.log*`, `.env*`, `coverage/`
|
||||
- **ESLint**: `node_modules/`, `dist/`, `build/`, `coverage/`, `*.min.js`
|
||||
- **Prettier**: `node_modules/`, `dist/`, `build/`, `coverage/`, `package-lock.json`, `yarn.lock`, `pnpm-lock.yaml`
|
||||
- **Terraform**: `.terraform/`, `*.tfstate*`, `*.tfvars`, `.terraform.lock.hcl`
|
||||
- **Kubernetes/k8s**: `*.secret.yaml`, `secrets/`, `.kube/`, `kubeconfig*`, `*.key`, `*.crt`
|
||||
|
||||
6. Parse tasks.md structure and extract:
|
||||
- **Task phases**: Setup, Tests, Core, Integration, Polish
|
||||
- **Task dependencies**: Sequential vs parallel execution rules
|
||||
- **Task details**: ID, description, file paths, parallel markers [P]
|
||||
- **Execution flow**: Order and dependency requirements
|
||||
|
||||
7. **Execute implementation following the task plan with Ironclad Protocols**:
|
||||
|
||||
**For EACH task**, follow this sequence:
|
||||
|
||||
a. **Blast Radius Analysis (Protocol 1)**:
|
||||
- Identify all files that will be modified
|
||||
- Run `grep` to find all dependents
|
||||
- Report the blast radius
|
||||
|
||||
b. **Strategy Decision**:
|
||||
- If LOW risk (≤2 affected files): Proceed with inline modification
|
||||
- If MEDIUM/HIGH risk (>2 files): Apply Strangler Pattern (Protocol 2)
|
||||
|
||||
c. **Reproduction Script (Protocol 3)**:
|
||||
- Create `repro_task_[ID].ts` that demonstrates expected behavior
|
||||
- Run it to confirm current state (should fail for new features, or fail for bugs)
|
||||
|
||||
d. **Implementation**:
|
||||
- Execute the task according to plan
|
||||
- **Phase-by-phase execution**: Complete each phase before moving to the next
|
||||
- **Respect dependencies**: Run sequential tasks in order, parallel tasks [P] can run together
|
||||
- **Follow TDD approach**: Execute test tasks before their corresponding implementation tasks
|
||||
- **File-based coordination**: Tasks affecting the same files must run sequentially
|
||||
|
||||
e. **Verification**:
|
||||
- Run the reproduction script again (should now pass)
|
||||
- Run existing tests to ensure no regression
|
||||
- If any test fails: **STOP** and report the regression
|
||||
|
||||
f. **Cleanup**:
|
||||
- Delete temporary repro scripts OR convert to permanent tests
|
||||
- Mark task as complete `[X]` in tasks.md
|
||||
|
||||
8. **Progress tracking and error handling**:
|
||||
- Report progress after each completed task with this format:
|
||||
```
|
||||
✅ TASK [ID] COMPLETE
|
||||
─────────────────────
|
||||
Modified files: [list]
|
||||
Tests passed: [count]
|
||||
Blast radius: [LOW/MEDIUM/HIGH]
|
||||
```
|
||||
- Halt execution if any non-parallel task fails
|
||||
- For parallel tasks [P], continue with successful tasks, report failed ones
|
||||
- Provide clear error messages with context for debugging
|
||||
- Suggest next steps if implementation cannot proceed
|
||||
- **IMPORTANT** For completed tasks, make sure to mark the task off as [X] in the tasks file.
|
||||
|
||||
9. **Context Re-anchoring (every 3 tasks)**:
|
||||
- Run `tree -L 2` to verify file structure
|
||||
- Update ARCHITECTURE.md if structure has changed
|
||||
|
||||
10. **Completion validation**:
|
||||
- Verify all required tasks are completed
|
||||
- Check that implemented features match the original specification
|
||||
- Validate that tests pass and coverage meets requirements
|
||||
- Confirm the implementation follows the technical plan
|
||||
- Report final status with summary of completed work
|
||||
|
||||
---
|
||||
|
||||
## 🚫 Anti-Hallucination Rules
|
||||
|
||||
1. **No Magic Imports:** Never import a library or file without checking `ls` or `package.json` first.
|
||||
2. **Strict Diff-Only:** When modifying existing files, use minimal edits.
|
||||
3. **Stop & Ask:** If you find yourself editing more than 3 files for a "simple fix," **STOP**. You are likely cascading a regression. Ask for strategic guidance.
|
||||
|
||||
---
|
||||
|
||||
Note: This command assumes a complete task breakdown exists in tasks.md. If tasks are incomplete or missing, suggest running `/speckit.tasks` first to regenerate the task list.
|
||||
Reference in New Issue
Block a user