its-magic 0.1.2-9

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.
Files changed (97) hide show
  1. package/.cursor/agents/curator.mdc +21 -0
  2. package/.cursor/agents/dev.mdc +20 -0
  3. package/.cursor/agents/po.mdc +19 -0
  4. package/.cursor/agents/qa.mdc +19 -0
  5. package/.cursor/agents/release.mdc +19 -0
  6. package/.cursor/agents/tech-lead.mdc +21 -0
  7. package/.cursor/commands/gsd-architecture.md +29 -0
  8. package/.cursor/commands/gsd-auto.md +27 -0
  9. package/.cursor/commands/gsd-discovery.md +27 -0
  10. package/.cursor/commands/gsd-execute.md +32 -0
  11. package/.cursor/commands/gsd-intake.md +28 -0
  12. package/.cursor/commands/gsd-map-codebase.md +25 -0
  13. package/.cursor/commands/gsd-milestone-complete.md +24 -0
  14. package/.cursor/commands/gsd-milestone-start.md +26 -0
  15. package/.cursor/commands/gsd-pause.md +25 -0
  16. package/.cursor/commands/gsd-phase-context.md +25 -0
  17. package/.cursor/commands/gsd-plan-verify.md +26 -0
  18. package/.cursor/commands/gsd-qa.md +28 -0
  19. package/.cursor/commands/gsd-quick.md +24 -0
  20. package/.cursor/commands/gsd-refresh-context.md +26 -0
  21. package/.cursor/commands/gsd-release.md +29 -0
  22. package/.cursor/commands/gsd-research.md +28 -0
  23. package/.cursor/commands/gsd-resume.md +26 -0
  24. package/.cursor/commands/gsd-sprint-plan.md +30 -0
  25. package/.cursor/commands/gsd-verify-work.md +25 -0
  26. package/.cursor/hooks/README.md +13 -0
  27. package/.cursor/hooks/gsd-hook.py +197 -0
  28. package/.cursor/hooks.json +26 -0
  29. package/.cursor/plans/cursor-gsd-team-kit_8cfee9b8.plan.md +57 -0
  30. package/.cursor/remote.json +18 -0
  31. package/.cursor/rules/gsd-core.mdc +18 -0
  32. package/.cursor/rules/gsd-escalation.mdc +11 -0
  33. package/.cursor/rules/gsd-handoffs.mdc +10 -0
  34. package/.cursor/rules/gsd-quality.mdc +15 -0
  35. package/.cursor/scratchpad.md +34 -0
  36. package/.cursor/skills/gsd-team/SKILL.md +39 -0
  37. package/.cursor/skills/gsd-team/templates/acceptance.json +10 -0
  38. package/.cursor/skills/gsd-team/templates/acceptance.md +7 -0
  39. package/.cursor/skills/gsd-team/templates/architecture.json +11 -0
  40. package/.cursor/skills/gsd-team/templates/architecture.md +14 -0
  41. package/.cursor/skills/gsd-team/templates/decision.json +14 -0
  42. package/.cursor/skills/gsd-team/templates/decision.md +19 -0
  43. package/.cursor/skills/gsd-team/templates/handoff.json +6 -0
  44. package/.cursor/skills/gsd-team/templates/handoff.md +12 -0
  45. package/.cursor/skills/gsd-team/templates/milestone.json +7 -0
  46. package/.cursor/skills/gsd-team/templates/phase-context.json +6 -0
  47. package/.cursor/skills/gsd-team/templates/plan-verify.json +11 -0
  48. package/.cursor/skills/gsd-team/templates/sprint.json +6 -0
  49. package/.cursor/skills/gsd-team/templates/sprint.md +11 -0
  50. package/.cursor/skills/gsd-team/templates/story.json +9 -0
  51. package/.cursor/skills/gsd-team/templates/story.md +15 -0
  52. package/.cursor/skills/gsd-team/templates/uat.json +15 -0
  53. package/.github/workflows/ci.yml +47 -0
  54. package/.github/workflows/deploy.yml +56 -0
  55. package/README.md +755 -0
  56. package/bin/its-magic.js +86 -0
  57. package/decisions/DEC-0001.md +21 -0
  58. package/decisions/DEC-0002.md +21 -0
  59. package/docs/engineering/architecture.md +354 -0
  60. package/docs/engineering/codebase-map.md +14 -0
  61. package/docs/engineering/context/phase-template.json +6 -0
  62. package/docs/engineering/decisions.md +6 -0
  63. package/docs/engineering/dependencies.json +5 -0
  64. package/docs/engineering/research.md +11 -0
  65. package/docs/engineering/runbook.md +32 -0
  66. package/docs/engineering/state.md +33 -0
  67. package/docs/product/acceptance.md +6 -0
  68. package/docs/product/backlog.md +7 -0
  69. package/docs/product/vision.md +46 -0
  70. package/gsd-installer.ps1 +189 -0
  71. package/gsd-installer.py +195 -0
  72. package/gsd-installer.sh +201 -0
  73. package/handoffs/dev_to_qa.md +8 -0
  74. package/handoffs/po_to_tl.md +8 -0
  75. package/handoffs/qa_to_dev.md +6 -0
  76. package/handoffs/release_notes.md +14 -0
  77. package/handoffs/resume_brief.md +8 -0
  78. package/handoffs/tl_to_dev.md +7 -0
  79. package/milestones/M0001/milestone.json +7 -0
  80. package/milestones/M0001/phases.json +9 -0
  81. package/milestones/M0001/progress.md +3 -0
  82. package/milestones/M0001/summary.md +3 -0
  83. package/package.json +38 -0
  84. package/scripts/generate-release-notes.ps1 +74 -0
  85. package/scripts/generate-release-notes.sh +63 -0
  86. package/scripts/release-all.ps1 +423 -0
  87. package/scripts/release-all.sh +226 -0
  88. package/sprints/S0001/plan-verify.json +5 -0
  89. package/sprints/S0001/progress.md +4 -0
  90. package/sprints/S0001/qa-findings.md +113 -0
  91. package/sprints/S0001/sprint.md +70 -0
  92. package/sprints/S0001/summary.md +46 -0
  93. package/sprints/S0001/tasks.md +35 -0
  94. package/sprints/S0001/uat.json +8 -0
  95. package/sprints/S0001/uat.md +8 -0
  96. package/sprints/quick/Q0001/summary.md +3 -0
  97. package/sprints/quick/Q0001/task.json +6 -0
