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,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
+