riskrails 3.2.2 → 4.1.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.
Files changed (149) hide show
  1. package/.claude-plugin/marketplace.json +2 -2
  2. package/.claude-plugin/plugin.json +1 -1
  3. package/.codex-plugin/plugin.json +1 -1
  4. package/README.md +50 -84
  5. package/agents/ai-reviewer.md.tmpl +1 -1
  6. package/ai/using-riskrails.md +0 -3
  7. package/bin/menu.js +116 -0
  8. package/bin/riskrails.js +132 -79
  9. package/hooks/ai-path-guard-defaults.json +1 -1
  10. package/hooks/context-guard.py +2 -4
  11. package/hooks/guard/dialog.py +14 -2
  12. package/hooks/guard/paths.py +3 -6
  13. package/hooks/guard/scope.py +1 -3
  14. package/hooks/runtime-gate.py +18 -58
  15. package/instructions/routing.md +2 -2
  16. package/package.json +1 -1
  17. package/scripts/ai-path +1 -1
  18. package/scripts/resolve-profile.py +0 -3
  19. package/skills/ai-audit/templates/ai-sdlc-adoption-plan.md +1 -1
  20. package/skills/ai-audit/templates/play-scoring-rubric.md +1 -1
  21. package/skills/ai-init/scaffold-ai.sh +2 -1
  22. package/skills/ai-init/templates/.ai/AGENTS.md +6 -6
  23. package/skills/ai-init/templates/.ai/VERSION +1 -1
  24. package/skills/ai-init/templates/.ai/policies/safety.md +4 -3
  25. package/skills/ai-init/templates/.ai/policies/security.md +1 -2
  26. package/skills/ai-init/templates/.ai/policies/testing.md +5 -12
  27. package/skills/ai-init/templates/.ai/policies/verification.md +18 -0
  28. package/skills/ai-init/templates/.ai/policies/weight.json +0 -1
  29. package/skills/ai-init/templates/.ai/policies/weight.md +1 -2
  30. package/skills/ai-init/templates/.ai/policies/weight.project.json +4 -0
  31. package/skills/ai-init/templates/.ai/project/architecture.md +1 -1
  32. package/skills/ai-init/templates/.ai/project/initial-assessment.md +2 -2
  33. package/skills/ai-init/templates/.ai/project/overview.md +1 -1
  34. package/skills/ai-init/templates/.ai/rules/README.md +2 -2
  35. package/skills/ai-init/templates/.ai/state/README.md +1 -1
  36. package/skills/ai-task/memory_store.py +8 -9
  37. package/skills/ai-task/rr_state/cli.py +2 -2
  38. package/skills/ai-task/rr_state/dialog.py +2 -4
  39. package/skills/ai-task/rr_state/dialog_cmd.py +183 -6
  40. package/skills/ai-task/rr_state/fs.py +5 -13
  41. package/skills/ai-task/rr_state/labels.py +14 -2
  42. package/skills/ai-task/rr_state/memory_cmd.py +7 -4
  43. package/skills/ai-task/rr_state/profile.py +2 -4
  44. package/skills/ai-task/rr_state/questions_cmd.py +1 -1
  45. package/skills/ai-task/rr_state/report.py +3 -4
  46. package/skills/ai-task/rr_state/runtime.py +1 -1
  47. package/skills/ai-task/rr_state/start.py +7 -7
  48. package/skills/ai-task/sensors.py +10 -11
  49. package/skills/ai-task/state.py +4 -24
  50. package/skills/ai-task/weight.py +17 -17
  51. package/skills/ai-task/weight_overlay.py +38 -0
  52. package/skills/project-init/templates/constitution.md +2 -2
  53. package/skills/project-update/history/blobs/00f5e27ce2d66e3a1d8b222b013ae8fa1fed32612d91a551e0c661cee3ef9c2d +34 -0
  54. package/skills/project-update/history/blobs/0a6b1b6dd06a35582b2e9989a1f41c40abc29254b8e482714fcc6f0a7b16c406 +32 -0
  55. package/skills/project-update/history/blobs/0aeb04b04262683cac6513545683486a73dc473b447bba43b5aaab18403957a6 +34 -0
  56. package/skills/project-update/history/blobs/0ce913a28996f546f72d570b0e5a376362e993ce4d805bc4aae57d38caa44212 +41 -0
  57. package/skills/project-update/history/blobs/0ea9e36446b624b73b2a821231b2ee66a357b43d584a5b23da48b3c800855e65 +41 -0
  58. package/skills/project-update/history/blobs/0fb1d68678a1349195b2e79433bb20174d25874e3bfd0b70410bb4e428b4e4b8 +35 -0
  59. package/skills/project-update/history/blobs/119b2b9d0f9c647a243540724edac6b29afa020c69aa205797bcfa9eb06bc021 +35 -0
  60. package/skills/project-update/history/blobs/1d0fe3ee5fb8260ba610942d4bbdfff7410fbe80ed826ac07f32985031dc2b3f +34 -0
  61. package/skills/project-update/history/blobs/1de9a37ed6402893dcab6e61ddbf15ffd35f15a6d84b18e675a0c5bf4e981f85 +42 -0
  62. package/skills/project-update/history/blobs/1f44e1a236233dcbab58064f39b69f798b35d1d9a29f8c615b5b12854ce633cb +15 -0
  63. package/skills/project-update/history/blobs/1f824645299579cbdd8141642ddbb4bca9fd5fe9d3112f036d8221f0811e0abf +40 -0
  64. package/skills/project-update/history/blobs/235fb88393cfe20dd58b35fe9785cc45baf5ffe21a13d926652d76ec68cea8b7 +35 -0
  65. package/skills/project-update/history/blobs/3918b4ee011d9477b9d2779e2893ab599749c406d4b09439a9748b64fbff58f3 +18 -0
  66. package/skills/project-update/history/blobs/449273200dfec2a56885c881ff34d40e8ecc00da53c24c2d09b7fbeb1004d255 +40 -0
  67. package/skills/project-update/history/blobs/4c45aee9b9fc5f6b4e1d9739e434c4094975a5a8dec6b9703fb25f3080680c77 +124 -0
  68. package/skills/project-update/history/blobs/4dd3fa12bc45acc8c836ab65d790248ca7504a021bca6677499d17bb3d798ed9 +64 -0
  69. package/skills/project-update/history/blobs/51e3f15095d7123ea8566b512479ee10a6cb2f336b7352a259a083a887bd7116 +33 -0
  70. package/skills/project-update/history/blobs/5497a204967bea7dab29079a6e1dfa3d8713b2d2cb294c2779378039f03a55fc +36 -0
  71. package/skills/project-update/history/blobs/60c4d7e7fde7049d92d84295fc13ca9a91eb2de423be08f093b3ee5d5e817ff8 +64 -0
  72. package/skills/project-update/history/blobs/6221b7c14cc04634e485e562d464c6860d45666a7f63e293c06bb2944ff556cc +27 -0
  73. package/skills/project-update/history/blobs/637971cfb844ef4285e2886a4b1c834fb2ed5c46e773adb88c2c147fea626ad3 +33 -0
  74. package/skills/project-update/history/blobs/65af2282eea2a51fcc27a4acf2c26c727b0961c30e1be13176369200c460c219 +34 -0
  75. package/skills/project-update/history/blobs/66ecd73e303e7bbc1aa8ee72435d0d10812ff7b2eff0adac59bbf0a303e2cc01 +41 -0
  76. package/skills/project-update/history/blobs/6a43bf32461b22b87fafe2865529dc04fa66cd00182a2a7598aa071667ca255a +35 -0
  77. package/skills/project-update/history/blobs/6d6dee8634abf9ac057bb206828b83a893a2afcf4f86bbe69e839a3b47d0adde +48 -0
  78. package/skills/project-update/history/blobs/7224ede803ea81e65a456e21b6028a0e848e8a880456c6503eebe7534ca4f6aa +74 -0
  79. package/skills/project-update/history/blobs/765a39a202617096c232017822ae738d37e4405430c71700dc7bc14bf1ba794e +33 -0
  80. package/skills/project-update/history/blobs/77577440a933d1cabd8c6f4a6401cf361a784aa09a25500a6f7b44ead8ab5e55 +41 -0
  81. package/skills/project-update/history/blobs/7bae90789625d6fb9071ecb412d14a8d1eb0bc5659d8d284c4eaf213e1b5de56 +67 -0
  82. package/skills/project-update/history/blobs/7bcdf9a0e6b85277b9b60669150224b9414d2e32821ff06f4d148eb1d18785bb +42 -0
  83. package/skills/project-update/history/blobs/7f834103e9d97aea44e76717bcdcbbe349c560e5b81a42ce85a1cec341041281 +4 -0
  84. package/skills/project-update/history/blobs/7fb3acb0211818efebc2234863db0b8c846022a7280a6d2d69f267dbf63db48c +34 -0
  85. package/skills/project-update/history/blobs/87f0855859ff68cc6c988cc0b631ee7f56af7fbba062172bf80e01f4982cc054 +35 -0
  86. package/skills/project-update/history/blobs/8abab74759766d02b5cb7b0c3e59a3d440b25a454216cd8fea325c23fd822d36 +33 -0
  87. package/skills/project-update/history/blobs/8ec171f0fbdf38cc6996d496f01491fd1f21f04a435a118ad979b127a8be06f1 +85 -0
  88. package/skills/project-update/history/blobs/a1fb50e6c86fae1679ef3351296fd6713411a08cf8dd1790a4fd05fae8688164 +1 -0
  89. package/skills/project-update/history/blobs/a3df7268feb0780be0d2cf9acced6ed81780a7790f36fe024b6ea0b1bd6eb7a6 +35 -0
  90. package/skills/project-update/history/blobs/b28721136482dafb9fd2801af340364cb97e9f6eaa987908606c786045b8d334 +28 -0
  91. package/skills/project-update/history/blobs/b3726422d767f9219fea633bea77f0c99ad9af843c591e6e928e1ccd2a47f374 +27 -0
  92. package/skills/project-update/history/blobs/b3839425f9d0ab2efa42a6f5e9488ec2d26ca5fb8dcd694b8ab098e10743ca46 +32 -0
  93. package/skills/project-update/history/blobs/ba14a457e83f9dde65e4190fdfab83b912f7398c1442a2a1cb3d89bfac741cf3 +8 -0
  94. package/skills/project-update/history/blobs/bceb7189444bb6291b262ca08e34db01010dda2f6e64d696231ec3c343c95c66 +34 -0
  95. package/skills/project-update/history/blobs/bf82a2bb4fce1bd349ff66118930a01d61a7af8e2bd8d200c721d43afc58c713 +34 -0
  96. package/skills/project-update/history/blobs/c4dbeb180292a6199ad73a3be861ece07c1f8bf6bf0cc7ca204412bc8e1bb1d8 +31 -0
  97. package/skills/project-update/history/blobs/c644838866df2001a42501a988dd7b77aacf862bf09d22b465f3cd8a22c6b6eb +33 -0
  98. package/skills/project-update/history/blobs/c980d74f76a4bdfb38c94b573ac10a54eb50b850b052e15fa6f2442889b36ccb +32 -0
  99. package/skills/project-update/history/blobs/ceed2f3bd937f862d0e6ca59ce1b1e3603e19a0d7f85d90d6dfeb7bf690153be +29 -0
  100. package/skills/project-update/history/blobs/d51ea2e893482a20c5882056cf8043327ca1dc1c957927f6746929a47ee8368e +45 -0
  101. package/skills/project-update/history/blobs/d78f5e0bb1380259fce2cce009785a9a11f6de8b87a160080b9872c059f95060 +34 -0
  102. package/skills/project-update/history/blobs/d97f46a2cca020406252b1f7baa4184617fa71faca3885e2379c44ae4e1d9327 +67 -0
  103. package/skills/project-update/history/blobs/da3ecd4c4c414c93d04488685931df39a56bf959bfeb9c45cb1aea2c13bd991b +38 -0
  104. package/skills/project-update/history/blobs/e129bf71a5a922e24b2c1bc8daa8a5d2b5589b0069770e17ce17e7db5ed4e7a4 +27 -0
  105. package/skills/project-update/history/blobs/e504529519a371892838725f8b89b5d32e3300e345bcbf2643a3a1a48434b3dd +24 -0
  106. package/skills/project-update/history/blobs/e9e62d03ca70b3dffccef8dceeb214173352cfef005145e519f0e037993f1c03 +36 -0
  107. package/skills/project-update/history/blobs/effefbaaf4beb8f1ba55081d6b7e74bf25ebb91045dd10613418f17b95fa7182 +33 -0
  108. package/skills/project-update/history/blobs/f6af4581bafbf62b257d57e06c3ae2c5998aeca608ee7df037fcc3c3e4b563a9 +34 -0
  109. package/skills/project-update/history/blobs/fc35045777d29630303430752a651b3e553580a581036a02cc103eb96a46f4b0 +34 -0
  110. package/skills/project-update/history/blobs/fdc21345c77f92a42d244aa104f393f439a0ff9981a9fd462bd837e8a47931bb +48 -0
  111. package/skills/project-update/history/index.json +34 -14
  112. package/skills/project-update/render_instructions.py +12 -45
  113. package/skills/project-update/update.py +757 -1172
  114. package/skills/rr-setup/SKILL.md +114 -97
  115. package/skills/rr-setup/scaffold_ai.py +15 -9
  116. package/skills/rr-setup/setup.py +462 -164
  117. package/skills/rr-status/status.py +7 -10
  118. package/skills/usage-report/usage-report.py +4 -5
  119. package/skills/ai-audit/SKILL.md +0 -9
  120. package/skills/ai-init/SKILL.md +0 -9
  121. package/skills/ai-status/SKILL.md +0 -9
  122. package/skills/ai-task/SKILL.md +0 -9
  123. package/skills/project-init/SKILL.md +0 -9
  124. package/skills/project-update/SKILL.md +0 -9
  125. package/skills/project-update/adopt-map.json +0 -91
  126. package/skills/project-update/adopt.py +0 -2225
  127. package/skills/project-update/migrations/0001_schema_version.py +0 -13
  128. package/skills/project-update/migrations/0002_task_journal.py +0 -123
  129. package/skills/project-update/migrations/0003_context_diet.py +0 -65
  130. package/skills/project-update/migrations/0004_deterministic_gates.py +0 -57
  131. package/skills/project-update/migrations/0005_runtimes_and_plans.py +0 -35
  132. package/skills/project-update/migrations/0006_shared_files.py +0 -154
  133. package/skills/project-update/migrations/0007_weight_model.py +0 -295
  134. package/skills/project-update/migrations/0008_renames.py +0 -43
  135. package/skills/project-update/migrations/0009_state_file.py +0 -25
  136. package/skills/project-update/migrations/0010_dialog_switch.py +0 -30
  137. package/skills/project-update/migrations/0011_retire_risk_tiers.py +0 -37
  138. package/skills/project-update/migrations/README.md +0 -76
  139. package/skills/project-update/migrations/__init__.py +0 -186
  140. package/skills/sdlc-intent/SKILL.md +0 -9
  141. package/skills/sdlc-plan/SKILL.md +0 -9
  142. package/skills/sdlc-spec/SKILL.md +0 -9
  143. package/skills/usage-report/SKILL.md +0 -10
  144. /package/{ai/workflows/refactoring.md → skills/project-update/history/blobs/36cb593293496fbcf38df828a9b9b2bc0d5a53333f584a5319ebc3d799016e24} +0 -0
  145. /package/{ai/workflows/feature.md → skills/project-update/history/blobs/56e16072c2f3edc6c8897c690d09a11d12fc414c3e3f361f359f7dc609a21282} +0 -0
  146. /package/{ai/workflows/hotfix.md → skills/project-update/history/blobs/8cbefbf1aa412bae3e5019acd40b8fe0598fceba6c781906b3bc6dbd014f6b23} +0 -0
  147. /package/{ai/workflows/bugfix.md → skills/project-update/history/blobs/af56dc16e44ae1d8c3dac4c3ca82e2163b719553c02ea455e77430bab9a14089} +0 -0
  148. /package/{ai/workflows/investigation.md → skills/project-update/history/blobs/b9e09cb24958cd6831589997558974bd6356305306e8f9685e226bcdc30d60ac} +0 -0
  149. /package/{ai/agents/manager.md → skills/project-update/history/blobs/d0cf6388f35a92a0cf607d33909278382f6d7b6a4c32e281b9f9e0ea652c7b91} +0 -0
