kyro-ai 3.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude-plugin/README.md +29 -0
- package/.claude-plugin/marketplace.json +52 -0
- package/.claude-plugin/plugin.json +40 -0
- package/.claude-plugin/settings.json +16 -0
- package/LICENSE +201 -0
- package/README.md +331 -0
- package/WORKFLOW.yaml +36 -0
- package/agents/orchestrator.md +393 -0
- package/commands/forge.md +55 -0
- package/commands/status.md +92 -0
- package/commands/wrap-up.md +85 -0
- package/config.json +17 -0
- package/contexts/init.md +64 -0
- package/contexts/review.md +89 -0
- package/contexts/sprint.md +90 -0
- package/dist/cli/adapters/codex.d.ts +3 -0
- package/dist/cli/adapters/codex.d.ts.map +1 -0
- package/dist/cli/adapters/codex.js +55 -0
- package/dist/cli/adapters/codex.js.map +1 -0
- package/dist/cli/adapters/command-skills.d.ts +5 -0
- package/dist/cli/adapters/command-skills.d.ts.map +1 -0
- package/dist/cli/adapters/command-skills.js +41 -0
- package/dist/cli/adapters/command-skills.js.map +1 -0
- package/dist/cli/adapters/opencode.d.ts +5 -0
- package/dist/cli/adapters/opencode.d.ts.map +1 -0
- package/dist/cli/adapters/opencode.js +41 -0
- package/dist/cli/adapters/opencode.js.map +1 -0
- package/dist/cli/adapters/registry-types.d.ts +13 -0
- package/dist/cli/adapters/registry-types.d.ts.map +1 -0
- package/dist/cli/adapters/registry-types.js +3 -0
- package/dist/cli/adapters/registry-types.js.map +1 -0
- package/dist/cli/adapters/registry.d.ts +7 -0
- package/dist/cli/adapters/registry.d.ts.map +1 -0
- package/dist/cli/adapters/registry.js +46 -0
- package/dist/cli/adapters/registry.js.map +1 -0
- package/dist/cli/app.d.ts +2 -0
- package/dist/cli/app.d.ts.map +1 -0
- package/dist/cli/app.js +46 -0
- package/dist/cli/app.js.map +1 -0
- package/dist/cli/commands/doctor.d.ts +2 -0
- package/dist/cli/commands/doctor.d.ts.map +1 -0
- package/dist/cli/commands/doctor.js +133 -0
- package/dist/cli/commands/doctor.js.map +1 -0
- package/dist/cli/commands/install.d.ts +4 -0
- package/dist/cli/commands/install.d.ts.map +1 -0
- package/dist/cli/commands/install.js +42 -0
- package/dist/cli/commands/install.js.map +1 -0
- package/dist/cli/commands/tui.d.ts +2 -0
- package/dist/cli/commands/tui.d.ts.map +1 -0
- package/dist/cli/commands/tui.js +35 -0
- package/dist/cli/commands/tui.js.map +1 -0
- package/dist/cli/commands/uninstall.d.ts +3 -0
- package/dist/cli/commands/uninstall.d.ts.map +1 -0
- package/dist/cli/commands/uninstall.js +33 -0
- package/dist/cli/commands/uninstall.js.map +1 -0
- package/dist/cli/constants.d.ts +23 -0
- package/dist/cli/constants.d.ts.map +1 -0
- package/dist/cli/constants.js +27 -0
- package/dist/cli/constants.js.map +1 -0
- package/dist/cli/fs.d.ts +12 -0
- package/dist/cli/fs.d.ts.map +1 -0
- package/dist/cli/fs.js +133 -0
- package/dist/cli/fs.js.map +1 -0
- package/dist/cli/help.d.ts +4 -0
- package/dist/cli/help.d.ts.map +1 -0
- package/dist/cli/help.js +28 -0
- package/dist/cli/help.js.map +1 -0
- package/dist/cli/install-plan.d.ts +3 -0
- package/dist/cli/install-plan.d.ts.map +1 -0
- package/dist/cli/install-plan.js +93 -0
- package/dist/cli/install-plan.js.map +1 -0
- package/dist/cli/options.d.ts +8 -0
- package/dist/cli/options.d.ts.map +1 -0
- package/dist/cli/options.js +99 -0
- package/dist/cli/options.js.map +1 -0
- package/dist/cli/state.d.ts +4 -0
- package/dist/cli/state.d.ts.map +1 -0
- package/dist/cli/state.js +13 -0
- package/dist/cli/state.js.map +1 -0
- package/dist/cli/types.d.ts +50 -0
- package/dist/cli/types.d.ts.map +1 -0
- package/dist/cli/types.js +3 -0
- package/dist/cli/types.js.map +1 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +10 -0
- package/dist/cli.js.map +1 -0
- package/dist/index.d.ts +10 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +12 -0
- package/dist/index.js.map +1 -0
- package/docs/HOW-TO-USE-CODEX.md +82 -0
- package/docs/HOW-TO-USE-OPENCODE.md +93 -0
- package/docs/agent-adapters.md +152 -0
- package/docs/agents-reference.md +153 -0
- package/docs/architecture.md +159 -0
- package/docs/architecture.mmd +21 -0
- package/docs/cli.md +87 -0
- package/docs/commands-reference.md +138 -0
- package/docs/context-management.md +92 -0
- package/docs/getting-started.md +165 -0
- package/docs/harness-migration.md +95 -0
- package/docs/programmatic-usage.md +109 -0
- package/docs/rules-guide.md +216 -0
- package/package.json +78 -0
- package/rules/context-persistence.md +54 -0
- package/rules/estimation.md +56 -0
- package/rules/learning-rules.md +66 -0
- package/rules/quality-gates.md +65 -0
- package/rules/sprint-discipline.md +49 -0
- package/scripts/check-markdown-links.mjs +97 -0
- package/scripts/check-versions.mjs +46 -0
- package/scripts/make-cli-executable.mjs +12 -0
- package/settings.example.json +27 -0
- package/skills/qa-review/SKILL.md +660 -0
- package/skills/qa-review/manifest.json +41 -0
- package/skills/sprint-forge/SKILL.md +260 -0
- package/skills/sprint-forge/assets/README.md +31 -0
- package/skills/sprint-forge/assets/helpers/analysis-guide.md +207 -0
- package/skills/sprint-forge/assets/helpers/analyzer.md +83 -0
- package/skills/sprint-forge/assets/helpers/debt-tracker.md +122 -0
- package/skills/sprint-forge/assets/helpers/handoff.md +103 -0
- package/skills/sprint-forge/assets/helpers/learner.md +69 -0
- package/skills/sprint-forge/assets/helpers/metrics.md +81 -0
- package/skills/sprint-forge/assets/helpers/reentry-generator.md +121 -0
- package/skills/sprint-forge/assets/helpers/reviewer.md +71 -0
- package/skills/sprint-forge/assets/helpers/sprint-generator.md +145 -0
- package/skills/sprint-forge/assets/modes/INIT.md +204 -0
- package/skills/sprint-forge/assets/modes/SPRINT.md +253 -0
- package/skills/sprint-forge/assets/modes/STATUS.md +145 -0
- package/skills/sprint-forge/assets/templates/PROJECT-README.md +107 -0
- package/skills/sprint-forge/assets/templates/REENTRY-PROMPTS.md +132 -0
- package/skills/sprint-forge/assets/templates/ROADMAP.md +126 -0
- package/skills/sprint-forge/assets/templates/SPRINT.md +189 -0
- package/skills/sprint-forge/manifest.json +165 -0
- package/templates/split-claude-md/AGENTS.md +96 -0
- package/templates/split-claude-md/CLAUDE.md +67 -0
- package/templates/split-claude-md/COMMANDS.md +37 -0
- package/templates/split-claude-md/LEARNED.md +39 -0
- package/templates/split-claude-md/SOUL.md +107 -0
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
# Debt Tracker
|
|
2
|
+
|
|
3
|
+
This helper defines the rules for the Accumulated Technical Debt table that persists across sprints.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Core Principle
|
|
8
|
+
|
|
9
|
+
> **Debt never disappears.** The debt table is a living ledger that grows as new debt is discovered and shrinks only when debt is explicitly resolved. It is never pruned, never reset, never "cleaned up."
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
## Table Format
|
|
14
|
+
|
|
15
|
+
The debt table appears in every sprint file, starting from Sprint 1:
|
|
16
|
+
|
|
17
|
+
| # | Item | Origin | Sprint Target | Status | Resolved In |
|
|
18
|
+
|---|------|--------|--------------|--------|-------------|
|
|
19
|
+
| 1 | Brief description of debt item | Where it was discovered | Sprint N | open | — |
|
|
20
|
+
|
|
21
|
+
### Column Definitions
|
|
22
|
+
|
|
23
|
+
| Column | Description |
|
|
24
|
+
|--------|-------------|
|
|
25
|
+
| **#** | Sequential number. Never reused, even if the item is resolved. New items get the next available number. |
|
|
26
|
+
| **Item** | Brief, clear description of the debt. Specific enough to act on. |
|
|
27
|
+
| **Origin** | Where and when the debt was discovered. Format: `Sprint {N} Phase {X}`, `INIT finding {NN}`, or `Sprint {N} retro`. |
|
|
28
|
+
| **Sprint Target** | Which sprint is expected to resolve this item. Updated if deferred. |
|
|
29
|
+
| **Status** | Current state: `open`, `in-progress`, `resolved`, `deferred`. |
|
|
30
|
+
| **Resolved In** | Sprint number where the item was actually resolved. Empty (`—`) if not yet resolved. |
|
|
31
|
+
|
|
32
|
+
---
|
|
33
|
+
|
|
34
|
+
## Status Transitions
|
|
35
|
+
|
|
36
|
+
```
|
|
37
|
+
open → in-progress → resolved
|
|
38
|
+
↓
|
|
39
|
+
deferred → open → in-progress → resolved
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
- **open**: Known but not yet being worked on
|
|
43
|
+
- **in-progress**: Actively being addressed in the current sprint
|
|
44
|
+
- **resolved**: Fixed and verified. Record the sprint number.
|
|
45
|
+
- **deferred**: Postponed to a later sprint. Requires justification.
|
|
46
|
+
|
|
47
|
+
---
|
|
48
|
+
|
|
49
|
+
## Inheritance Rules
|
|
50
|
+
|
|
51
|
+
1. **Sprint 1**: The debt table starts with items discovered during INIT analysis (if any) or is empty.
|
|
52
|
+
2. **Sprint N (N > 1)**: Copy the ENTIRE debt table from Sprint N-1. Do not omit resolved items — they remain as history.
|
|
53
|
+
3. **Add new items**: Append at the bottom with the next available number.
|
|
54
|
+
4. **Never delete rows**: Even resolved items stay in the table. The table is a complete history.
|
|
55
|
+
5. **Preserve original numbers**: Item #3 is always Item #3, regardless of how many sprints pass.
|
|
56
|
+
|
|
57
|
+
---
|
|
58
|
+
|
|
59
|
+
## Adding New Debt
|
|
60
|
+
|
|
61
|
+
New debt can be discovered at any point:
|
|
62
|
+
|
|
63
|
+
- **During INIT analysis**: Origin = `INIT finding {NN}`
|
|
64
|
+
- **During sprint generation**: Origin = `Sprint {N} generation` (from recommendations or roadmap analysis)
|
|
65
|
+
- **During sprint execution**: Origin = `Sprint {N} Phase {X}` (specific phase where discovered)
|
|
66
|
+
- **During sprint retro**: Origin = `Sprint {N} retro`
|
|
67
|
+
|
|
68
|
+
When adding a new item:
|
|
69
|
+
1. Use the next available number
|
|
70
|
+
2. Set Status = `open`
|
|
71
|
+
3. Set Sprint Target = best estimate of when it should be addressed
|
|
72
|
+
4. Leave Resolved In empty (`—`)
|
|
73
|
+
|
|
74
|
+
---
|
|
75
|
+
|
|
76
|
+
## Closing Debt
|
|
77
|
+
|
|
78
|
+
When a debt item is resolved during a sprint:
|
|
79
|
+
|
|
80
|
+
1. Change Status to `resolved`
|
|
81
|
+
2. Fill Resolved In with the current sprint number
|
|
82
|
+
3. Optionally add a brief note: `Sprint 3 (migrated to new API)`
|
|
83
|
+
|
|
84
|
+
---
|
|
85
|
+
|
|
86
|
+
## Deferring Debt
|
|
87
|
+
|
|
88
|
+
When a debt item cannot be addressed in its target sprint:
|
|
89
|
+
|
|
90
|
+
1. Change Status to `deferred`
|
|
91
|
+
2. Update Sprint Target to the new expected sprint
|
|
92
|
+
3. Add justification — either inline or as a footnote:
|
|
93
|
+
- Inline: `deferred (blocked by external API release)`
|
|
94
|
+
- Footnote: `deferred [^1]` with `[^1]: Blocked by external API release, expected Sprint 5`
|
|
95
|
+
|
|
96
|
+
**Rule**: Deferral must be justified. "Not enough time" is acceptable only with specifics (e.g., "sprint scope expanded due to emergent phase, deferring to Sprint 4").
|
|
97
|
+
|
|
98
|
+
---
|
|
99
|
+
|
|
100
|
+
## Reporting
|
|
101
|
+
|
|
102
|
+
The STATUS mode uses the debt table for reporting:
|
|
103
|
+
|
|
104
|
+
- **Open count**: Items with status `open` or `in-progress`
|
|
105
|
+
- **Resolved count**: Items with status `resolved`
|
|
106
|
+
- **Deferred count**: Items with status `deferred`
|
|
107
|
+
- **Debt trend**: Is the open count growing or shrinking sprint over sprint?
|
|
108
|
+
- **Oldest open items**: Items that have been open the longest (potential chronic debt)
|
|
109
|
+
|
|
110
|
+
---
|
|
111
|
+
|
|
112
|
+
## Example
|
|
113
|
+
|
|
114
|
+
Sprint 3's debt table, showing history from sprints 1-3:
|
|
115
|
+
|
|
116
|
+
| # | Item | Origin | Sprint Target | Status | Resolved In |
|
|
117
|
+
|---|------|--------|--------------|--------|-------------|
|
|
118
|
+
| 1 | Missing unit tests for auth module | INIT finding 02 | Sprint 2 | resolved | Sprint 2 |
|
|
119
|
+
| 2 | Deprecated API calls in data layer | INIT finding 03 | Sprint 3 | in-progress | — |
|
|
120
|
+
| 3 | Inconsistent error handling in controllers | Sprint 1 Phase 2 | Sprint 3 | open | — |
|
|
121
|
+
| 4 | No input validation on user forms | Sprint 2 retro | Sprint 4 | deferred | — |
|
|
122
|
+
| 5 | Circular dependency between modules A and B | Sprint 3 Phase 1 | Sprint 4 | open | — |
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
# Sprint Handoff — Enriched Context Transfer
|
|
2
|
+
|
|
3
|
+
## Purpose
|
|
4
|
+
|
|
5
|
+
Generates a handoff document that captures not just file state but **mental context** — the hypotheses, decisions, and reasoning that a new session needs to continue effectively.
|
|
6
|
+
|
|
7
|
+
## Handoff Structure
|
|
8
|
+
|
|
9
|
+
### 1. Sprint State
|
|
10
|
+
|
|
11
|
+
```text
|
|
12
|
+
## Sprint State
|
|
13
|
+
- Active sprint: Sprint 3 (in progress)
|
|
14
|
+
- Tasks completed: 5/8
|
|
15
|
+
- Current task: T2.3 — "Implement rate limiting middleware"
|
|
16
|
+
- Phase: 2 of 3
|
|
17
|
+
- Last checkpoint: Phase 2 complete
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
### 2. Mental Context
|
|
21
|
+
|
|
22
|
+
#### Active Hypotheses
|
|
23
|
+
|
|
24
|
+
Ideas being investigated but not yet confirmed:
|
|
25
|
+
|
|
26
|
+
```text
|
|
27
|
+
### Active Hypotheses
|
|
28
|
+
- "The performance issue in /api/users is likely an N+1 query at line 47 of userService.ts"
|
|
29
|
+
- "The auth module may have a race condition under concurrent login attempts"
|
|
30
|
+
- "The memory spike during CSV export correlates with unbounded stream buffering"
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
#### Pending Decisions
|
|
34
|
+
|
|
35
|
+
Choices that need to be made before proceeding:
|
|
36
|
+
|
|
37
|
+
```text
|
|
38
|
+
### Pending Decisions
|
|
39
|
+
- Redis vs in-memory cache backend (waiting for load test results)
|
|
40
|
+
- Migrate to new payments API now or defer to Sprint 5 (cost-benefit unclear)
|
|
41
|
+
- Monorepo restructure: packages/ or apps/ pattern?
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
#### Identified Blockers
|
|
45
|
+
|
|
46
|
+
Things that are preventing progress:
|
|
47
|
+
|
|
48
|
+
```text
|
|
49
|
+
### Identified Blockers
|
|
50
|
+
- Infra team hasn't provisioned staging environment (ETA unknown)
|
|
51
|
+
- Payments API documentation is outdated (v2 docs reference v1 endpoints)
|
|
52
|
+
- CI pipeline intermittent failures (flaky test in auth.spec.ts:142)
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
### 3. Recommended Next Action
|
|
56
|
+
|
|
57
|
+
The single most important thing to do when resuming:
|
|
58
|
+
|
|
59
|
+
```text
|
|
60
|
+
### Next Action
|
|
61
|
+
1. Check if infra provisioned staging (ask in #infra channel)
|
|
62
|
+
2. If yes → run integration test suite against staging
|
|
63
|
+
3. If no → continue with non-blocked tasks: T3.1 (UI polish), T3.2 (error messages)
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
### 4. Corrections & Rules This Session
|
|
67
|
+
|
|
68
|
+
```text
|
|
69
|
+
### Corrections Applied
|
|
70
|
+
- User corrected: "Always use parameterized queries, never string concatenation"
|
|
71
|
+
→ Saved as RULE-012
|
|
72
|
+
|
|
73
|
+
### Rules Triggered
|
|
74
|
+
- RULE-005: Added 20% buffer to DB migration estimate (Sprint 3, T1.2)
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
### 5. Files Context
|
|
78
|
+
|
|
79
|
+
```text
|
|
80
|
+
### Key Files
|
|
81
|
+
- src/middleware/rate-limit.ts — work in progress, half-implemented
|
|
82
|
+
- src/services/userService.ts:47 — suspected N+1 query
|
|
83
|
+
- tests/auth.spec.ts:142 — flaky test causing CI failures
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
## Generation
|
|
87
|
+
|
|
88
|
+
When generating a handoff:
|
|
89
|
+
1. Read current sprint file for task state
|
|
90
|
+
2. Review conversation for hypotheses and decisions
|
|
91
|
+
3. Check git status for uncommitted work
|
|
92
|
+
4. Check rules applied/proposed this session
|
|
93
|
+
5. Write to `{output_kyro_dir}/handoffs/[date]-sprint-[N].md`
|
|
94
|
+
6. Update re-entry prompts with handoff reference
|
|
95
|
+
|
|
96
|
+
## Difference from Re-entry Prompts
|
|
97
|
+
|
|
98
|
+
| Aspect | Re-entry Prompts | Handoff |
|
|
99
|
+
|--------|-----------------|---------|
|
|
100
|
+
| Focus | File paths and sprint state | Mental context and reasoning |
|
|
101
|
+
| When | After INIT and each sprint | Any time during execution |
|
|
102
|
+
| For whom | Any agent, any session | Specifically the next session |
|
|
103
|
+
| Content | What to read | What to think about |
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
# Kyro Learner — Per-Project Rule Accumulation
|
|
2
|
+
|
|
3
|
+
## Purpose
|
|
4
|
+
|
|
5
|
+
Captures corrections, patterns, and estimation insights as persistent rules stored in `.agents/kyro/scopes/rules.md`. These rules are project-scoped and accumulated across sprints.
|
|
6
|
+
|
|
7
|
+
## Rule Format
|
|
8
|
+
|
|
9
|
+
```markdown
|
|
10
|
+
# Kyro — Learned Rules
|
|
11
|
+
|
|
12
|
+
## Estimation
|
|
13
|
+
- [RULE-001] DB migration tasks: add 20% buffer to estimates (2026-02-20, project: nebux-api)
|
|
14
|
+
- [RULE-002] Auth tasks frequently reveal hidden dependencies (2026-02-22, project: nebux-api)
|
|
15
|
+
|
|
16
|
+
## Quality
|
|
17
|
+
- [RULE-003] Always validate version compatibility before adding dependencies (2026-02-25, project: synap-sync)
|
|
18
|
+
|
|
19
|
+
## Architecture
|
|
20
|
+
- [RULE-004] Extract shared validation logic before 3rd duplication (2026-03-01, project: skills-registry)
|
|
21
|
+
|
|
22
|
+
## Testing
|
|
23
|
+
- [RULE-005] E2E tests for auth flows catch integration issues that unit tests miss (2026-03-03, project: nebux-api)
|
|
24
|
+
|
|
25
|
+
## Process
|
|
26
|
+
- [RULE-006] Run full quality gates before closing sprint, not just per-task (2026-03-05, project: synap-sync)
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
## Capture Flow
|
|
30
|
+
|
|
31
|
+
When the user corrects the agent or a pattern is identified:
|
|
32
|
+
|
|
33
|
+
1. Detect the correction or pattern
|
|
34
|
+
2. Propose the rule in standard format:
|
|
35
|
+
|
|
36
|
+
```text
|
|
37
|
+
Detected a pattern worth remembering:
|
|
38
|
+
|
|
39
|
+
[RULE-XXX] Category: One-line rule
|
|
40
|
+
Context: Why this rule exists
|
|
41
|
+
Source: Sprint N, Project: project-name
|
|
42
|
+
|
|
43
|
+
Save this rule? (yes/no/edit)
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
3. On approval, append to `.agents/kyro/scopes/rules.md`
|
|
47
|
+
4. Log in the sprint's LEARNED section
|
|
48
|
+
|
|
49
|
+
## Rule Application
|
|
50
|
+
|
|
51
|
+
At the start of every session:
|
|
52
|
+
1. Load `.agents/kyro/scopes/rules.md`
|
|
53
|
+
2. Before generating sprint estimates, check estimation rules
|
|
54
|
+
3. Before architecture decisions, check architecture rules
|
|
55
|
+
4. If about to violate a rule, pause and show it (RuleViolation event)
|
|
56
|
+
|
|
57
|
+
## Rule Lifecycle
|
|
58
|
+
|
|
59
|
+
- **Active** — Applied automatically in relevant contexts
|
|
60
|
+
- **Deprecated** — User marks as no longer relevant (kept for history)
|
|
61
|
+
- **Evolved** — Updated rule replaces a previous version (link to original)
|
|
62
|
+
|
|
63
|
+
## Rules About Rules
|
|
64
|
+
|
|
65
|
+
- Never add duplicate rules. Check existing rules before proposing.
|
|
66
|
+
- Rules must be specific and actionable, not vague platitudes.
|
|
67
|
+
- Include the date and project where the rule was learned.
|
|
68
|
+
- Rules from corrections have higher confidence than proactive suggestions.
|
|
69
|
+
- Maximum 50 active rules. After that, consolidate or deprecate.
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
# Kyro Metrics — Velocity & Debt Analytics
|
|
2
|
+
|
|
3
|
+
## Purpose
|
|
4
|
+
|
|
5
|
+
Provides quantitative analysis of sprint execution history to identify patterns, improve estimation accuracy, and visualize technical debt distribution.
|
|
6
|
+
|
|
7
|
+
## Metrics
|
|
8
|
+
|
|
9
|
+
### Velocity Trend
|
|
10
|
+
|
|
11
|
+
Track completion rate per sprint:
|
|
12
|
+
|
|
13
|
+
```text
|
|
14
|
+
## Velocity Trend
|
|
15
|
+
Sprint 1: ████████░░ 8/10 tasks (80%)
|
|
16
|
+
Sprint 2: ██████████ 10/10 tasks (100%)
|
|
17
|
+
Sprint 3: ███████░░░ 7/10 tasks (70%) ← underperformance: DB tasks x2
|
|
18
|
+
Sprint 4: █████████░ 9/10 tasks (90%)
|
|
19
|
+
|
|
20
|
+
Average velocity: 85%
|
|
21
|
+
Trend: stable (±10%)
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
### Debt Heatmap
|
|
25
|
+
|
|
26
|
+
Show debt concentration by directory/module:
|
|
27
|
+
|
|
28
|
+
```text
|
|
29
|
+
## Debt Heatmap
|
|
30
|
+
src/auth/ ████████ 4 items (2 critical, aged: 3 sprints)
|
|
31
|
+
src/db/ █████░░░ 3 items (1 critical)
|
|
32
|
+
src/api/ ██░░░░░░ 1 item
|
|
33
|
+
src/ui/ ░░░░░░░░ 0 items
|
|
34
|
+
|
|
35
|
+
Total: 8 items (3 critical, 2 aged >3 sprints)
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
### Underestimation Patterns
|
|
39
|
+
|
|
40
|
+
Identify task types that are consistently underestimated:
|
|
41
|
+
|
|
42
|
+
```text
|
|
43
|
+
## Underestimation Patterns
|
|
44
|
+
- DB/migration tasks: underestimated by ~40% (3 occurrences)
|
|
45
|
+
- Auth tasks: reveal hidden dependencies in 67% of cases
|
|
46
|
+
- UI tasks: generally accurate (±10%)
|
|
47
|
+
- API tasks: underestimated by ~15% when involving auth
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
### Sprint Health Score
|
|
51
|
+
|
|
52
|
+
Composite score based on:
|
|
53
|
+
- Velocity (weight: 30%)
|
|
54
|
+
- Debt trend — increasing or decreasing (weight: 25%)
|
|
55
|
+
- Carry-over count (weight: 20%)
|
|
56
|
+
- Estimation accuracy (weight: 25%)
|
|
57
|
+
|
|
58
|
+
```text
|
|
59
|
+
## Sprint Health
|
|
60
|
+
Score: 72/100 (Good)
|
|
61
|
+
Velocity: ████████░░ 85% (25.5/30)
|
|
62
|
+
Debt trend: ██████░░░░ ↗ increasing (15/25)
|
|
63
|
+
Carry-over: ████████░░ 2 tasks (16/20)
|
|
64
|
+
Estimation: ██████░░░░ ±25% avg error (15.5/25)
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
## Data Sources
|
|
68
|
+
|
|
69
|
+
- Sprint files: task counts, completion status, retro data
|
|
70
|
+
- Debt tables: accumulated across all sprints
|
|
71
|
+
- Roadmap: planned vs actual sprint scope
|
|
72
|
+
- Rules file: estimation adjustment rules
|
|
73
|
+
|
|
74
|
+
## Calculation
|
|
75
|
+
|
|
76
|
+
Read all sprint files in `{output_kyro_dir}/phases/` and compute:
|
|
77
|
+
|
|
78
|
+
1. Count tasks per sprint (total, completed, blocked, skipped, carry-over)
|
|
79
|
+
2. Map debt items to source directories
|
|
80
|
+
3. Track item age (sprint introduced vs current sprint)
|
|
81
|
+
4. Compare planned phases vs actual phases (including emergent)
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
# Re-entry Generator
|
|
2
|
+
|
|
3
|
+
This helper defines how to generate and update re-entry prompts that allow context recovery across sessions.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## What Are Re-entry Prompts
|
|
8
|
+
|
|
9
|
+
Re-entry prompts are pre-written instructions that a new agent (or the same agent in a new session) can use to recover full project context. They specify:
|
|
10
|
+
|
|
11
|
+
- Which files to read and in what order
|
|
12
|
+
- What the current state of the project is
|
|
13
|
+
- What action to take next
|
|
14
|
+
|
|
15
|
+
They are the **context persistence mechanism** of Kyro.
|
|
16
|
+
|
|
17
|
+
---
|
|
18
|
+
|
|
19
|
+
## 4 Scenarios
|
|
20
|
+
|
|
21
|
+
Each re-entry prompt covers a specific scenario:
|
|
22
|
+
|
|
23
|
+
| # | Scenario | When to Use | Key Context Needed |
|
|
24
|
+
|---|----------|-------------|-------------------|
|
|
25
|
+
| 1 | First Sprint | After INIT, before any sprint | README, ROADMAP, findings |
|
|
26
|
+
| 2 | Sprint N (next) | After completing Sprint N-1 | README, ROADMAP, last sprint (retro + recommendations + debt), next finding |
|
|
27
|
+
| 3 | Execute Sprint | Sprint generated but not executed | README, ROADMAP, current sprint file |
|
|
28
|
+
| 4 | Status | Any time, for progress report | README, ROADMAP, all sprint files |
|
|
29
|
+
|
|
30
|
+
---
|
|
31
|
+
|
|
32
|
+
## Prompt Structure
|
|
33
|
+
|
|
34
|
+
Each prompt must include:
|
|
35
|
+
|
|
36
|
+
1. **Project identifier**: Name and brief description
|
|
37
|
+
2. **Files to read**: Ordered list of files with absolute paths
|
|
38
|
+
3. **Current state**: What sprint is current, what's been done
|
|
39
|
+
4. **Action**: What the agent should do (invoke `/kyro:forge` with specific intent)
|
|
40
|
+
5. **Key notes**: Any important context (e.g., "Sprint 3 had a blocked task")
|
|
41
|
+
|
|
42
|
+
---
|
|
43
|
+
|
|
44
|
+
## Template Variables
|
|
45
|
+
|
|
46
|
+
The following variables are filled with actual values during INIT and updated after each sprint:
|
|
47
|
+
|
|
48
|
+
| Variable | Description | Example |
|
|
49
|
+
|----------|-------------|---------|
|
|
50
|
+
| `{scope}` | Work scope (kebab-case topic) | `nebux-design-system-audit` |
|
|
51
|
+
| `{codebase_path}` | Absolute path to the codebase | `/Users/dev/projects/nebux` |
|
|
52
|
+
| `{output_kyro_dir}` | Working directory for sprint artifacts | `/Users/dev/projects/nebux/.agents/kyro/scopes/nebux-design-system-audit` |
|
|
53
|
+
| `{current_sprint}` | Current sprint number | `3` |
|
|
54
|
+
| `{last_sprint_file}` | Filename of the last completed sprint | `SPRINT-2-api-surface.md` |
|
|
55
|
+
| `{next_finding_file}` | Finding file for the next sprint | `03-component-quality.md` |
|
|
56
|
+
| `{latest_sprint_file}` | Filename of the latest sprint (may be in-progress) | `SPRINT-3-component-quality.md` |
|
|
57
|
+
|
|
58
|
+
---
|
|
59
|
+
|
|
60
|
+
## When to Generate
|
|
61
|
+
|
|
62
|
+
### After INIT
|
|
63
|
+
|
|
64
|
+
Generate ALL 4 prompts with:
|
|
65
|
+
- Actual project paths (codebase, output dir)
|
|
66
|
+
- Sprint 1 as the current/next sprint
|
|
67
|
+
- Finding file 01 as the first finding
|
|
68
|
+
- Write to `{output_kyro_dir}/RE-ENTRY-PROMPTS.md`
|
|
69
|
+
|
|
70
|
+
### After Each Sprint Execution
|
|
71
|
+
|
|
72
|
+
Update prompts 2, 3, and 4:
|
|
73
|
+
- Increment current sprint number
|
|
74
|
+
- Update last sprint file reference
|
|
75
|
+
- Update next finding file reference
|
|
76
|
+
- Update any paths that may have changed
|
|
77
|
+
- Update Quick Reference table with new sprint status
|
|
78
|
+
|
|
79
|
+
Prompt 1 (First Sprint) can be left as-is or marked as "N/A — Sprint 1 already completed."
|
|
80
|
+
|
|
81
|
+
---
|
|
82
|
+
|
|
83
|
+
## Generation Process
|
|
84
|
+
|
|
85
|
+
1. Read the `REENTRY-PROMPTS.md` template from `assets/templates/`
|
|
86
|
+
2. Fill in all template variables with actual values
|
|
87
|
+
3. Write to `{output_kyro_dir}/RE-ENTRY-PROMPTS.md`
|
|
88
|
+
|
|
89
|
+
For updates (after sprint execution):
|
|
90
|
+
1. Read the existing `RE-ENTRY-PROMPTS.md`
|
|
91
|
+
2. Update the relevant sections with new values
|
|
92
|
+
3. Update the Quick Reference table
|
|
93
|
+
4. Update the "Last updated" date
|
|
94
|
+
5. Write back
|
|
95
|
+
|
|
96
|
+
---
|
|
97
|
+
|
|
98
|
+
## Quick Reference Table
|
|
99
|
+
|
|
100
|
+
The re-entry prompts file includes a quick reference table that maps sprints to files:
|
|
101
|
+
|
|
102
|
+
| Sprint | File | Status |
|
|
103
|
+
|--------|------|--------|
|
|
104
|
+
| 1 | `phases/SPRINT-1-architecture.md` | completed |
|
|
105
|
+
| 2 | `phases/SPRINT-2-api-surface.md` | completed |
|
|
106
|
+
| 3 | `phases/SPRINT-3-components.md` | in-progress |
|
|
107
|
+
| 4 | (not yet generated) | pending |
|
|
108
|
+
|
|
109
|
+
This table is updated after each sprint execution.
|
|
110
|
+
|
|
111
|
+
---
|
|
112
|
+
|
|
113
|
+
## Validation
|
|
114
|
+
|
|
115
|
+
After generating or updating re-entry prompts, verify:
|
|
116
|
+
|
|
117
|
+
- [ ] All file paths are absolute and correct
|
|
118
|
+
- [ ] Current sprint number matches reality
|
|
119
|
+
- [ ] Last sprint file exists at the specified path
|
|
120
|
+
- [ ] Quick Reference table matches actual sprint files
|
|
121
|
+
- [ ] Each scenario prompt has complete file read instructions
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
# Kyro Reviewer — Task Quality Validation
|
|
2
|
+
|
|
3
|
+
## Purpose
|
|
4
|
+
|
|
5
|
+
Provides a structured quality checklist that runs after each sprint task completes. Tasks cannot be marked as done until all BLOCKER items pass.
|
|
6
|
+
|
|
7
|
+
## Checklist Tiers
|
|
8
|
+
|
|
9
|
+
### BLOCKER (must pass — blocks task closure)
|
|
10
|
+
|
|
11
|
+
1. **Tests pass** — all related tests run successfully
|
|
12
|
+
2. **Type safety** — no typecheck errors introduced
|
|
13
|
+
3. **No debug artifacts** — no console.log, debugger, print statements in production code
|
|
14
|
+
4. **No secrets** — no hardcoded API keys, passwords, tokens, or credentials
|
|
15
|
+
5. **No broken imports** — all imports resolve correctly
|
|
16
|
+
|
|
17
|
+
### WARNING (should pass — requires justification to skip)
|
|
18
|
+
|
|
19
|
+
1. **Test coverage** — new code has test coverage
|
|
20
|
+
2. **Documentation** — non-obvious logic has inline comments
|
|
21
|
+
3. **Debt tracking** — technical debt table updated if new debt introduced
|
|
22
|
+
4. **Performance** — no visible performance regressions (O(n^2) loops, unbounded queries)
|
|
23
|
+
|
|
24
|
+
### SUGGESTION (noted for retro — doesn't block)
|
|
25
|
+
|
|
26
|
+
1. **Conventions** — code follows project patterns and naming conventions
|
|
27
|
+
2. **Refactoring opportunities** — visible DRY violations or simplification opportunities
|
|
28
|
+
3. **Documentation updates** — related docs should be updated
|
|
29
|
+
|
|
30
|
+
## Validation Commands
|
|
31
|
+
|
|
32
|
+
The orchestrator uses these commands during the review step to validate (adapt to project stack):
|
|
33
|
+
|
|
34
|
+
```bash
|
|
35
|
+
# Typecheck
|
|
36
|
+
npm run typecheck
|
|
37
|
+
# or: mypy, go vet
|
|
38
|
+
|
|
39
|
+
# Build
|
|
40
|
+
npm run build
|
|
41
|
+
|
|
42
|
+
# Tests and lint
|
|
43
|
+
# Run the target project's configured test/lint commands when they exist.
|
|
44
|
+
# Examples: pytest, go test, dart test, flutter test, ruff, golangci-lint
|
|
45
|
+
|
|
46
|
+
# Debug artifacts
|
|
47
|
+
grep -rn "console\.log\|debugger\|print(" src/ --include="*.ts" --include="*.tsx"
|
|
48
|
+
|
|
49
|
+
# Secrets
|
|
50
|
+
grep -rn "apikey\|api_key\|secret\|password\|token" src/ --include="*.ts" -i
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
## Output Format
|
|
54
|
+
|
|
55
|
+
```text
|
|
56
|
+
REVIEW: Task T{phase}.{task} — "{task title}"
|
|
57
|
+
|
|
58
|
+
BLOCKERS: [0 found / N found]
|
|
59
|
+
✓ Tests passing
|
|
60
|
+
✓ Type safety
|
|
61
|
+
✗ Debug artifact: console.log at src/auth/login.ts:42
|
|
62
|
+
|
|
63
|
+
WARNINGS: [0 found / N found]
|
|
64
|
+
✓ Test coverage
|
|
65
|
+
⚠ Missing documentation for validateToken()
|
|
66
|
+
|
|
67
|
+
SUGGESTIONS: [0 found / N found]
|
|
68
|
+
→ Consider extracting email validation to shared util
|
|
69
|
+
|
|
70
|
+
VERDICT: PASS / FAIL (N blockers) / PASS WITH WARNINGS (N)
|
|
71
|
+
```
|