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.
- package/.cursor/agents/curator.mdc +21 -0
- package/.cursor/agents/dev.mdc +20 -0
- package/.cursor/agents/po.mdc +19 -0
- package/.cursor/agents/qa.mdc +19 -0
- package/.cursor/agents/release.mdc +19 -0
- package/.cursor/agents/tech-lead.mdc +21 -0
- package/.cursor/commands/gsd-architecture.md +29 -0
- package/.cursor/commands/gsd-auto.md +27 -0
- package/.cursor/commands/gsd-discovery.md +27 -0
- package/.cursor/commands/gsd-execute.md +32 -0
- package/.cursor/commands/gsd-intake.md +28 -0
- package/.cursor/commands/gsd-map-codebase.md +25 -0
- package/.cursor/commands/gsd-milestone-complete.md +24 -0
- package/.cursor/commands/gsd-milestone-start.md +26 -0
- package/.cursor/commands/gsd-pause.md +25 -0
- package/.cursor/commands/gsd-phase-context.md +25 -0
- package/.cursor/commands/gsd-plan-verify.md +26 -0
- package/.cursor/commands/gsd-qa.md +28 -0
- package/.cursor/commands/gsd-quick.md +24 -0
- package/.cursor/commands/gsd-refresh-context.md +26 -0
- package/.cursor/commands/gsd-release.md +29 -0
- package/.cursor/commands/gsd-research.md +28 -0
- package/.cursor/commands/gsd-resume.md +26 -0
- package/.cursor/commands/gsd-sprint-plan.md +30 -0
- package/.cursor/commands/gsd-verify-work.md +25 -0
- package/.cursor/hooks/README.md +13 -0
- package/.cursor/hooks/gsd-hook.py +197 -0
- package/.cursor/hooks.json +26 -0
- package/.cursor/plans/cursor-gsd-team-kit_8cfee9b8.plan.md +57 -0
- package/.cursor/remote.json +18 -0
- package/.cursor/rules/gsd-core.mdc +18 -0
- package/.cursor/rules/gsd-escalation.mdc +11 -0
- package/.cursor/rules/gsd-handoffs.mdc +10 -0
- package/.cursor/rules/gsd-quality.mdc +15 -0
- package/.cursor/scratchpad.md +34 -0
- package/.cursor/skills/gsd-team/SKILL.md +39 -0
- package/.cursor/skills/gsd-team/templates/acceptance.json +10 -0
- package/.cursor/skills/gsd-team/templates/acceptance.md +7 -0
- package/.cursor/skills/gsd-team/templates/architecture.json +11 -0
- package/.cursor/skills/gsd-team/templates/architecture.md +14 -0
- package/.cursor/skills/gsd-team/templates/decision.json +14 -0
- package/.cursor/skills/gsd-team/templates/decision.md +19 -0
- package/.cursor/skills/gsd-team/templates/handoff.json +6 -0
- package/.cursor/skills/gsd-team/templates/handoff.md +12 -0
- package/.cursor/skills/gsd-team/templates/milestone.json +7 -0
- package/.cursor/skills/gsd-team/templates/phase-context.json +6 -0
- package/.cursor/skills/gsd-team/templates/plan-verify.json +11 -0
- package/.cursor/skills/gsd-team/templates/sprint.json +6 -0
- package/.cursor/skills/gsd-team/templates/sprint.md +11 -0
- package/.cursor/skills/gsd-team/templates/story.json +9 -0
- package/.cursor/skills/gsd-team/templates/story.md +15 -0
- package/.cursor/skills/gsd-team/templates/uat.json +15 -0
- package/.github/workflows/ci.yml +47 -0
- package/.github/workflows/deploy.yml +56 -0
- package/README.md +755 -0
- package/bin/its-magic.js +86 -0
- package/decisions/DEC-0001.md +21 -0
- package/decisions/DEC-0002.md +21 -0
- package/docs/engineering/architecture.md +354 -0
- package/docs/engineering/codebase-map.md +14 -0
- package/docs/engineering/context/phase-template.json +6 -0
- package/docs/engineering/decisions.md +6 -0
- package/docs/engineering/dependencies.json +5 -0
- package/docs/engineering/research.md +11 -0
- package/docs/engineering/runbook.md +32 -0
- package/docs/engineering/state.md +33 -0
- package/docs/product/acceptance.md +6 -0
- package/docs/product/backlog.md +7 -0
- package/docs/product/vision.md +46 -0
- package/gsd-installer.ps1 +189 -0
- package/gsd-installer.py +195 -0
- package/gsd-installer.sh +201 -0
- package/handoffs/dev_to_qa.md +8 -0
- package/handoffs/po_to_tl.md +8 -0
- package/handoffs/qa_to_dev.md +6 -0
- package/handoffs/release_notes.md +14 -0
- package/handoffs/resume_brief.md +8 -0
- package/handoffs/tl_to_dev.md +7 -0
- package/milestones/M0001/milestone.json +7 -0
- package/milestones/M0001/phases.json +9 -0
- package/milestones/M0001/progress.md +3 -0
- package/milestones/M0001/summary.md +3 -0
- package/package.json +38 -0
- package/scripts/generate-release-notes.ps1 +74 -0
- package/scripts/generate-release-notes.sh +63 -0
- package/scripts/release-all.ps1 +423 -0
- package/scripts/release-all.sh +226 -0
- package/sprints/S0001/plan-verify.json +5 -0
- package/sprints/S0001/progress.md +4 -0
- package/sprints/S0001/qa-findings.md +113 -0
- package/sprints/S0001/sprint.md +70 -0
- package/sprints/S0001/summary.md +46 -0
- package/sprints/S0001/tasks.md +35 -0
- package/sprints/S0001/uat.json +8 -0
- package/sprints/S0001/uat.md +8 -0
- package/sprints/quick/Q0001/summary.md +3 -0
- package/sprints/quick/Q0001/task.json +6 -0
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
name: ci
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: ["main"]
|
|
6
|
+
pull_request:
|
|
7
|
+
|
|
8
|
+
jobs:
|
|
9
|
+
checks:
|
|
10
|
+
runs-on: ubuntu-latest
|
|
11
|
+
steps:
|
|
12
|
+
- uses: actions/checkout@v4
|
|
13
|
+
- id: runbook
|
|
14
|
+
name: Read runbook commands
|
|
15
|
+
run: |
|
|
16
|
+
python - <<'PY'
|
|
17
|
+
import os
|
|
18
|
+
import pathlib
|
|
19
|
+
import re
|
|
20
|
+
|
|
21
|
+
text = pathlib.Path("docs/engineering/runbook.md").read_text()
|
|
22
|
+
|
|
23
|
+
def get(key):
|
|
24
|
+
m = re.search(rf"^{key}:\s*(.*)$", text, re.M)
|
|
25
|
+
val = (m.group(1) or "").strip() if m else ""
|
|
26
|
+
if val in ("", "...", "<...>", "TODO"):
|
|
27
|
+
return ""
|
|
28
|
+
return val
|
|
29
|
+
|
|
30
|
+
keys = ["TEST_COMMAND", "LINT_COMMAND", "TYPECHECK_COMMAND"]
|
|
31
|
+
with open(os.environ["GITHUB_OUTPUT"], "a") as f:
|
|
32
|
+
for key in keys:
|
|
33
|
+
f.write(f"{key}={get(key)}\n")
|
|
34
|
+
PY
|
|
35
|
+
- name: Test
|
|
36
|
+
if: steps.runbook.outputs.TEST_COMMAND != ''
|
|
37
|
+
run: ${{ steps.runbook.outputs.TEST_COMMAND }}
|
|
38
|
+
- name: Lint
|
|
39
|
+
if: steps.runbook.outputs.LINT_COMMAND != ''
|
|
40
|
+
run: ${{ steps.runbook.outputs.LINT_COMMAND }}
|
|
41
|
+
- name: Typecheck
|
|
42
|
+
if: steps.runbook.outputs.TYPECHECK_COMMAND != ''
|
|
43
|
+
run: ${{ steps.runbook.outputs.TYPECHECK_COMMAND }}
|
|
44
|
+
- name: No commands set
|
|
45
|
+
if: steps.runbook.outputs.TEST_COMMAND == '' && steps.runbook.outputs.LINT_COMMAND == '' && steps.runbook.outputs.TYPECHECK_COMMAND == ''
|
|
46
|
+
run: echo "No runbook commands set."
|
|
47
|
+
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
name: deploy
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
workflow_dispatch:
|
|
5
|
+
inputs:
|
|
6
|
+
environment:
|
|
7
|
+
description: "Target environment"
|
|
8
|
+
required: true
|
|
9
|
+
type: choice
|
|
10
|
+
options:
|
|
11
|
+
- staging
|
|
12
|
+
- prod
|
|
13
|
+
|
|
14
|
+
jobs:
|
|
15
|
+
deploy:
|
|
16
|
+
runs-on: ubuntu-latest
|
|
17
|
+
steps:
|
|
18
|
+
- uses: actions/checkout@v4
|
|
19
|
+
- id: runbook
|
|
20
|
+
name: Read deploy commands
|
|
21
|
+
run: |
|
|
22
|
+
python - <<'PY'
|
|
23
|
+
import os
|
|
24
|
+
import pathlib
|
|
25
|
+
import re
|
|
26
|
+
|
|
27
|
+
text = pathlib.Path("docs/engineering/runbook.md").read_text()
|
|
28
|
+
|
|
29
|
+
def get(key):
|
|
30
|
+
m = re.search(rf"^{key}:\s*(.*)$", text, re.M)
|
|
31
|
+
val = (m.group(1) or "").strip() if m else ""
|
|
32
|
+
if val in ("", "...", "<...>", "TODO"):
|
|
33
|
+
return ""
|
|
34
|
+
return val
|
|
35
|
+
|
|
36
|
+
with open(os.environ["GITHUB_OUTPUT"], "a") as f:
|
|
37
|
+
f.write(f"DEPLOY_STAGING_COMMAND={get('DEPLOY_STAGING_COMMAND')}\n")
|
|
38
|
+
f.write(f"DEPLOY_PROD_COMMAND={get('DEPLOY_PROD_COMMAND')}\n")
|
|
39
|
+
PY
|
|
40
|
+
- name: Deploy staging
|
|
41
|
+
if: inputs.environment == 'staging'
|
|
42
|
+
run: |
|
|
43
|
+
if [ -z "${{ steps.runbook.outputs.DEPLOY_STAGING_COMMAND }}" ]; then
|
|
44
|
+
echo "Missing DEPLOY_STAGING_COMMAND"
|
|
45
|
+
exit 1
|
|
46
|
+
fi
|
|
47
|
+
${{ steps.runbook.outputs.DEPLOY_STAGING_COMMAND }}
|
|
48
|
+
- name: Deploy prod
|
|
49
|
+
if: inputs.environment == 'prod'
|
|
50
|
+
run: |
|
|
51
|
+
if [ -z "${{ steps.runbook.outputs.DEPLOY_PROD_COMMAND }}" ]; then
|
|
52
|
+
echo "Missing DEPLOY_PROD_COMMAND"
|
|
53
|
+
exit 1
|
|
54
|
+
fi
|
|
55
|
+
${{ steps.runbook.outputs.DEPLOY_PROD_COMMAND }}
|
|
56
|
+
|