@@ -5,7 +5,7 @@
5
5
 
6
6
  Read-only and model-free. A schema-7 task is described by `state.py status`;
7
7
  for any other task, and whenever that call fails, it reads the files directly —
8
- .ai/state/state.json (or the legacy current.json), the task's events.jsonl, .ai/policies/weight.json (else the shipped table)
8
+ .ai/state/state.json, the task's events.jsonl, .ai/policies/weight.json (else the shipped table)
9
9
  and .ai/VERSION — so it answers in a project whose state.py is older, newer or
10
10
  broken. The root is found the way the guards find it (find_ai_root in
11
11
  hooks/lib/ai-hook-common.sh): the nearest ancestor holding .ai/, not stopping at
@@ -16,7 +16,6 @@ a git root, so a .ai/ inherited from a parent directory shows up here.
16
16
  import argparse
17
17
  import json
18
18
  import os
19
- import re
20
19
  import subprocess
21
20
  import sys
22
21
 
@@ -36,9 +35,8 @@ def find_ai_root(start):
36
35
 
37
36
 
38
37
  def state_file(root):
39
- """R34: state.json, or the legacy current.json for one version."""
40
- path = os.path.join(root, ".ai", "state", "state.json")
41
- return path if os.path.isfile(path) else os.path.join(root, ".ai", "state", "current.json")
38
+ """The task's state file."""
39
+ return os.path.join(root, ".ai", "state", "state.json")
42
40
 