@@ -0,0 +1,197 @@
1
+ import json
2
+ import os
3
+ import re
4
+ import sys
5
+ from datetime import datetime
6
+
7
+ ROOT = os.path.abspath(os.path.join(os.path.dirname(__file__), "..", ".."))
8
+ SCRATCHPAD = os.path.join(ROOT, ".cursor", "scratchpad.md")
9
+ STATE_FILE = os.path.join(ROOT, ".cursor", "hooks", "gsd-hook-state.json")
10
+ BENCH_LOG = os.path.join(ROOT, ".cursor", "hooks", "gsd-bench-log.jsonl")
11
+
12
+
13
+ def read_scratchpad():
14
+ flags = {}
15
+ try:
16
+ with open(SCRATCHPAD, "r", encoding="utf-8") as f:
17
+ for line in f:
18
+ line = line.strip()
19
+ if not line or line.startswith("#"):
20
+ continue
21
+ if "=" in line:
22
+ key, val = line.split("=", 1)
23
+ flags[key.strip()] = val.strip()
24
+ except OSError:
25
+ pass
26
+ return flags
27
+
28
+
29
+ def load_state():
30
+ try:
31
+ with open(STATE_FILE, "r", encoding="utf-8") as f:
32
+ return json.load(f)
33
+ except Exception:
34
+ return {
35
+ "code_changed": False,
36
+ "context_refreshed": False,
37
+ "last_edit": None,
38
+ }
39
+
40
+
41
+ def save_state(state):
42
+ try:
43
+ with open(STATE_FILE, "w", encoding="utf-8") as f:
44
+ json.dump(state, f, indent=2)
45
+ except OSError:
46
+ pass
47
+
48
+
49
+ def bench_session(flags):
50
+ session = flags.get("GSD_BENCH_SESSION", "").strip()
51
+ return session if session else None
52
+
53
+
54
+ def log_bench_event(session, event, payload):
55
+ if not session:
56
+ return
57
+ try:
58
+ entry = {
59
+ "ts": datetime.utcnow().isoformat() + "Z",
60
+ "session": session,
61
+ "event": event,
62
+ }
63
+ if event == "beforeShellExecution":
64
+ cmd = payload.get("command", "")
65
+ entry["command"] = cmd[:200]
66
+ elif event == "beforeReadFile":
67
+ entry["path"] = payload.get("path", "")
68
+ elif event == "afterFileEdit":
69
+ entry["path"] = payload.get("path", "")
70
+ elif event == "stop":
71
+ entry["state"] = payload.get("state", "")
72
+ with open(BENCH_LOG, "a", encoding="utf-8") as f:
73
+ f.write(json.dumps(entry) + "\n")
74
+ except OSError:
75
+ pass
76
+
77
+
78
+ def read_event_payload():
79
+ try:
80
+ data = sys.stdin.read()
81
+ if not data.strip():
82
+ return {}
83
+ return json.loads(data)
84
+ except Exception:
85
+ return {}
86
+
87
+
88
+ def is_dangerous_command(cmd):
89
+ patterns = [
90
+ r"\brm\s+-rf\s+/",
91
+ r"\bdel\s+/f\s+/s\b",
92
+ r"\bformat\b",
93
+ r"\bmkfs\b",
94
+ r"\bdiskpart\b",
95
+ r"\bshutdown\b",
96
+ r"\breboot\b",
97
+ r"\bcurl\b.+\|\s*(sh|bash|pwsh|powershell)",
98
+ ]
99
+ return any(re.search(p, cmd, re.IGNORECASE) for p in patterns)
100
+
101
+
102
+ def is_secret_like(path):
103
+ secrets = [
104
+ ".env",
105
+ "id_rsa",
106
+ "id_dsa",
107
+ ".pem",
108
+ ".key",
109
+ ".p12",
110
+ "credentials.json",
111
+ ]
112
+ lower = path.lower()
113
+ return any(s in lower for s in secrets)
114
+
115
+
116
+ def is_code_path(path):
117
+ normalized = path.replace("\\", "/").lower()
118
+ if "/docs/" in normalized:
119
+ return False
120
+ if "/handoffs/" in normalized:
121
+ return False
122
+ if "/decisions/" in normalized:
123
+ return False
124
+ if "/sprints/" in normalized:
125
+ return False
126
+ if "/.cursor/" in normalized:
127
+ return False
128
+ if "/.github/" in normalized:
129
+ return False
130
+ if normalized.endswith("readme.md"):
131
+ return False
132
+ return True
133
+
134
+
135
+ def is_context_refresh(path):
136
+ normalized = path.replace("\\", "/").lower()
137
+ return normalized.endswith("/docs/engineering/state.md") or normalized.endswith(
138
+ "/sprints/s0001/summary.md"
139
+ )
140
+
141
+
142
+ def main():
143
+ if len(sys.argv) < 2:
144
+ sys.exit(0)
145
+
146
+ event = sys.argv[1]
147
+ flags = read_scratchpad()
148
+ payload = read_event_payload()
149
+ state = load_state()
150
+ session = bench_session(flags)
151
+
152
+ if event == "beforeShellExecution":
153
+ log_bench_event(session, event, payload)
154
+ cmd = payload.get("command", "")
155
+ if cmd and is_dangerous_command(cmd):
156
+ print("Blocked: dangerous command pattern detected.")
157
+ sys.exit(1)
158
+ sys.exit(0)
159
+
160
+ if event == "beforeReadFile":
161
+ log_bench_event(session, event, payload)
162
+ path = payload.get("path", "")
163
+ if path and is_secret_like(path):
164
+ print("Blocked: secret-like file detected. Confirm before reading.")
165
+ sys.exit(1)
166
+ sys.exit(0)
167
+
168
+ if event == "afterFileEdit":
169
+ log_bench_event(session, event, payload)
170
+ path = payload.get("path", "")
171
+ if path:
172
+ if is_code_path(path):
173
+ state["code_changed"] = True
174
+ if is_context_refresh(path):
175
+ state["context_refreshed"] = True
176
+ state["last_edit"] = datetime.utcnow().isoformat() + "Z"
177
+ save_state(state)
178
+ sys.exit(0)
179
+
180
+ if event == "stop":
181
+ log_bench_event(session, event, payload)
182
+ strict = flags.get("GSD_CONTEXT_STRICT", "0") == "1"
183
+ done = flags.get("DONE", "0") == "1"
184
+ if strict and state.get("code_changed") and not state.get("context_refreshed"):
185
+ if not done:
186
+ print(
187
+ "Context refresh recommended: update state or summary after code edits."
188
+ )
189
+ sys.exit(1)
190
+ sys.exit(0)
191
+
192
+ sys.exit(0)
193
+
194
+
195
+ if __name__ == "__main__":
196
+ main()
197
+
@@ -0,0 +1,26 @@
1
+ {
2
+ "version": 1,
3
+ "hooks": {
4
+ "beforeShellExecution": [
5
+ {
6
+ "command": "python .cursor/hooks/gsd-hook.py beforeShellExecution"
7
+ }
8
+ ],
9
+ "beforeReadFile": [
10
+ {
11
+ "command": "python .cursor/hooks/gsd-hook.py beforeReadFile"
12
+ }
13
+ ],
14
+ "afterFileEdit": [
15
+ {
16
+ "command": "python .cursor/hooks/gsd-hook.py afterFileEdit"
17
+ }
18
+ ],
19
+ "stop": [
20
+ {
21
+ "command": "python .cursor/hooks/gsd-hook.py stop"
22
+ }
23
+ ]
24
+ }
25
+ }
26
+
@@ -0,0 +1,57 @@
1
+ ---
2
+ name: cursor-gsd-team-kit
3
+ overview: Plan the build of the Cursor-native “GSD Team Kit” template repo described in `Plan.md`, covering commands, rules, skills, agents, hooks, docs, and CI/CD templates.
4
+ todos:
5
+ - id: scaffold-structure
6
+ content: Scaffold directory structure and starter artifacts
7
+ status: pending
8
+ - id: commands-rules
9
+ content: Add 10 commands and 4 rules with IO/stop gates
10
+ status: pending
11
+ - id: skills-agents
12
+ content: Create gsd-team skill, templates, and 6 agents
13
+ status: pending
14
+ - id: hooks-cicd-docs
15
+ content: Implement hooks, CI/CD workflows, and README updates
16
+ status: pending
17
+ isProject: false
18
+ ---
19
+
20
+ # Cursor-GSD-Team Kit Plan
21
+
22
+ ## Scope Summary
23
+
24
+ Build a drop-in template repo that implements the full GSD workflow (intake → discovery → architecture → sprint plan → execute → QA → release → pause/resume) using Cursor-native artifacts: commands, rules, skills, subagents, hooks, docs, and GitHub Actions. Voice input is documented as an input layer only. CI/CD is template-based and driven by runbook keys.
25
+
26
+ ## Key Files and Structures
27
+
28
+ - Template structure per spec: [.cursor/](.cursor/), [docs/](docs/), [sprints/](sprints/), [handoffs/](handoffs/), [decisions/](decisions/), [.github/workflows/](.github/workflows/)
29
+ - Commands: `.cursor/commands/gsd-*.md` (10 commands)
30
+ - Rules: `.cursor/rules/gsd-*.mdc` (4 rules)
31
+ - Skills: `.cursor/skills/gsd-team/SKILL.md` + `templates/*.md`
32
+ - Agents: `.cursor/agents/*.mdc` (PO, tech-lead, dev, QA, release, curator)
33
+ - Hooks: `.cursor/hooks.json`, `.cursor/hooks/gsd-hook.py`, `.cursor/scratchpad.md`
34
+ - Docs templates: `docs/product/*.md`, `docs/engineering/*.md`, `sprints/S0001/*`, `handoffs/*.md`, `decisions/DEC-0001.md`
35
+ - CI/CD: `.github/workflows/ci.yml`, `.github/workflows/deploy.yml`
36
+ - README updates: voice options + runbook usage
37
+
38
+ ## Implementation Outline
39
+
40
+ 1. **Scaffold repo layout** per section 4 and add starter artifacts in `docs/`, `sprints/`, `handoffs/`, `decisions/`.
41
+ 2. **Write 10 commands** in `.cursor/commands/` with explicit inputs/outputs, stop-conditions, and role usage.
42
+ 3. **Define rules** in `.cursor/rules/` for phase flow, quality gates, handoffs/state persistence, and escalation.
43
+ 4. **Create the skill** in `.cursor/skills/gsd-team/` and template files for story/acceptance/architecture/decision/sprint/handoff.
44
+ 5. **Define 6 subagents** with required IO and artifact persistence requirements.
45
+ 6. **Implement hooks** (`hooks.json` + dispatcher script) with fail-open logic, context-refresh checks, and safe-command blocking.
46
+ 7. **Add CI/CD workflows** that read `docs/engineering/runbook.md` keys and conditionally execute commands.
47
+ 8. **Update README** to document quick start, voice input strategies, and runbook-driven CI/CD.
48
+
49
+ ## Notes / Constraints
50
+
51
+ - Voice input is documented only; no runtime integration beyond documentation.
52
+ - Hooks and CI/CD must be fail-open unless commands are explicitly set.
53
+ - Decision gate should create `decisions/DEC-xxxx.md` and stop until user decision.
54
+
55
+ ## Reference (Plan Spec)
56
+
57
+ Primary source: [Plan.md](Plan.md)
@@ -0,0 +1,18 @@
1
+ {
2
+ "servers": [
3
+ {
4
+ "name": "local-docker",
5
+ "type": "docker",
6
+ "host": "unix:///var/run/docker.sock",
7
+ "notes": "Example Docker socket configuration"
8
+ },
9
+ {
10
+ "name": "remote-ssh",
11
+ "type": "ssh",
12
+ "host": "example.com",
13
+ "port": 22,
14
+ "user": "ubuntu",
15
+ "notes": "Example SSH configuration"
16
+ }
17
+ ]
18
+ }
@@ -0,0 +1,18 @@
1
+ ---
2
+ description: "GSD core workflow and context pack rules"
3
+ globs: ["**/*"]
4
+ ---
5
+
6
+ - Use the GSD phase flow: intake -> discovery -> research -> architecture ->
7
+ sprint plan -> plan verify -> execute -> QA -> verify work -> release ->
8
+ refresh context.
9
+ - `AUTO_FLOW_MODE` controls whether phases run automatically or stop at
10
+ decision gates (`auto_until_decision` recommended).
11
+ - `PHASE_MODE=interactive` means ask questions; `PHASE_MODE=auto` minimizes
12
+ prompts unless decisions are required.
13
+ - Persist decisions and state in files; do not keep critical info only in chat.
14
+ - Pause/resume is first-class. Update `handoffs/resume_brief.md` on pause.
15
+ - Context pack must stay compact: summarize, do not dump raw logs.
16
+ - If `REMOTE_EXECUTION=1` and `.cursor/remote.json` is configured, the agent
17
+ may use the configured remote/docker servers for builds/tests.
18
+
@@ -0,0 +1,11 @@
1
+ ---
2
+ description: "Decision gate and escalation logic"
3
+ globs: ["**/*"]
4
+ ---
5
+
6
+ - Trigger a decision when scope, security, data migration, or architecture
7
+ changes are high impact or unclear.
8
+ - Create `decisions/DEC-xxxx.md` with 2-3 options and a recommendation.
9
+ - Pause execution until a decision is made and recorded in
10
+ `docs/engineering/decisions.md`.
11
+
@@ -0,0 +1,10 @@
1
+ ---
2
+ description: "Handoffs and artifact persistence"
3
+ globs: ["**/*"]
4
+ ---
5
+
6
+ - Every role writes handoffs to files; nothing important stays in chat only.
7
+ - Update sprint `summary.md` and `progress.md` after task completion.
8
+ - Use `handoffs/*.md` for role-to-role transfers.
9
+ - Keep `docs/engineering/state.md` current and concise.
10
+
@@ -0,0 +1,15 @@
1
+ ---
2
+ description: "Quality gates and small-step execution"
3
+ globs: ["**/*"]
4
+ ---
5
+
6
+ - Prefer small, atomic changes tied to a single task.
7
+ - Run tests, lint, and typecheck when commands are configured.
8
+ - If `AUTO_INSTALL_DEPS=1` in `.cursor/scratchpad.md`, install required
9
+ runtimes/libs without asking (package manager only).
10
+ - If `AUTO_RELEASE_NOTES=1` in `.cursor/scratchpad.md`, generate release notes
11
+ automatically (scripted).
12
+ - If `PERMISSION_MODE=auto`, do not ask for routine permission prompts.
13
+ - Update `docs/engineering/state.md` after meaningful changes.
14
+ - If tests fail and commands are set, fix or document before proceeding.
15
+
@@ -0,0 +1,34 @@
1
+ # GSD scratchpad
2
+ #
3
+ # Core behavior
4
+ # - GSD_CONTEXT_STRICT: 0|1 (require context refresh after code changes)
5
+ # - LOOP_UNTIL_GREEN: 0|1 (optional test loop)
6
+ # - RUN_TESTS_ON_EDIT: 0|1 (run tests after edits)
7
+ # - DONE: 0|1 (stop hook loops)
8
+ GSD_CONTEXT_STRICT=1
9
+ LOOP_UNTIL_GREEN=0
10
+ RUN_TESTS_ON_EDIT=0
11
+ DONE=0
12
+ #
13
+ # Benchmarking
14
+ # - GSD_BENCH_SESSION: free-form id for live benchmark logging
15
+ GSD_BENCH_SESSION=
16
+ #
17
+ # Automation
18
+ # - AUTO_FLOW_MODE: manual|auto_until_decision
19
+ # - PHASE_MODE: interactive|auto
20
+ # - PERMISSION_MODE: interactive|auto
21
+ # - AUTO_INSTALL_DEPS: 0|1
22
+ # - AUTO_RELEASE_NOTES: 0|1
23
+ AUTO_FLOW_MODE=manual
24
+ PHASE_MODE=interactive
25
+ PERMISSION_MODE=interactive
26
+ AUTO_INSTALL_DEPS=0
27
+ AUTO_RELEASE_NOTES=0
28
+ #
29
+ # Remote execution
30
+ # - REMOTE_EXECUTION: 0|1
31
+ # - REMOTE_CONFIG: path to remote config
32
+ REMOTE_EXECUTION=0
33
+ REMOTE_CONFIG=.cursor/remote.json
34
+
@@ -0,0 +1,39 @@
1
+ # GSD Team Skill
2
+
3
+ This skill guides the AI dev team through the GSD workflow. It enforces
4
+ artifact persistence, clear handoffs, and compact context packs.
5
+
6
+ ## Workflow
7
+
8
+ 1. Intake: clarify idea, write story + acceptance.
9
+ 2. Discovery: capture design/UX references.
10
+ 3. Research: summarize patterns, risks, dependencies.
11
+ 4. Architecture: define approach, risks, decisions.
12
+ 5. Sprint plan: create sprint and tasks.
13
+ 6. Plan verify: verify tasks cover acceptance.
14
+ 7. Execute: implement task-by-task, update state.
15
+ 8. QA: test plan, findings, verification.
16
+ 9. Verify work: UAT and user-facing validation.
17
+ 10. Release: notes, runbook, readiness.
18
+ 11. Refresh context: compact state + decisions.
19
+
20
+ Optional modes:
21
+ - Quick: fast path for small tasks.
22
+ - Milestones: group phases into larger delivery cycles.
23
+
24
+ ## Required artifacts
25
+
26
+ - `docs/product/*`
27
+ - `docs/engineering/*`
28
+ - `sprints/Sxxxx/*`
29
+ - `sprints/quick/*`
30
+ - `milestones/*`
31
+ - `handoffs/*`
32
+ - `decisions/*`
33
+
34
+ ## Templates
35
+
36
+ Use templates in `templates/` for both markdown and JSON artifacts. JSON
37
+ templates are preferred for structured data (story, acceptance, architecture,
38
+ decision, sprint, handoff, plan-verify, UAT, milestone, phase context).
39
+
@@ -0,0 +1,10 @@
1
+ {
2
+ "id": "US-0001",
3
+ "criteria": [
4
+ {
5
+ "id": "AC-1",
6
+ "text": "",
7
+ "done": false
8
+ }
9
+ ]
10
+ }
@@ -0,0 +1,7 @@
1
+ # Acceptance Criteria
2
+
3
+ ## US-0001
4
+ - [ ] Criterion 1
5
+ - [ ] Criterion 2
6
+ - [ ] Criterion 3
7
+
@@ -0,0 +1,11 @@
1
+ {
2
+ "overview": "",
3
+ "components": [
4
+ {
5
+ "name": "",
6
+ "responsibility": ""
7
+ }
8
+ ],
9
+ "risks": [],
10
+ "decisions": []
11
+ }
@@ -0,0 +1,14 @@
1
+ # Architecture
2
+
3
+ ## Overview
4
+ - ...
5
+
6
+ ## Components
7
+ - ...
8
+
9
+ ## Risks
10
+ - ...
11
+
12
+ ## Decisions
13
+ - Link to `decisions/DEC-xxxx.md`
14
+
@@ -0,0 +1,14 @@
1
+ {
2
+ "id": "DEC-0001",
3
+ "status": "proposed",
4
+ "context": "",
5
+ "options": [
6
+ {
7
+ "id": "A",
8
+ "description": "",
9
+ "impact": ""
10
+ }
11
+ ],
12
+ "recommendation": "",
13
+ "impact": ""
14
+ }
@@ -0,0 +1,19 @@
1
+ # Decision
2
+
3
+ ID: DEC-0001
4
+ Status: Proposed
5
+
6
+ ## Context
7
+ - ...
8
+
9
+ ## Options
10
+ 1. Option A
11
+ 2. Option B
12
+ 3. Option C
13
+
14
+ ## Recommendation
15
+ - ...
16
+
17
+ ## Impact
18
+ - ...
19
+
@@ -0,0 +1,6 @@
1
+ {
2
+ "from": "",
3
+ "to": "",
4
+ "summary": [],
5
+ "open_items": []
6
+ }
@@ -0,0 +1,12 @@
1
+ # Handoff
2
+
3
+ From:
4
+ To:
5
+ Date:
6
+
7
+ ## Summary
8
+ - ...
9
+
10
+ ## Open items
11
+ - ...
12
+
@@ -0,0 +1,7 @@
1
+ {
2
+ "id": "M0001",
3
+ "name": "",
4
+ "goal": "",
5
+ "scope": [],
6
+ "status": "active"
7
+ }
@@ -0,0 +1,6 @@
1
+ {
2
+ "phase": "intake",
3
+ "preferences": [],
4
+ "constraints": [],
5
+ "examples": []
6
+ }
@@ -0,0 +1,11 @@
1
+ {
2
+ "sprint": "S0001",
3
+ "coverage": [
4
+ {
5
+ "acceptance_id": "AC-1",
6
+ "tasks": [],
7
+ "covered": false
8
+ }
9
+ ],
10
+ "gaps": []
11
+ }
@@ -0,0 +1,6 @@
1
+ {
2
+ "id": "S0001",
3
+ "goal": "",
4
+ "scope": [],
5
+ "risks": []
6
+ }
@@ -0,0 +1,11 @@
1
+ # Sprint
2
+
3
+ ID: S0001
4
+ Goal:
5
+
6
+ ## Scope
7
+ - ...
8
+
9
+ ## Risks
10
+ - ...
11
+
@@ -0,0 +1,9 @@
1
+ {
2
+ "id": "US-0001",
3
+ "as_a": "",
4
+ "i_want": "",
5
+ "so_that": "",
6
+ "in_scope": [],
7
+ "out_of_scope": [],
8
+ "constraints": []
9
+ }
@@ -0,0 +1,15 @@
1
+ # User Story
2
+
3
+ ID: US-0001
4
+
5
+ As a ...
6
+ I want ...
7
+ So that ...
8
+
9
+ ## Scope
10
+ - In:
11
+ - Out:
12
+
13
+ ## Constraints
14
+ - ...
15
+
@@ -0,0 +1,15 @@
1
+ {
2
+ "sprint": "S0001",
3
+ "steps": [
4
+ {
5
+ "id": "UAT-1",
6
+ "description": "",
7
+ "result": "pending",
8
+ "notes": ""
9
+ }
10
+ ],
11
+ "summary": {
12
+ "passed": 0,
13
+ "failed": 0
14
+ }
15
+ }