@kiwidata/grimoire 0.1.1

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 (215) hide show
  1. package/.claude-plugin/plugin.json +8 -0
  2. package/AGENTS.md +217 -0
  3. package/README.md +748 -0
  4. package/bin/grimoire.js +2 -0
  5. package/dist/cli/index.d.ts +2 -0
  6. package/dist/cli/index.d.ts.map +1 -0
  7. package/dist/cli/index.js +42 -0
  8. package/dist/cli/index.js.map +1 -0
  9. package/dist/commands/archive.d.ts +3 -0
  10. package/dist/commands/archive.d.ts.map +1 -0
  11. package/dist/commands/archive.js +22 -0
  12. package/dist/commands/archive.js.map +1 -0
  13. package/dist/commands/branch-check.d.ts +3 -0
  14. package/dist/commands/branch-check.d.ts.map +1 -0
  15. package/dist/commands/branch-check.js +16 -0
  16. package/dist/commands/branch-check.js.map +1 -0
  17. package/dist/commands/check.d.ts +3 -0
  18. package/dist/commands/check.d.ts.map +1 -0
  19. package/dist/commands/check.js +22 -0
  20. package/dist/commands/check.js.map +1 -0
  21. package/dist/commands/ci.d.ts +3 -0
  22. package/dist/commands/ci.d.ts.map +1 -0
  23. package/dist/commands/ci.js +18 -0
  24. package/dist/commands/ci.js.map +1 -0
  25. package/dist/commands/diff.d.ts +3 -0
  26. package/dist/commands/diff.d.ts.map +1 -0
  27. package/dist/commands/diff.js +10 -0
  28. package/dist/commands/diff.js.map +1 -0
  29. package/dist/commands/docs.d.ts +3 -0
  30. package/dist/commands/docs.d.ts.map +1 -0
  31. package/dist/commands/docs.js +11 -0
  32. package/dist/commands/docs.js.map +1 -0
  33. package/dist/commands/health.d.ts +3 -0
  34. package/dist/commands/health.d.ts.map +1 -0
  35. package/dist/commands/health.js +13 -0
  36. package/dist/commands/health.js.map +1 -0
  37. package/dist/commands/init.d.ts +3 -0
  38. package/dist/commands/init.d.ts.map +1 -0
  39. package/dist/commands/init.js +21 -0
  40. package/dist/commands/init.js.map +1 -0
  41. package/dist/commands/list.d.ts +3 -0
  42. package/dist/commands/list.d.ts.map +1 -0
  43. package/dist/commands/list.js +22 -0
  44. package/dist/commands/list.js.map +1 -0
  45. package/dist/commands/log.d.ts +3 -0
  46. package/dist/commands/log.d.ts.map +1 -0
  47. package/dist/commands/log.js +15 -0
  48. package/dist/commands/log.js.map +1 -0
  49. package/dist/commands/map.d.ts +3 -0
  50. package/dist/commands/map.d.ts.map +1 -0
  51. package/dist/commands/map.js +17 -0
  52. package/dist/commands/map.js.map +1 -0
  53. package/dist/commands/pr.d.ts +3 -0
  54. package/dist/commands/pr.d.ts.map +1 -0
  55. package/dist/commands/pr.js +17 -0
  56. package/dist/commands/pr.js.map +1 -0
  57. package/dist/commands/status.d.ts +3 -0
  58. package/dist/commands/status.d.ts.map +1 -0
  59. package/dist/commands/status.js +12 -0
  60. package/dist/commands/status.js.map +1 -0
  61. package/dist/commands/test-quality.d.ts +3 -0
  62. package/dist/commands/test-quality.d.ts.map +1 -0
  63. package/dist/commands/test-quality.js +37 -0
  64. package/dist/commands/test-quality.js.map +1 -0
  65. package/dist/commands/trace.d.ts +3 -0
  66. package/dist/commands/trace.d.ts.map +1 -0
  67. package/dist/commands/trace.js +12 -0
  68. package/dist/commands/trace.js.map +1 -0
  69. package/dist/commands/update.d.ts +3 -0
  70. package/dist/commands/update.d.ts.map +1 -0
  71. package/dist/commands/update.js +22 -0
  72. package/dist/commands/update.js.map +1 -0
  73. package/dist/commands/validate.d.ts +3 -0
  74. package/dist/commands/validate.d.ts.map +1 -0
  75. package/dist/commands/validate.js +17 -0
  76. package/dist/commands/validate.js.map +1 -0
  77. package/dist/core/archive.d.ts +9 -0
  78. package/dist/core/archive.d.ts.map +1 -0
  79. package/dist/core/archive.js +92 -0
  80. package/dist/core/archive.js.map +1 -0
  81. package/dist/core/branch-check.d.ts +27 -0
  82. package/dist/core/branch-check.d.ts.map +1 -0
  83. package/dist/core/branch-check.js +205 -0
  84. package/dist/core/branch-check.js.map +1 -0
  85. package/dist/core/check.d.ts +24 -0
  86. package/dist/core/check.d.ts.map +1 -0
  87. package/dist/core/check.js +372 -0
  88. package/dist/core/check.js.map +1 -0
  89. package/dist/core/ci.d.ts +24 -0
  90. package/dist/core/ci.d.ts.map +1 -0
  91. package/dist/core/ci.js +162 -0
  92. package/dist/core/ci.js.map +1 -0
  93. package/dist/core/detect.d.ts +10 -0
  94. package/dist/core/detect.d.ts.map +1 -0
  95. package/dist/core/detect.js +368 -0
  96. package/dist/core/detect.js.map +1 -0
  97. package/dist/core/diff.d.ts +29 -0
  98. package/dist/core/diff.d.ts.map +1 -0
  99. package/dist/core/diff.js +197 -0
  100. package/dist/core/diff.js.map +1 -0
  101. package/dist/core/doc-style.d.ts +16 -0
  102. package/dist/core/doc-style.d.ts.map +1 -0
  103. package/dist/core/doc-style.js +192 -0
  104. package/dist/core/doc-style.js.map +1 -0
  105. package/dist/core/docs.d.ts +6 -0
  106. package/dist/core/docs.d.ts.map +1 -0
  107. package/dist/core/docs.js +478 -0
  108. package/dist/core/docs.js.map +1 -0
  109. package/dist/core/health.d.ts +7 -0
  110. package/dist/core/health.d.ts.map +1 -0
  111. package/dist/core/health.js +489 -0
  112. package/dist/core/health.js.map +1 -0
  113. package/dist/core/hooks.d.ts +5 -0
  114. package/dist/core/hooks.d.ts.map +1 -0
  115. package/dist/core/hooks.js +168 -0
  116. package/dist/core/hooks.js.map +1 -0
  117. package/dist/core/init.d.ts +9 -0
  118. package/dist/core/init.d.ts.map +1 -0
  119. package/dist/core/init.js +563 -0
  120. package/dist/core/init.js.map +1 -0
  121. package/dist/core/list.d.ts +4 -0
  122. package/dist/core/list.d.ts.map +1 -0
  123. package/dist/core/list.js +170 -0
  124. package/dist/core/list.js.map +1 -0
  125. package/dist/core/log.d.ts +8 -0
  126. package/dist/core/log.d.ts.map +1 -0
  127. package/dist/core/log.js +150 -0
  128. package/dist/core/log.js.map +1 -0
  129. package/dist/core/map.d.ts +9 -0
  130. package/dist/core/map.d.ts.map +1 -0
  131. package/dist/core/map.js +302 -0
  132. package/dist/core/map.js.map +1 -0
  133. package/dist/core/pr.d.ts +9 -0
  134. package/dist/core/pr.d.ts.map +1 -0
  135. package/dist/core/pr.js +273 -0
  136. package/dist/core/pr.js.map +1 -0
  137. package/dist/core/shared-setup.d.ts +52 -0
  138. package/dist/core/shared-setup.d.ts.map +1 -0
  139. package/dist/core/shared-setup.js +221 -0
  140. package/dist/core/shared-setup.js.map +1 -0
  141. package/dist/core/status.d.ts +6 -0
  142. package/dist/core/status.d.ts.map +1 -0
  143. package/dist/core/status.js +114 -0
  144. package/dist/core/status.js.map +1 -0
  145. package/dist/core/test-quality.d.ts +33 -0
  146. package/dist/core/test-quality.d.ts.map +1 -0
  147. package/dist/core/test-quality.js +378 -0
  148. package/dist/core/test-quality.js.map +1 -0
  149. package/dist/core/trace.d.ts +6 -0
  150. package/dist/core/trace.d.ts.map +1 -0
  151. package/dist/core/trace.js +211 -0
  152. package/dist/core/trace.js.map +1 -0
  153. package/dist/core/update.d.ts +10 -0
  154. package/dist/core/update.d.ts.map +1 -0
  155. package/dist/core/update.js +149 -0
  156. package/dist/core/update.js.map +1 -0
  157. package/dist/core/validate.d.ts +20 -0
  158. package/dist/core/validate.d.ts.map +1 -0
  159. package/dist/core/validate.js +275 -0
  160. package/dist/core/validate.js.map +1 -0
  161. package/dist/index.d.ts +19 -0
  162. package/dist/index.d.ts.map +1 -0
  163. package/dist/index.js +20 -0
  164. package/dist/index.js.map +1 -0
  165. package/dist/utils/config.d.ts +61 -0
  166. package/dist/utils/config.d.ts.map +1 -0
  167. package/dist/utils/config.js +172 -0
  168. package/dist/utils/config.js.map +1 -0
  169. package/dist/utils/fs.d.ts +17 -0
  170. package/dist/utils/fs.d.ts.map +1 -0
  171. package/dist/utils/fs.js +38 -0
  172. package/dist/utils/fs.js.map +1 -0
  173. package/dist/utils/paths.d.ts +10 -0
  174. package/dist/utils/paths.d.ts.map +1 -0
  175. package/dist/utils/paths.js +35 -0
  176. package/dist/utils/paths.js.map +1 -0
  177. package/dist/utils/spawn.d.ts +5 -0
  178. package/dist/utils/spawn.d.ts.map +1 -0
  179. package/dist/utils/spawn.js +34 -0
  180. package/dist/utils/spawn.js.map +1 -0
  181. package/package.json +68 -0
  182. package/skills/grimoire-apply/SKILL.md +274 -0
  183. package/skills/grimoire-audit/SKILL.md +129 -0
  184. package/skills/grimoire-branch-guard/SKILL.md +111 -0
  185. package/skills/grimoire-bug/SKILL.md +160 -0
  186. package/skills/grimoire-bug-explore/SKILL.md +242 -0
  187. package/skills/grimoire-bug-report/SKILL.md +237 -0
  188. package/skills/grimoire-bug-session/SKILL.md +222 -0
  189. package/skills/grimoire-bug-triage/SKILL.md +274 -0
  190. package/skills/grimoire-commit/SKILL.md +150 -0
  191. package/skills/grimoire-discover/SKILL.md +297 -0
  192. package/skills/grimoire-draft/SKILL.md +202 -0
  193. package/skills/grimoire-plan/SKILL.md +329 -0
  194. package/skills/grimoire-pr/SKILL.md +134 -0
  195. package/skills/grimoire-pr-review/SKILL.md +240 -0
  196. package/skills/grimoire-refactor/SKILL.md +251 -0
  197. package/skills/grimoire-remove/SKILL.md +112 -0
  198. package/skills/grimoire-review/SKILL.md +247 -0
  199. package/skills/grimoire-verify/SKILL.md +223 -0
  200. package/skills/references/bug-classification.md +154 -0
  201. package/skills/references/build-vs-buy.md +77 -0
  202. package/skills/references/elicitation-personas.md +118 -0
  203. package/skills/references/refactor-register-format.md +88 -0
  204. package/skills/references/refactor-scan-categories.md +102 -0
  205. package/skills/references/schema-format.md +68 -0
  206. package/skills/references/security-compliance.md +110 -0
  207. package/skills/references/testing-contracts.md +93 -0
  208. package/templates/context.yml +110 -0
  209. package/templates/debt-exceptions.yml +61 -0
  210. package/templates/decision.md +50 -0
  211. package/templates/dupignore +93 -0
  212. package/templates/example.feature +24 -0
  213. package/templates/manifest.md +29 -0
  214. package/templates/mapignore +58 -0
  215. package/templates/mapkeys +65 -0