43
41
 
44
42
  def read_json(path):
@@ -73,13 +71,12 @@ def schema_line(root):
73
71
  project = fh.read().strip() or "0"
74
72
  except OSError:
75
73
  project = "0"
76
- # The plugin's schema is its newest migration, as update.py counts it.
74
+ # The plugin's schema is the .ai/VERSION it ships as a template (R25).
77
75
  try:
78
- names = os.listdir(os.path.join(SKILLS, "project-update", "migrations"))
76
+ with open(os.path.join(SKILLS, "ai-init", "templates", ".ai", "VERSION"), encoding="utf-8") as fh:
77
+ plugin = fh.read().strip() or "?"
79
78
  except OSError:
80
- names = []
81
- numbers = [int(name[:4]) for name in names if re.match(r"\d{4}_", name)]
82
- plugin = str(max(numbers)) if numbers else "?"
79
+ plugin = "?"
83
80
  behind = project.isdigit() and plugin.isdigit() and int(project) < int(plugin)
84
81
  return "schema: project %s · plugin %s%s" % (project, plugin, " — behind: run /rr-setup --update" if behind else "")
85
82
 
@@ -17,7 +17,7 @@ Usage:
17
17
  usage-report.py --provider codex # one runtime only
18
18
  usage-report.py --provider claude --root DIR # explicit transcript dir
19
19
  usage-report.py --task T-2026-09-21-001 [--project DIR]
20
- # one /ai-task task: its window, tokens per
20
+ # one /rr-build task: its window, tokens per
21
21
  # runtime, and each runtime's plan budget
22
22
  usage-report.py --budgets # the installed plans' budget tables
23
23
 
@@ -581,9 +581,8 @@ def runtime_home(runtime: str) -> str:
581
581
 
582
582
 
583
583
  def profile_file(home: str) -> str:
584
- """<home>/riskrails/profile.json, or the pre-3.4b claude-agentic/ one (R35, one version)."""
585
- path = os.path.join(home, "riskrails", "profile.json")
586
- return path if os.path.exists(path) else os.path.join(home, "claude-agentic", "profile.json")
584
+ """<home>/riskrails/profile.json."""
585
+ return os.path.join(home, "riskrails", "profile.json")
587
586
 
588
587
 
589
588
  def read_profile(runtime: str) -> dict:
@@ -784,7 +783,7 @@ def main() -> int:
784
783
  ap.add_argument("--root", help="explicit transcript directory (needs a single --provider)")
785
784
  ap.add_argument("--provider", choices=("auto", "claude", "codex", "both"), default="auto",
786
785
  help="which runtime's transcripts to read (default: auto — whichever are present)")