@@ -0,0 +1,110 @@
1
+ # Grimoire Project Context
2
+ # Captures the deployment environment, related services, and infrastructure
3
+ # that this project depends on or interacts with.
4
+ #
5
+ # This file is NOT a decision record — it describes what IS.
6
+ # Update it when the environment changes (new service, migration, etc.)
7
+ #
8
+ # Created by: grimoire init
9
+ # Last updated: YYYY-MM-DD
10
+
11
+ # --- Deployment ---
12
+ # How and where this project is deployed.
13
+
14
+ deployment:
15
+ # target: ecs | kubernetes | heroku | vercel | lambda | vm | docker-compose | manual
16
+ target:
17
+ # regions: [us-east-1, eu-west-1]
18
+ regions: []
19
+ # environments and their URLs or identifiers
20
+ environments:
21
+ # dev:
22
+ # url: https://dev.example.com
23
+ # notes: "auto-deploys from main"
24
+ # staging:
25
+ # url: https://staging.example.com
26
+ # production:
27
+ # url: https://example.com
28
+ # Path to deploy scripts, Helm charts, Terraform, CDK, etc.
29
+ scripts: []
30
+ # - path: deploy/
31
+ # type: terraform
32
+ # - path: k8s/
33
+ # type: helm
34
+ # - path: .github/workflows/deploy.yml
35
+ # type: github-actions
36
+
37
+ # --- Related Services ---
38
+ # Sibling services this project communicates with at runtime.
39
+ # These are services your team or org owns — for third-party APIs,
40
+ # use schema.yml's external_api section instead.
41
+
42
+ services: []
43
+ # - name: auth-service
44
+ # repo: github.com/org/auth-service
45
+ # owner: platform-team
46
+ # purpose: "Handles OAuth2 flows and token issuance"
47
+ # protocol: grpc
48
+ # port: 50051
49
+ # - name: notification-service
50
+ # repo: github.com/org/notifications
51
+ # owner: platform-team
52
+ # purpose: "Email, SMS, and push notifications"
53
+ # protocol: rest
54
+ # base_url: http://notifications.internal:8080
55
+ # - name: frontend
56
+ # repo: github.com/org/web-app
57
+ # owner: product-team
58
+ # purpose: "React SPA — consumes this project's API"
59
+ # protocol: rest
60
+
61
+ # --- Infrastructure ---
62
+ # Runtime dependencies: databases, caches, queues, storage, etc.
63
+
64
+ infrastructure: []
65
+ # - type: postgres
66
+ # purpose: "Primary data store"
67
+ # host: "${DATABASE_HOST}"
68
+ # notes: "RDS, multi-AZ in production"
69
+ # - type: redis
70
+ # purpose: "Cache and session store"
71
+ # host: "${REDIS_HOST}"
72
+ # - type: rabbitmq
73
+ # purpose: "Async task queue"
74
+ # host: "${BROKER_HOST}"
75
+ # notes: "CloudAMQP in production, docker locally"
76
+ # - type: s3
77
+ # purpose: "User uploads and media"
78
+ # bucket: "${MEDIA_BUCKET}"
79
+
80
+ # --- CI/CD ---
81
+ # Where the build and deploy pipelines live.
82
+
83
+ ci_cd:
84
+ # platform: github-actions | gitlab-ci | circleci | jenkins | buildkite
85
+ platform:
86
+ # Key workflow files
87
+ workflows: []
88
+ # - path: .github/workflows/ci.yml
89
+ # purpose: "Lint, test, build on every PR"
90
+ # - path: .github/workflows/deploy.yml
91
+ # purpose: "Deploy to staging on merge to main, production on tag"
92
+ # deploy_trigger: "merge to main" | "git tag" | "manual"
93
+ deploy_trigger:
94
+
95
+ # --- Observability ---
96
+ # Where to look when things break.
97
+
98
+ observability:
99
+ # logging:
100
+ # platform: datadog | cloudwatch | elk | grafana-loki
101
+ # dashboard: https://app.datadoghq.com/logs?query=service:my-project
102
+ # monitoring:
103
+ # platform: datadog | prometheus | cloudwatch
104
+ # dashboard: https://grafana.internal/d/api-latency
105
+ # alerting:
106
+ # platform: pagerduty | opsgenie | slack
107
+ # channel: "#oncall-alerts"
108
+ # error_tracking:
109
+ # platform: sentry | bugsnag | rollbar
110
+ # project: https://sentry.io/org/project/
@@ -0,0 +1,61 @@
1
+ # Grimoire Debt Exceptions
2
+ # Explicitly accepted technical debt — items the scanner should skip.
3
+ #
4
+ # Each exception requires a reason, an owner, and a Fowler quadrant classification:
5
+ # deliberate-prudent: "We know, and it's the right trade-off for now"
6
+ # deliberate-reckless: "We know, and we're cutting corners"
7
+ # inadvertent-prudent: "We didn't know then, and fixing isn't worth it now"
8
+ # inadvertent-reckless: "We didn't know, and the cost to fix is too high right now"
9
+ #
10
+ # Exceptions can target:
11
+ # - A specific debt register item (by id)
12
+ # - A file path pattern (glob) + category
13
+ # - A file path pattern (glob) + all categories
14
+ #
15
+ # Expired exceptions are automatically re-flagged during scanning.
16
+ #
17
+ # Created by: grimoire init
18
+ # Last updated: YYYY-MM-DD
19
+
20
+ exceptions: []
21
+
22
+ # --- Examples ---
23
+ #
24
+ # Accept a specific debt register item:
25
+ #
26
+ # - id: debt-003
27
+ # reason: "Splitting config types would break the plugin API contract.
28
+ # Revisit when we version the plugin API."
29
+ # quadrant: deliberate-prudent
30
+ # owner: fred
31
+ # accepted: 2026-04-06
32
+ # expires: 2026-10-01
33
+ #
34
+ # Accept all debt in vendored/generated code:
35
+ #
36
+ # - pattern: "src/vendor/**"
37
+ # category: "*"
38
+ # reason: "Vendored code — we don't own it"
39
+ # quadrant: deliberate-prudent
40
+ # owner: fred
41
+ # accepted: 2026-04-06
42
+ #
43
+ # Accept structural bloat in a specific file:
44
+ #
45
+ # - pattern: "src/legacy/monolith.py"
46
+ # category: structural_bloat
47
+ # reason: "Scheduled for full rewrite in Q3. Incremental refactoring
48
+ # would conflict with the rewrite branch."
49
+ # quadrant: deliberate-prudent
50
+ # owner: jane
51
+ # accepted: 2026-04-06
52
+ # expires: 2026-07-01
53
+ #
54
+ # Accept all complexity findings in generated migration files:
55
+ #
56
+ # - pattern: "**/migrations/**"
57
+ # category: structural_bloat
58
+ # reason: "Auto-generated by framework — complexity is inherent"
59
+ # quadrant: deliberate-prudent
60
+ # owner: team
61
+ # accepted: 2026-04-06
@@ -0,0 +1,50 @@
1
+ ---
2
+ status: proposed
3
+ date: YYYY-MM-DD
4
+ decision-makers: []
5
+ ---
6
+
7
+ # <Short Title: Problem and Solution>
8
+
9
+ ## Context and Problem Statement
10
+ <!-- Why are we making this decision? What forces are at play? -->
11
+
12
+ ## Decision Drivers
13
+ <!-- Key factors influencing this decision -->
14
+ -
15
+ -
16
+
17
+ ## Considered Options
18
+ 1.
19
+ 2.
20
+ 3.
21
+
22
+ ## Decision Outcome
23
+ Chosen option: "", because [justification].
24
+
25
+ ### Consequences
26
+ - Good:
27
+ - Bad:
28
+
29
+ ### Quality Attributes
30
+ <!-- Delete rows that don't apply. Targets should be measurable. Leave blank if not yet known — the review stage will flag missing targets for quality-sensitive decisions. -->
31
+
32
+ | Attribute | Target | Measurement |
33
+ |------------------|--------|-------------|
34
+ | Latency (p95) | | |
35
+ | Throughput | | |
36
+ | Availability | | |
37
+ | Recovery time | | |
38
+ | Data freshness | | |
39
+ | Concurrent users | | |
40
+ | Storage growth | | |
41
+ | Security (CIA) | | |
42
+
43
+ ### Cost of Ownership
44
+ <!-- What are the ongoing costs and benefits of this decision? -->
45
+ - **Maintenance burden**: <!-- What does this add to ongoing maintenance? New dependencies to update, monitoring to watch, migrations to run, concepts for new devs to learn? -->
46
+ - **Ongoing benefits**: <!-- What does this save or enable over time? -->
47
+ - **Sunset criteria**: <!-- Under what conditions should we revisit, replace, or remove this? -->
48
+
49
+ ### Confirmation
50
+ <!-- How will we verify this decision was correct? Metrics, tests, review date? -->
@@ -0,0 +1,93 @@
1
+ # Glob patterns excluded from duplicate detection (jscpd).
2
+ # Matched against paths relative to project root. One glob per line.
3
+ # Lines starting with # are comments.
4
+ #
5
+ # This file is independent of .grimoire/mapignore (structure scan).
6
+ # Edit here to silence duplicate-detection noise without hiding
7
+ # directories from the project map.
8
+
9
+ # Version control
10
+ **/.git/**
11
+
12
+ # Dependencies
13
+ **/node_modules/**
14
+ **/.venv/**
15
+ **/venv/**
16
+ **/env/**
17
+ **/vendor/**
18
+ **/bower_components/**
19
+ **/third_party/**
20
+ **/external/**
21
+ **/libs/**
22
+ **/Pods/**
23
+ **/Carthage/**
24
+ **/site-packages/**
25
+ **/deps/**
26
+ **/.pnpm-store/**
27
+ **/.yarn/**
28
+
29
+ # Build output
30
+ **/dist/**
31
+ **/build/**
32
+ **/.next/**
33
+ **/.nuxt/**
34
+ **/out/**
35
+ **/target/**
36
+ **/.gradle/**
37
+ **/bin/**
38
+ **/obj/**
39
+
40
+ # Caches
41
+ **/__pycache__/**
42
+ **/.pytest_cache/**
43
+ **/.mypy_cache/**
44
+ **/.ruff_cache/**
45
+ **/.tox/**
46
+ **/.cache/**
47
+ **/.parcel-cache/**
48
+ **/.turbo/**
49
+
50
+ # Coverage and test artifacts
51
+ **/coverage/**
52
+ **/.nyc_output/**
53
+ **/htmlcov/**
54
+
55
+ # Generated code — Protobuf, gRPC
56
+ **/*_pb2.py
57
+ **/*_pb2_grpc.py
58
+ **/*.pb.go
59
+ **/*.pb.cc
60
+ **/*.pb.h
61
+ **/*_pb.js
62
+ **/*_pb.d.ts
63
+ **/*.pb.dart
64
+
65
+ # Generated code — OpenAPI / Swagger clients
66
+ **/generated/**
67
+ **/*_generated.*
68
+ **/*.generated.*
69
+ **/openapi/**
70
+ **/swagger/**
71
+
72
+ # Generated code — GraphQL
73
+ **/__generated__/**
74
+ **/graphql.schema.json
75
+
76
+ # Minified / bundled assets
77
+ **/*.min.js
78
+ **/*.min.css
79
+ **/*.bundle.js
80
+ **/*.chunk.js
81
+
82
+ # Database migrations (often near-duplicate boilerplate)
83
+ **/migrations/**
84
+ **/alembic/versions/**
85
+
86
+ # Lock files and compiled artifacts
87
+ **/*.lock
88
+ **/*.map
89
+
90
+ # Snapshots / fixtures (duplication here is intentional)
91
+ **/__snapshots__/**
92
+ **/fixtures/**
93
+ **/testdata/**
@@ -0,0 +1,24 @@
1
+ Feature: Login with two-factor authentication
2
+ As a user
3
+ I want to verify my identity with a second factor
4
+ So that my account is protected from unauthorized access
5
+
6
+ Background:
7
+ Given I am on the login page
8
+
9
+ Scenario: Successful login with valid TOTP code
10
+ Given I have entered valid credentials
11
+ When I enter a valid TOTP code
12
+ Then I should be redirected to the dashboard
13
+
14
+ Scenario: Login rejected with expired TOTP code
15
+ Given I have entered valid credentials
16
+ When I enter an expired TOTP code
17
+ Then I should see an error message "Code expired"
18
+ And I should remain on the verification page
19
+
20
+ Scenario: Login rejected with invalid TOTP code
21
+ Given I have entered valid credentials
22
+ When I enter an invalid TOTP code
23
+ Then I should see an error message "Invalid code"
24
+ And I should remain on the verification page
@@ -0,0 +1,29 @@
1
+ ---
2
+ status: draft
3
+ complexity:
4
+ branch:
5
+ design_ref:
6
+ ---
7
+
8
+ # Change: <Brief description>
9
+
10
+ ## Why
11
+ <!-- 1-2 sentences: what problem or opportunity does this address? How will you know it's solved? -->
12
+
13
+ ## Non-goals
14
+ <!-- What is explicitly out of scope? What should this change NOT do, NOT handle, or NOT affect? Downstream skills use this to catch scope creep during planning and review. -->
15
+
16
+ ## Feature Changes
17
+ <!-- List each feature file affected. Use ADDED, MODIFIED, or REMOVED. -->
18
+ - **ADDED** `<capability>/<name>.feature` —
19
+ - **MODIFIED** `<capability>/<name>.feature` —
20
+ - **REMOVED** `<capability>/<name>.feature` —
21
+
22
+ ## Scenarios Added
23
+ <!-- List new scenarios by file -->
24
+
25
+ ## Scenarios Modified
26
+ <!-- List changed scenarios with brief description of what changed -->
27
+
28
+ ## Decisions
29
+ <!-- List any ADRs created or superseded as part of this change -->
@@ -0,0 +1,58 @@
1
+ # Directories and patterns to ignore when scanning the codebase
2
+ # Uses glob-style patterns, one per line
3
+ # Lines starting with # are comments
4
+
5
+ # Version control
6
+ .git
7
+
8
+ # Dependencies
9
+ node_modules
10
+ .venv
11
+ venv
12
+ env
13
+ vendor
14
+ bower_components
15
+ third_party
16
+ external
17
+ Pods
18
+ Carthage
19
+ site-packages
20
+ .pnpm-store
21
+ .yarn
22
+
23
+ # Build output
24
+ dist
25
+ build
26
+ .next
27
+ .nuxt
28
+ out
29
+ target
30
+ .gradle
31
+ obj
32
+
33
+ # Caches
34
+ __pycache__
35
+ .pytest_cache
36
+ .mypy_cache
37
+ .ruff_cache
38
+ .tox
39
+ .cache
40
+ .parcel-cache
41
+ .turbo
42
+
43
+ # Coverage and test artifacts
44
+ coverage
45
+ .nyc_output
46
+ htmlcov
47
+
48
+ # IDE and OS
49
+ .idea
50
+ .vscode
51
+ .DS_Store
52
+
53
+ # Package metadata
54
+ *.egg-info
55
+ .eggs
56
+
57
+ # Containers
58
+ .docker
@@ -0,0 +1,65 @@
1
+ # Key files that indicate what a directory is for
2
+ # Format: filename = type
3
+ # Lines starting with # are comments
4
+
5
+ # Node / JavaScript / TypeScript
6
+ package.json = node-package
7
+ tsconfig.json = typescript-config
8
+ index.ts = module-entry
9
+ index.js = module-entry
10
+ routes.ts = api-routes
11
+ routes.js = api-routes
12
+ middleware.ts = middleware
13
+ middleware.js = middleware
14
+ eslint.config.js = linter-config
15
+ .eslintrc.js = linter-config
16
+ .eslintrc.json = linter-config
17
+ jest.config.js = test-config
18
+ jest.config.ts = test-config
19
+ vitest.config.ts = test-config
20
+
21
+ # Python
22
+ pyproject.toml = python-package
23
+ setup.py = python-package
24
+ setup.cfg = python-config
25
+ requirements.txt = python-deps
26
+ Pipfile = python-deps
27
+ __init__.py = python-module
28
+ conftest.py = pytest-fixtures
29
+ pytest.ini = test-config
30
+
31
+ # Django
32
+ urls.py = django-urls
33
+ views.py = django-views
34
+ models.py = django-models
35
+ serializers.py = drf-serializers
36
+ admin.py = django-admin
37
+ apps.py = django-app
38
+ settings.py = django-settings
39
+ manage.py = django-management
40
+ middleware.py = middleware
41
+
42
+ # FastAPI / Flask
43
+ main.py = app-entry
44
+ app.py = app-entry
45
+
46
+ # Background tasks
47
+ tasks.py = background-tasks
48
+ celery.py = task-queue
49
+
50
+ # Database
51
+ alembic.ini = db-migrations
52
+ schema.prisma = db-schema
53
+
54
+ # Build / Deploy
55
+ Dockerfile = container
56
+ docker-compose.yml = container-orchestration
57
+ docker-compose.yaml = container-orchestration
58
+ Makefile = build-system
59
+ Procfile = deployment
60
+
61
+ # Go
62
+ go.mod = go-module
63
+
64
+ # Rust
65
+ Cargo.toml = rust-package