787
- ap.add_argument("--task", metavar="ID", help="one /ai-task task: window, tokens per runtime, budget")
786
+ ap.add_argument("--task", metavar="ID", help="one /rr-build task: window, tokens per runtime, budget")
788
787
  ap.add_argument("--project", metavar="DIR", help="the project holding .ai/ (default: search upwards)")
789
788
  ap.add_argument("--no-cache", action="store_true",
790
789
  help="ignore and do not write the incremental parse cache")
@@ -1,9 +0,0 @@
1
- ---
2
- name: ai-audit
3
- description: Deprecated alias of /rr-setup --audit — the twelve-play audit.
4
- ---
5
-
6
- deprecated → /rr-setup --audit
7
-
8
- Read `skills/rr-setup/SKILL.md` in the install root this skill was loaded from
9
- (`~/.claude` or `~/.codex`) and follow it with these arguments: --audit $ARGUMENTS
@@ -1,9 +0,0 @@
1
- ---
2
- name: ai-init
3
- description: Deprecated alias of /rr-setup — set up .ai/ for this project.
4
- ---
5
-
6
- deprecated → /rr-setup
7
-
8
- Read `skills/rr-setup/SKILL.md` in the install root this skill was loaded from
9
- (`~/.claude` or `~/.codex`) and follow it with these arguments: $ARGUMENTS
@@ -1,9 +0,0 @@
1
- ---
2
- name: ai-status
3
- description: Deprecated alias of /rr-status — where the current task stands.
4
- ---
5
-
6
- deprecated → /rr-status
7
-
8
- Read `skills/rr-status/SKILL.md` in the install root this skill was loaded from
9
- (`~/.claude` or `~/.codex`) and follow it with these arguments: $ARGUMENTS
@@ -1,9 +0,0 @@
1
- ---
2
- name: ai-task
3
- description: Deprecated alias of /rr-build — run one task.
4
- ---
5
-
6
- deprecated → /rr-build
7
-
8
- Read `skills/rr-build/SKILL.md` in the install root this skill was loaded from
9
- (`~/.claude` or `~/.codex`) and follow it with these arguments: $ARGUMENTS
@@ -1,9 +0,0 @@
1
- ---
2
- name: project-init
3
- description: Deprecated alias of /rr-setup — scaffold this project.
4
- ---
5
-
6
- deprecated → /rr-setup
7
-
8
- Read `skills/rr-setup/SKILL.md` in the install root this skill was loaded from
9
- (`~/.claude` or `~/.codex`) and follow it with these arguments: $ARGUMENTS
@@ -1,9 +0,0 @@
1
- ---
2
- name: project-update
3
- description: Deprecated alias of /rr-setup --update — update this project.
4
- ---
5
-
6
- deprecated → /rr-setup --update
7
-
8
- Read `skills/rr-setup/SKILL.md` in the install root this skill was loaded from
9
- (`~/.claude` or `~/.codex`) and follow it with these arguments: --update $ARGUMENTS
@@ -1,91 +0,0 @@
1
- {"version": 1,
2
- "tools": {
3
- "speckit": {"signature": [".specify/"],
4
- "roots": [".specify/", "specs/",
5
- ".claude/commands/speckit*", ".claude/skills/speckit-*",
6
- ".github/prompts/speckit*", ".github/skills/speckit-*", ".github/agents/speckit*",
7
- ".codex/prompts/speckit*", ".agents/skills/speckit-*",
8
- ".gemini/commands/speckit*",
9
- ".cursor/commands/speckit*", ".cursor/skills/speckit-*"]},
10
- "kiro": {"signature": [".kiro/"], "roots": [".kiro/"]},
11
- "aidlc": {"signature": ["aidlc-docs/"],
12
- "roots": ["aidlc-docs/", ".amazonq/rules/aws-aidlc-rules/", ".amazonq/aws-aidlc-rule-details/"]},
13
- "cursor": {"signature": [".cursorrules", ".cursor/rules/"], "roots": [".cursorrules", ".cursor/"]},
14
- "copilot": {"signature": [".github/copilot-instructions.md", ".github/instructions/"],
15
- "roots": [".github/copilot-instructions.md", ".github/instructions/"]},
16
- "junie": {"signature": [".junie/guidelines.md"], "roots": []},
17
- "gemini": {"signature": ["GEMINI.md"], "roots": []},
18
- "claude": {"signature": ["CLAUDE.md"], "roots": []},
19
- "codex": {"signature": ["AGENTS.md"], "roots": []}
20
- },
21
- "own": {
22
- "_doc": "setup.py survey|adopt: a project's own toolbox, inventoried in place (SQ5) — never copied, never moved; update.py --adopt does not read this key",
23
- "inventory": [
24
- {"glob": ".claude/skills/*/SKILL.md", "kind": "skill", "router": "skill"},
25
- {"glob": ".claude/commands/**/*.md", "kind": "command", "router": "command"},
26
- {"glob": ".claude/rules/**/*.md", "kind": "rule"},
27
- {"glob": ".claude/agents/*.md", "kind": "agent"},
28
- {"glob": ".claude/hooks/*", "kind": "hook"},
29
- {"glob": ".agents/skills/*/SKILL.md", "kind": "skill", "router": "skill"},
30
- {"glob": ".codex/skills/*/SKILL.md", "kind": "skill", "router": "skill"},
31
- {"glob": ".codex/prompts/*.md", "kind": "command", "router": "command"},
32
- {"glob": ".codex/agents/*", "kind": "agent"},
33
- {"glob": ".codex/hooks/*", "kind": "hook"},
34
- {"glob": "bin/*.sh", "kind": "script"},
35
- {"glob": "Makefile", "kind": "make"}
36
- ],
37
- "guards": {
38
- "ai-git-guard": ["git", "commit", "push", "merge"],
39
- "ai-path-guard": ["path", "protect", "protected", "secret", "secrets", "dotenv"],
40
- "ai-scope-guard": ["scope"]
41
- },
42
- "verify": [
43
- {"file": "Makefile", "make_target": ["test", "tests", "check", "qa"], "command": "make {name}"},
44
- {"file": "composer.json", "script": ["test", "tests", "qa", "check"], "command": "composer {name}"},
45
- {"file": "package.json", "script": ["test"], "command": "npm test"},
46
- {"file": "bin/*.sh", "stem": ["test", "tests", "run-tests", "check"], "command": "bin/{name}.sh"},
47
- {"file": "phpunit.xml.dist", "command": "vendor/bin/phpunit"},
48
- {"file": "phpunit.xml", "command": "vendor/bin/phpunit"},
49
- {"file": "pytest.ini", "command": "python3 -m pytest"}
50
- ]
51
- },
52
- "rows": [
53
- {"tool":"speckit","source":".specify/memory/constitution.md","dest":"docs/sdlc/constitution.md","transform":"append-section","cleanup":true},
54
- {"tool":"speckit","source":"specs/*/spec.md","dest":"docs/sdlc/specs/{dir}.md","transform":"copy","cleanup":true,"router":"an adopted Spec Kit spec"},
55
- {"tool":"speckit","source":"specs/*/plan.md","dest":"docs/sdlc/plans/{dir}.md","transform":"copy","cleanup":true,"router":"an adopted Spec Kit plan"},
56
- {"tool":"speckit","source":"specs/*/tasks.md","dest":"docs/sdlc/plans/{dir}-tasks.md","transform":"copy","cleanup":true},
57
- {"tool":"speckit","source":"specs/*/*.md","dest":"docs/sdlc/specs/{dir}-{stem}.md","transform":"copy","cleanup":true},
58
- {"tool":"speckit","source":"specs/*/checklists/*.md","dest":"docs/sdlc/specs/{rel}.md","transform":"copy","cleanup":true},
59
- {"tool":"speckit","source":".specify/templates/**","transform":"drop","why":"Spec Kit templates; docs/sdlc/*/TEMPLATE.md replace them","cleanup":true},
60
- {"tool":"speckit","source":".specify/scripts/**","transform":"drop","why":"Spec Kit tool machinery; the skills replace it","cleanup":true},
61
- {"tool":"speckit","source":".specify/extensions/**","transform":"drop","why":"Spec Kit tool machinery; the skills replace it","cleanup":true},
62
- {"tool":"speckit","source":".specify/presets/**","transform":"drop","why":"Spec Kit tool machinery; the skills replace it","cleanup":true},
63
- {"tool":"speckit","source":".specify/workflows/**","transform":"drop","why":"Spec Kit tool machinery; the skills replace it","cleanup":true},
64
- {"tool":"speckit","source":".specify/integrations/**","transform":"drop","why":"Spec Kit tool machinery; the skills replace it","cleanup":true},
65
- {"tool":"speckit","source":".specify/*.json","transform":"drop","why":"Spec Kit tool machinery; the skills replace it","cleanup":true},
66
- {"tool":"speckit","source":".specify/extensions.yml","transform":"drop","why":"Spec Kit tool machinery; the skills replace it","cleanup":true},
67
- {"tool":"speckit","source":"*/**/speckit*","transform":"drop","why":"Spec Kit agent commands; they call .specify/ and the sdlc skills replace them","cleanup":true},
68
- {"tool":"speckit","source":"*/**/speckit-*/**","transform":"drop","why":"Spec Kit agent skills; they call .specify/ and the sdlc skills replace them","cleanup":true},
69
- {"tool":"kiro","source":".kiro/steering/aws-aidlc-rules/**","transform":"ignore","why":"the AI-DLC methodology installed for Kiro, not project knowledge; kept in place"},
70
- {"tool":"kiro","source":".kiro/aws-aidlc-rule-details/**","transform":"ignore","why":"the AI-DLC methodology installed for Kiro, not project knowledge; kept in place"},
71
- {"tool":"kiro","source":".kiro/steering/*.md","dest":"auto","transform":"rule","cleanup":true,"frontmatter":{"paths":"fileMatchPattern","always":"inclusion=always","always_when_absent":true}},
72
- {"tool":"kiro","source":".kiro/specs/*/requirements.md","dest":"docs/sdlc/intent/{dir}.md","transform":"copy","cleanup":true,"router":"an adopted Kiro requirement"},
73
- {"tool":"kiro","source":".kiro/specs/*/design.md","dest":"docs/sdlc/specs/{dir}.md","transform":"copy","cleanup":true},
74
- {"tool":"kiro","source":".kiro/specs/*/tasks.md","dest":"docs/sdlc/plans/{dir}.md","transform":"copy","cleanup":true},
75
- {"tool":"kiro","source":".kiro/settings/**","transform":"ignore","why":"Kiro tool configuration"},
76
- {"tool":"aidlc","source":"aidlc-docs/aidlc-state.md","transform":"drop","why":"AI-DLC workflow tracker; .ai/state/ replaces it","cleanup":true},
77
- {"tool":"aidlc","source":"aidlc-docs/audit.md","transform":"ignore","why":"AI-DLC audit trail; history, kept in place"},
78
- {"tool":"aidlc","source":"aidlc-docs/inception/**/*.md","dest":"docs/sdlc/intent/aidlc-{rel}.md","transform":"copy","cleanup":true},
79
- {"tool":"aidlc","source":"aidlc-docs/construction/**/*.md","dest":"docs/sdlc/plans/aidlc-{rel}.md","transform":"copy","cleanup":true},
80
- {"tool":"aidlc","source":".amazonq/rules/aws-aidlc-rules/**","transform":"ignore","why":"the AI-DLC methodology, not project knowledge; kept in place"},
81
- {"tool":"aidlc","source":".amazonq/aws-aidlc-rule-details/**","transform":"ignore","why":"the AI-DLC methodology, not project knowledge; kept in place"},
82
- {"tool":"cursor","source":".cursorrules","dest":".ai/policies/adopted/cursorrules.md","transform":"copy","cleanup":true,"router":"anything, first (rules adopted from Cursor)"},
83
- {"tool":"cursor","source":".cursor/rules/**/*.mdc","dest":"auto","transform":"rule","cleanup":true,"frontmatter":{"paths":"globs","always":"alwaysApply=true","title":"description"}},
84
- {"tool":"cursor","source":".cursor/*","transform":"ignore","why":"Cursor tool configuration (mcp.json and the like)"},
85
- {"tool":"copilot","source":".github/copilot-instructions.md","dest":".ai/policies/adopted/copilot-instructions.md","transform":"copy","cleanup":true,"router":"anything, first (rules adopted from Copilot)"},
86
- {"tool":"copilot","source":".github/instructions/*.instructions.md","dest":"auto","transform":"rule","cleanup":true,"frontmatter":{"paths":"applyTo","title":"description"}},
87
- {"tool":"junie","source":".junie/guidelines.md","transform":"instruction-file","cleanup":false},
88
- {"tool":"gemini","source":"GEMINI.md","transform":"instruction-file","cleanup":false},
89
- {"tool":"claude","source":"CLAUDE.md","transform":"instruction-file","cleanup":false},
90
- {"tool":"codex","source":"AGENTS.md","transform":"instruction-file","cleanup":false}
91
- ]}