devcouncil 0.2.0 → 0.2.2

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 (205) hide show
  1. package/README.md +144 -308
  2. package/bin/devcouncil.js +130 -32
  3. package/package.json +22 -19
  4. package/pyproject.toml +0 -66
  5. package/src/devcouncil/__init__.py +0 -0
  6. package/src/devcouncil/__main__.py +0 -4
  7. package/src/devcouncil/app/__init__.py +0 -28
  8. package/src/devcouncil/app/config.py +0 -320
  9. package/src/devcouncil/app/errors.py +0 -23
  10. package/src/devcouncil/app/events.py +0 -44
  11. package/src/devcouncil/app/orchestrator.py +0 -92
  12. package/src/devcouncil/app/project_status.py +0 -29
  13. package/src/devcouncil/app/run_context.py +0 -39
  14. package/src/devcouncil/app/state_machine.py +0 -108
  15. package/src/devcouncil/artifacts/__init__.py +0 -1
  16. package/src/devcouncil/artifacts/coverage.py +0 -96
  17. package/src/devcouncil/artifacts/graph.py +0 -163
  18. package/src/devcouncil/artifacts/migrations.py +0 -20
  19. package/src/devcouncil/artifacts/schemas.py +0 -23
  20. package/src/devcouncil/artifacts/serializer.py +0 -21
  21. package/src/devcouncil/artifacts/validators.py +0 -27
  22. package/src/devcouncil/assets/__init__.py +0 -1
  23. package/src/devcouncil/assets/devcouncil-logo.svg +0 -60
  24. package/src/devcouncil/assets/devcouncil_logo_premium.png +0 -0
  25. package/src/devcouncil/cli/__init__.py +0 -0
  26. package/src/devcouncil/cli/commands/__init__.py +0 -0
  27. package/src/devcouncil/cli/commands/agents.py +0 -292
  28. package/src/devcouncil/cli/commands/artifacts.py +0 -54
  29. package/src/devcouncil/cli/commands/ast.py +0 -22
  30. package/src/devcouncil/cli/commands/baseline.py +0 -35
  31. package/src/devcouncil/cli/commands/check.py +0 -209
  32. package/src/devcouncil/cli/commands/config.py +0 -115
  33. package/src/devcouncil/cli/commands/cost.py +0 -57
  34. package/src/devcouncil/cli/commands/dashboard.py +0 -31
  35. package/src/devcouncil/cli/commands/doctor.py +0 -340
  36. package/src/devcouncil/cli/commands/evidence.py +0 -48
  37. package/src/devcouncil/cli/commands/go.py +0 -656
  38. package/src/devcouncil/cli/commands/handoff.py +0 -69
  39. package/src/devcouncil/cli/commands/hook.py +0 -237
  40. package/src/devcouncil/cli/commands/init.py +0 -289
  41. package/src/devcouncil/cli/commands/integrate.py +0 -1515
  42. package/src/devcouncil/cli/commands/lsp.py +0 -20
  43. package/src/devcouncil/cli/commands/map.py +0 -112
  44. package/src/devcouncil/cli/commands/mcp_server.py +0 -18
  45. package/src/devcouncil/cli/commands/plan.py +0 -488
  46. package/src/devcouncil/cli/commands/prompt.py +0 -61
  47. package/src/devcouncil/cli/commands/repair.py +0 -89
  48. package/src/devcouncil/cli/commands/report.py +0 -137
  49. package/src/devcouncil/cli/commands/reset_demo_state.py +0 -33
  50. package/src/devcouncil/cli/commands/rollback.py +0 -59
  51. package/src/devcouncil/cli/commands/run.py +0 -289
  52. package/src/devcouncil/cli/commands/runs.py +0 -223
  53. package/src/devcouncil/cli/commands/scaffold.py +0 -32
  54. package/src/devcouncil/cli/commands/semantic.py +0 -47
  55. package/src/devcouncil/cli/commands/setup.py +0 -362
  56. package/src/devcouncil/cli/commands/shell.py +0 -73
  57. package/src/devcouncil/cli/commands/show.py +0 -76
  58. package/src/devcouncil/cli/commands/skills.py +0 -88
  59. package/src/devcouncil/cli/commands/status.py +0 -141
  60. package/src/devcouncil/cli/commands/tasks.py +0 -55
  61. package/src/devcouncil/cli/commands/trace.py +0 -88
  62. package/src/devcouncil/cli/commands/verify.py +0 -328
  63. package/src/devcouncil/cli/commands/version.py +0 -20
  64. package/src/devcouncil/cli/commands/watch.py +0 -574
  65. package/src/devcouncil/cli/commands/watch_fs.py +0 -40
  66. package/src/devcouncil/cli/main.py +0 -137
  67. package/src/devcouncil/council/__init__.py +0 -0
  68. package/src/devcouncil/council/prompts/__init__.py +0 -0
  69. package/src/devcouncil/council/prompts/arbiter.md +0 -19
  70. package/src/devcouncil/council/prompts/critic_a.md +0 -10
  71. package/src/devcouncil/council/prompts/critic_b.md +0 -10
  72. package/src/devcouncil/council/prompts/implementation_reviewer.md +0 -16
  73. package/src/devcouncil/council/prompts/planner_a.md +0 -16
  74. package/src/devcouncil/council/prompts/planner_b.md +0 -16
  75. package/src/devcouncil/council/prompts/rebuttal.md +0 -10
  76. package/src/devcouncil/council/prompts/spec_writer.md +0 -12
  77. package/src/devcouncil/domain/__init__.py +0 -0
  78. package/src/devcouncil/domain/assumption.py +0 -17
  79. package/src/devcouncil/domain/critique.py +0 -32
  80. package/src/devcouncil/domain/evidence.py +0 -47
  81. package/src/devcouncil/domain/gap.py +0 -52
  82. package/src/devcouncil/domain/requirement.py +0 -22
  83. package/src/devcouncil/domain/task.py +0 -55
  84. package/src/devcouncil/execution/__init__.py +0 -1
  85. package/src/devcouncil/execution/checkpoints.py +0 -246
  86. package/src/devcouncil/execution/context_builder.py +0 -60
  87. package/src/devcouncil/execution/executor.py +0 -15
  88. package/src/devcouncil/execution/fs_watcher.py +0 -180
  89. package/src/devcouncil/execution/handoff.py +0 -102
  90. package/src/devcouncil/execution/hook_policy.py +0 -253
  91. package/src/devcouncil/execution/patch.py +0 -77
  92. package/src/devcouncil/execution/paths.py +0 -14
  93. package/src/devcouncil/execution/permissions.py +0 -85
  94. package/src/devcouncil/execution/policy_engine.py +0 -343
  95. package/src/devcouncil/execution/prompt_builder.py +0 -671
  96. package/src/devcouncil/execution/shell_session.py +0 -225
  97. package/src/devcouncil/execution/task_runner.py +0 -170
  98. package/src/devcouncil/executors/__init__.py +0 -1
  99. package/src/devcouncil/executors/agent_registry.py +0 -575
  100. package/src/devcouncil/executors/coding_cli.py +0 -736
  101. package/src/devcouncil/executors/mini_swe.py +0 -73
  102. package/src/devcouncil/executors/native/__init__.py +0 -0
  103. package/src/devcouncil/executors/native/agent.py +0 -208
  104. package/src/devcouncil/executors/openhands.py +0 -71
  105. package/src/devcouncil/gating/__init__.py +0 -1
  106. package/src/devcouncil/gating/checks/__init__.py +0 -0
  107. package/src/devcouncil/gating/checks/clean_git.py +0 -52
  108. package/src/devcouncil/gating/checks/planned_files_check.py +0 -32
  109. package/src/devcouncil/gating/checks/requirement_coverage.py +0 -26
  110. package/src/devcouncil/gating/checks/secret_scan_check.py +0 -53
  111. package/src/devcouncil/gating/policy.py +0 -338
  112. package/src/devcouncil/hardware.py +0 -184
  113. package/src/devcouncil/indexing/__init__.py +0 -1
  114. package/src/devcouncil/indexing/ast_matcher.py +0 -168
  115. package/src/devcouncil/indexing/graph_index.py +0 -48
  116. package/src/devcouncil/indexing/lsp.py +0 -161
  117. package/src/devcouncil/indexing/repo_mapper.py +0 -1455
  118. package/src/devcouncil/indexing/semantic_index.py +0 -205
  119. package/src/devcouncil/integrations/actions.py +0 -146
  120. package/src/devcouncil/integrations/check.py +0 -423
  121. package/src/devcouncil/integrations/code_review_graph.py +0 -163
  122. package/src/devcouncil/integrations/github.py +0 -39
  123. package/src/devcouncil/integrations/github_intent.py +0 -142
  124. package/src/devcouncil/integrations/gitnexus.py +0 -62
  125. package/src/devcouncil/integrations/graphify.py +0 -34
  126. package/src/devcouncil/integrations/mcp/__init__.py +0 -0
  127. package/src/devcouncil/integrations/mcp/server.py +0 -2122
  128. package/src/devcouncil/integrations/opencode_devcouncil_plugin.mjs +0 -24
  129. package/src/devcouncil/integrations/pr_comments.py +0 -62
  130. package/src/devcouncil/live/__init__.py +0 -2
  131. package/src/devcouncil/live/cards.py +0 -349
  132. package/src/devcouncil/live/models.py +0 -63
  133. package/src/devcouncil/live/repair_prompt.py +0 -83
  134. package/src/devcouncil/live/reviewer.py +0 -70
  135. package/src/devcouncil/live/signals.py +0 -135
  136. package/src/devcouncil/live/summary.py +0 -34
  137. package/src/devcouncil/live/tasks.py +0 -18
  138. package/src/devcouncil/live/transcripts.py +0 -141
  139. package/src/devcouncil/llm/__init__.py +0 -1
  140. package/src/devcouncil/llm/cache.py +0 -42
  141. package/src/devcouncil/llm/model_defaults.yaml +0 -44
  142. package/src/devcouncil/llm/provider.py +0 -627
  143. package/src/devcouncil/llm/router.py +0 -310
  144. package/src/devcouncil/optimization/__init__.py +0 -1
  145. package/src/devcouncil/optimization/gepa_agent.py +0 -318
  146. package/src/devcouncil/planning/__init__.py +0 -1
  147. package/src/devcouncil/planning/arbiter_service.py +0 -57
  148. package/src/devcouncil/planning/correction_manifest.py +0 -303
  149. package/src/devcouncil/planning/critique_service.py +0 -71
  150. package/src/devcouncil/planning/plan_service.py +0 -60
  151. package/src/devcouncil/planning/prompt_enhancer_service.py +0 -167
  152. package/src/devcouncil/planning/repair_service.py +0 -39
  153. package/src/devcouncil/planning/spec_service.py +0 -70
  154. package/src/devcouncil/repo/__init__.py +0 -0
  155. package/src/devcouncil/repo/ci_scaffold.py +0 -157
  156. package/src/devcouncil/repo/gitignore.py +0 -123
  157. package/src/devcouncil/repo/sca.py +0 -374
  158. package/src/devcouncil/reporting/__init__.py +0 -0
  159. package/src/devcouncil/reporting/github_check.py +0 -32
  160. package/src/devcouncil/reporting/json_report.py +0 -30
  161. package/src/devcouncil/reporting/markdown_report.py +0 -83
  162. package/src/devcouncil/reporting/report_builder.py +0 -14
  163. package/src/devcouncil/skills/__init__.py +0 -19
  164. package/src/devcouncil/skills/library/README.md +0 -46
  165. package/src/devcouncil/skills/library/ai-training.md +0 -50
  166. package/src/devcouncil/skills/library/android.md +0 -50
  167. package/src/devcouncil/skills/library/backend.md +0 -52
  168. package/src/devcouncil/skills/library/core-engineering.md +0 -95
  169. package/src/devcouncil/skills/library/data-engineering.md +0 -47
  170. package/src/devcouncil/skills/library/desktop.md +0 -46
  171. package/src/devcouncil/skills/library/devops.md +0 -48
  172. package/src/devcouncil/skills/library/game-dev.md +0 -46
  173. package/src/devcouncil/skills/library/ios.md +0 -48
  174. package/src/devcouncil/skills/library/mobile-cross-platform.md +0 -46
  175. package/src/devcouncil/skills/library/security.md +0 -48
  176. package/src/devcouncil/skills/library/systems.md +0 -48
  177. package/src/devcouncil/skills/library/web.md +0 -47
  178. package/src/devcouncil/skills/library/windows.md +0 -47
  179. package/src/devcouncil/skills/registry.py +0 -330
  180. package/src/devcouncil/storage/__init__.py +0 -0
  181. package/src/devcouncil/storage/db.py +0 -147
  182. package/src/devcouncil/storage/models.py +0 -204
  183. package/src/devcouncil/storage/native.py +0 -557
  184. package/src/devcouncil/storage/repositories.py +0 -485
  185. package/src/devcouncil/telemetry/__init__.py +0 -0
  186. package/src/devcouncil/telemetry/cost.py +0 -140
  187. package/src/devcouncil/telemetry/model_pricing.yaml +0 -48
  188. package/src/devcouncil/telemetry/pricing.py +0 -28
  189. package/src/devcouncil/telemetry/traces.py +0 -146
  190. package/src/devcouncil/telemetry/tracker.py +0 -52
  191. package/src/devcouncil/ui/__init__.py +0 -1
  192. package/src/devcouncil/ui/dashboard.py +0 -423
  193. package/src/devcouncil/utils/__init__.py +0 -1
  194. package/src/devcouncil/utils/redaction.py +0 -147
  195. package/src/devcouncil/utils/subprocess_env.py +0 -69
  196. package/src/devcouncil/verification/__init__.py +0 -1
  197. package/src/devcouncil/verification/acceptance_compiler.py +0 -125
  198. package/src/devcouncil/verification/ad_hoc_check.py +0 -129
  199. package/src/devcouncil/verification/diff_coverage.py +0 -353
  200. package/src/devcouncil/verification/implementation_reviewer.py +0 -55
  201. package/src/devcouncil/verification/next_actions.py +0 -189
  202. package/src/devcouncil/verification/sandbox.py +0 -178
  203. package/src/devcouncil/verification/test_resolver.py +0 -91
  204. package/src/devcouncil/verification/verifier.py +0 -1548
  205. package/uv.lock +0 -1226
@@ -1,50 +0,0 @@
1
- ---
2
- name: android
3
- title: Android App Development Intake
4
- description: Before writing Android code, retrieve current SDK/AGP/Kotlin/Compose versions, platform behavior changes, deprecations, recommended Jetpack libraries, and the right CLI/build tools — like a senior Android engineer briefing themselves.
5
- triggers:
6
- keywords: [android, kotlin, jetpack, compose, gradle, agp, apk, aab, espresso, room, hilt]
7
- globs: ["build.gradle", "build.gradle.kts", "settings.gradle", "settings.gradle.kts", "AndroidManifest.xml", "*.kt", "gradle/libs.versions.toml"]
8
- ---
9
-
10
- # Android App Development Intake
11
-
12
- Do this **before** writing or changing Android code. Don't rely on training data —
13
- Android moves fast and the answer that was right a year ago is often deprecated.
14
- Confirm against `developer.android.com`, the AGP/Kotlin/Compose release notes, and
15
- the project's own version catalog.
16
-
17
- ## Establish current state first
18
-
19
- 1. **Toolchain versions in use** — read `gradle/libs.versions.toml`, `build.gradle[.kts]`,
20
- and `gradle-wrapper.properties`: `compileSdk` / `targetSdk` / `minSdk`, Android
21
- Gradle Plugin (AGP), Kotlin, Gradle, Jetpack Compose / Compose Compiler, and core
22
- Jetpack libraries.
23
- 2. **Latest platform & API level** — current stable Android release, its behavior
24
- changes, and the newest `targetSdk` Google Play will require. Note anything that
25
- affects this task.
26
- 3. **Deprecations & removals** — APIs deprecated or removed between the project's
27
- `targetSdk` and current (e.g. background-execution limits, storage/scoped-storage
28
- changes, notification/permission model, `AsyncTask`, `onBackPressed`, implicit
29
- intents). List the ones this change touches and their replacements.
30
- 4. **Recommended libraries** — prefer current Jetpack: Compose (+ adaptive layouts),
31
- Navigation, Room, WorkManager, Hilt, DataStore (not SharedPreferences for new code),
32
- Lifecycle/ViewModel. Confirm the recommended artifact and version.
33
- 5. **Guidelines** — Material 3, adaptive/large-screen & foldable support, edge-to-edge,
34
- the runtime permission model, and predictive back.
35
-
36
- ## Build & CLI tools
37
-
38
- - `gradlew`/`gradlew.bat` for builds; `adb` for device/log work; `R8` for shrink/obfuscate.
39
- - The `android` command-line tool and `sdkmanager`/`avdmanager` for SDK and emulator setup.
40
- - Android Studio for profiling (Perfetto traces) and Compose preview.
41
-
42
- ## What to record before coding
43
-
44
- - Effective `minSdk`/`targetSdk` and the version catalog entries you will use.
45
- - Deprecated APIs to avoid and their modern replacements, with migration steps.
46
- - The build/test commands you will run (`gradlew :app:assembleDebug`, `:app:testDebugUnitTest`,
47
- connected/instrumented tests) so the change is verifiable.
48
-
49
- If the project mixes Views and Compose, match the file you're editing; don't migrate
50
- unrelated screens as a side effect (see the surgical-changes rule in core-engineering).
@@ -1,52 +0,0 @@
1
- ---
2
- name: backend
3
- title: Backend / API / Services Intake
4
- description: Before writing server-side code, retrieve current framework and runtime versions, security and auth guidance, database/migration tooling, and the right CLI/build/test commands — like a senior backend engineer briefing themselves on the stack.
5
- triggers:
6
- keywords: [backend, server, api, rest, grpc, graphql, microservice, fastapi, django, flask, starlette, express, nestjs, rails, spring, laravel, gin, fiber, echo, axum, actix, sqlalchemy, alembic, prisma, postgres, postgresql, mysql, sqlite, redis, mongodb, celery, rabbitmq, kafka, docker, kubernetes, migration, webhook, jwt, oauth]
7
- globs: ["manage.py", "wsgi.py", "asgi.py", "alembic.ini", "Dockerfile", "docker-compose.yml", "docker-compose.yaml", "go.mod", "Cargo.toml", "*.proto", "Gemfile", "Procfile", "main.go", "openapi.yaml", "openapi.json"]
8
- ---
9
-
10
- # Backend / API / Services Intake
11
-
12
- Do this **before** writing or changing server-side code. Don't rely on training data —
13
- frameworks, runtimes, and security guidance change, and a pattern that was fine a year
14
- ago may now be deprecated or insecure. Confirm against the framework's current docs and
15
- release notes, and against the project's own dependency manifests.
16
-
17
- ## Establish current state first
18
-
19
- 1. **Runtime & framework versions in use** — read the dependency manifest
20
- (`pyproject.toml`/`requirements.txt`, `package.json`, `go.mod`, `Cargo.toml`, `Gemfile`,
21
- `pom.xml`) and any lockfile: language runtime version, web framework (FastAPI/Django/
22
- Flask/Express/NestJS/Gin/Axum/Spring/Rails), and ORM/data layer. Match what's already there.
23
- 2. **Current stable versions & deprecations** — the framework's latest stable release and
24
- anything deprecated/removed between the project's version and current (routing, lifecycle
25
- hooks, settings, async APIs). List the ones this change touches and their replacements.
26
- 3. **Data & migrations** — how schema changes are managed (Alembic, Django migrations,
27
- Prisma Migrate, golang-migrate). Never hand-edit schema without a migration; generate one
28
- and confirm it runs forward and back.
29
- 4. **Security & correctness** — input validation, authn/authz on every new endpoint, secrets
30
- from config/env (never hard-coded), parameterized queries (no string-built SQL), safe
31
- defaults for CORS/headers, and rate limits where relevant. Check the framework's current
32
- security guidance for the version in use.
33
- 5. **Contracts** — if there's an API schema (OpenAPI, `.proto`, GraphQL SDL), update it with
34
- the change and keep it the source of truth; note backward-compatibility for existing clients.
35
-
36
- ## Build & CLI tools
37
-
38
- - Run/serve and migrate via the project's tooling: `uvicorn`/`gunicorn`, `python manage.py`,
39
- `npm run`/`pnpm`, `go run`/`go build`, `cargo run`/`cargo build`, `rails`, `./gradlew`.
40
- - Tests: `pytest`, `go test ./...`, `cargo test`, `npm test`, `python manage.py test` — prefer
41
- the command the repo already uses so the change is verifiable.
42
- - Containers: `docker build` / `docker compose up` when the service is containerized.
43
-
44
- ## What to record before coding
45
-
46
- - The runtime/framework versions and the exact dependencies you will use.
47
- - Deprecated APIs to avoid and their modern replacements, with migration steps.
48
- - Any new migration to generate, and the auth/validation each new endpoint enforces.
49
- - The build/test commands you will run so the change is provably correct.
50
-
51
- Don't broaden the change beyond the task — no incidental framework upgrades or schema
52
- churn on unrelated tables (see the surgical-changes rule in core-engineering).
@@ -1,95 +0,0 @@
1
- ---
2
- name: core-engineering
3
- title: Core Engineering Discipline
4
- description: Always-on coding discipline for AI agents — think before coding, keep it simple, edit surgically, drive to a verifiable goal, and communicate like a senior engineer.
5
- always: true
6
- source: Merged from Andrej Karpathy's LLM coding guidelines and the Claude Fable 5 behavioral framework, distilled for DevCouncil-orchestrated coding work.
7
- ---
8
-
9
- # Core Engineering Discipline
10
-
11
- This is the baseline contract for any change you make in this repository. It is
12
- always in effect. The four principles come from Andrej Karpathy's observations
13
- about how LLMs write code; the communication and honesty rules come from the
14
- Claude Fable 5 framework. Together they describe how a senior engineer works.
15
-
16
- ## 1. Think before coding
17
-
18
- Most bad LLM changes come from a wrong assumption made silently. Before writing
19
- code:
20
-
21
- - State the assumptions your solution depends on. If any are uncertain, surface
22
- them instead of guessing.
23
- - Read the surrounding code first. Match its existing patterns, naming, and
24
- conventions rather than importing your own.
25
- - If the request is ambiguous or has real tradeoffs, name them and recommend one
26
- path — don't quietly pick one and hide the choice.
27
- - Verify facts against the current codebase and current documentation, not from
28
- memory. Library APIs, framework defaults, and best practices change; confirm
29
- before relying on them. (For platform-specific work, the matching domain skill
30
- tells you exactly what to confirm.)
31
-
32
- ## 2. Simplicity first
33
-
34
- Write the minimal code that solves the stated problem.
35
-
36
- - No speculative features, options, or abstractions for requirements that don't
37
- exist yet. Do the simplest thing that works well.
38
- - Don't add error handling, fallbacks, or validation for situations that cannot
39
- occur. Trust internal code and framework guarantees; validate only at real
40
- boundaries (user input, external APIs).
41
- - Prefer a direct implementation over a clever or layered one. If you introduce
42
- an abstraction, be able to justify why the direct version was insufficient.
43
- - No feature flags or backwards-compatibility shims when you can just change the
44
- code.
45
-
46
- ## 3. Surgical changes
47
-
48
- Change only what the task requires.
49
-
50
- - Touch the smallest set of lines that accomplishes the goal. Leave unrelated
51
- code alone, even if you would have written it differently.
52
- - Do not reformat, rename, or refactor code orthogonal to the task. Those are
53
- separate changes with their own review.
54
- - Preserve the existing style of each file you edit. Your diff should read like
55
- the person who wrote the file made it.
56
- - A bug fix does not need surrounding cleanup. A one-line change should produce a
57
- one-line diff.
58
-
59
- ## 4. Goal-driven execution
60
-
61
- Define what "done and correct" means before you start, then prove it.
62
-
63
- - Write down the verifiable success criteria. In DevCouncil terms, these are the
64
- acceptance checks and the tests that must pass.
65
- - Prefer a tests-first loop: establish how you will check the work, make the
66
- change, then run the check and iterate until it passes.
67
- - Verify against evidence, not vibes. Run the tests, read the output, and only
68
- then claim success.
69
-
70
- ## Communication & honesty (how you report the work)
71
-
72
- - **Lead with the outcome.** Your first sentence should answer "what happened" or
73
- "what did you find." Supporting detail comes after.
74
- - **Be clear over terse.** Use plain, complete sentences. Avoid arrow-chains
75
- (`A → B → fails`), stacked jargon, and invented shorthand. If you must choose
76
- between short and clear, choose clear.
77
- - **Don't over-format.** Use prose by default; reach for lists or tables only
78
- when they genuinely aid scanning. Skip decorative bolding and meta-commentary.
79
- - **Own mistakes plainly,** without excessive apology, and correct course.
80
- - **Ground every progress claim in evidence** from this session. If tests fail,
81
- say so with the output. If a step was skipped, say that. If something is done
82
- and verified, state it plainly without hedging. Never report success you have
83
- not observed.
84
- - **Respect scope.** When the user is describing a problem, asking a question, or
85
- thinking out loud, the deliverable is your assessment — report it and stop;
86
- don't apply a fix until asked. For reversible actions clearly implied by the
87
- request, proceed; for destructive or out-of-scope actions, confirm first.
88
-
89
- ## Before you reach for more capability
90
-
91
- Check whether a relevant skill, helper, or existing convention already covers
92
- the task before writing new code or pulling in a new dependency. Use the matching
93
- domain skill (Android, iOS, Windows, web, AI training, …) to load current,
94
- platform-specific guidance the way a senior engineer would brief themselves
95
- before starting.
@@ -1,47 +0,0 @@
1
- ---
2
- name: data-engineering
3
- title: Data Engineering / Pipelines / Warehouses Intake
4
- description: Before changing data pipelines, transformations, or warehouse models, retrieve current engine/tool versions, schema and partitioning conventions, idempotency and backfill guidance, and the right run/test CLI commands — like a senior data engineer briefing themselves.
5
- triggers:
6
- keywords: [etl, elt, "data pipeline", "data engineering", airflow, dagster, prefect, dbt, spark, pyspark, flink, beam, snowflake, bigquery, redshift, databricks, "data warehouse", "data lake", lakehouse, iceberg, "delta lake", parquet, partition, backfill, ingestion]
7
- globs: ["dbt_project.yml", "profiles.yml", "airflow.cfg", "dagster.yaml", "*.dbt", "dbt_packages", "great_expectations.yml", "*.avsc"]
8
- ---
9
-
10
- # Data Engineering / Pipelines / Warehouses Intake
11
-
12
- Do this **before** changing pipelines, transformations, or warehouse models. Don't rely on
13
- training data — engines, SQL dialects, and orchestration APIs change, and a careless change
14
- can silently corrupt data or break downstream consumers. Confirm against the engine/tool's
15
- current docs and the project's own conventions.
16
-
17
- ## Establish current state first
18
-
19
- 1. **Engine & tool versions in use** — read the manifests (`dbt_project.yml`, `requirements`,
20
- cluster/runtime config): orchestrator (Airflow/Dagster/Prefect), transform tool (dbt/Spark),
21
- warehouse/engine (Snowflake/BigQuery/Redshift/Databricks) and its SQL dialect. Match them.
22
- 2. **Schema, contracts & lineage** — the tables/models this touches, their schema, primary/unique
23
- keys, and the downstream consumers (BI, models, other DAGs). A column rename or type change is
24
- a breaking contract — coordinate it and update the dependents.
25
- 3. **Idempotency & partitioning** — pipelines must be safe to re-run: idempotent writes
26
- (MERGE/upsert, partition overwrite), correct partition/cluster keys, and no duplicate or
27
- out-of-order side effects. Confirm how backfills are run and bounded.
28
- 4. **Data quality** — null/uniqueness/referential tests, row-count and freshness checks, and
29
- what happens on failure (block vs warn). Add or update tests for the change.
30
- 5. **Cost & scale** — scan/partition pruning, avoid full-table rewrites, and watch warehouse
31
- compute/credits for big backfills.
32
-
33
- ## Build & CLI tools
34
-
35
- - `dbt run`/`dbt test`/`dbt build` (with `--select` to scope), `airflow dags test`/`tasks test`,
36
- `dagster job execute`, `spark-submit`/`pyspark`. Prefer the project's wrapper/Makefile.
37
- - Validate transforms on a dev schema/sample before touching production datasets.
38
-
39
- ## What to record before coding
40
-
41
- - The engine/dialect and the exact models/DAGs you will change.
42
- - Schema/contract changes and the downstream consumers to coordinate with.
43
- - The idempotency/partition strategy and how a backfill will be scoped and rolled back.
44
- - The `dbt test`/DAG-test/data-quality commands that prove the change is correct.
45
-
46
- Don't broaden the change beyond the task — no incidental model refactors or schema churn on
47
- unrelated tables (see the surgical-changes rule in core-engineering).
@@ -1,46 +0,0 @@
1
- ---
2
- name: desktop
3
- title: Cross-Platform Desktop (Electron / Tauri / Qt) Intake
4
- description: Before changing desktop-app code, retrieve current framework versions, the process/IPC and security model, packaging/auto-update guidance, and the right build/run CLI commands across OSes — like a senior desktop engineer briefing themselves.
5
- triggers:
6
- keywords: [electron, tauri, qt, qml, gtk, wxwidgets, "desktop app", "system tray", ipc, "main process", "renderer process", webview, "auto-update", "code signing", notarization]
7
- globs: ["tauri.conf.json", "*.qml", "*.pro", "CMakeLists.txt.user", "electron-builder.yml", "electron-builder.json", "forge.config.js", "*.desktop"]
8
- ---
9
-
10
- # Cross-Platform Desktop (Electron / Tauri / Qt) Intake
11
-
12
- Do this **before** writing or changing desktop-app code. Don't rely on training data — these
13
- frameworks change their process and security models, and a desktop app must build, sign, and
14
- behave correctly across Windows, macOS, and Linux. Confirm against the framework's current docs
15
- and the project's own pinned versions.
16
-
17
- ## Establish current state first
18
-
19
- 1. **Framework & version in use** — Electron (version, `package.json`), Tauri (`tauri.conf.json`,
20
- Rust + WebView2/WKWebView), or Qt (version, Widgets vs QML). Match what's there.
21
- 2. **Process & IPC model** — main/renderer (Electron) or core/WebView (Tauri) boundaries, and the
22
- IPC surface. Keep the boundary explicit; validate everything crossing it.
23
- 3. **Security** — Electron: `contextIsolation` on, `nodeIntegration` off, a `contextBridge`
24
- preload, and a strict CSP; Tauri: the allowlist/capabilities scoped to the minimum. Never
25
- expose Node/shell/filesystem broadly to the renderer; treat loaded web content as untrusted.
26
- 4. **Platform integration** — file dialogs, tray, notifications, menus, deep links, and
27
- permissions differ per OS. Implement and test the ones this change touches on each target.
28
- 5. **Packaging & updates** — code signing (Windows Authenticode, macOS notarization), the
29
- installer format, and the auto-update channel. A change can silently break signing or updates.
30
-
31
- ## Build & CLI tools
32
-
33
- - Electron: `npm`/`pnpm` scripts, `electron .`, `electron-builder`/`electron-forge make`, Spectron/
34
- Playwright for e2e.
35
- - Tauri: `cargo tauri dev`/`cargo tauri build`, plus the frontend's own build.
36
- - Qt: `qmake`/`cmake` + `make`/`ninja`, `windeployqt`/`macdeployqt`, `ctest`.
37
-
38
- ## What to record before coding
39
-
40
- - The framework + version and the OS targets you must support.
41
- - The IPC surface touched and the security settings (isolation/allowlist/CSP) that must hold.
42
- - The platform-integration features changed and how they're tested per OS.
43
- - The build/sign/package commands and tests that prove the change works and still ships.
44
-
45
- Don't broaden the change beyond the task — no incidental framework upgrades or weakening the
46
- security model for convenience (see the surgical-changes rule in core-engineering).
@@ -1,48 +0,0 @@
1
- ---
2
- name: devops
3
- title: DevOps / Infrastructure-as-Code / CI-CD Intake
4
- description: Before changing infrastructure, pipelines, or deployment config, retrieve current provider/tool versions, security and least-privilege guidance, state/secret handling, and the right plan/apply CLI commands — like a senior platform engineer briefing themselves.
5
- triggers:
6
- keywords: [devops, terraform, opentofu, kubernetes, helm, kustomize, ansible, pulumi, cloudformation, bicep, gitops, argocd, infrastructure, "infrastructure as code", iac, provisioning, deployment, "ci/cd", cicd, jenkins, "github actions", iam, "least privilege"]
7
- globs: ["*.tf", "*.tfvars", "Chart.yaml", "kustomization.yaml", "kustomization.yml", "Jenkinsfile", "*.bicep", "playbook.yml", "ansible.cfg", "skaffold.yaml", "argocd*.yaml", "*.hcl"]
8
- ---
9
-
10
- # DevOps / Infrastructure-as-Code / CI-CD Intake
11
-
12
- Do this **before** changing infrastructure, pipelines, or deployment config. Don't rely
13
- on training data — providers, modules, and runner images change fast, and an insecure or
14
- deprecated default can be costly. Confirm against the provider/tool's current docs and the
15
- project's own pinned versions and state.
16
-
17
- ## Establish current state first
18
-
19
- 1. **Tool & provider versions in use** — read the version pins (`required_version`,
20
- `required_providers`, `Chart.yaml`/`appVersion`, action `uses: @vX`, runner image,
21
- k8s API versions) and any lockfile (`.terraform.lock.hcl`). Match what's already there.
22
- 2. **State & backends** — where state lives (remote backend, workspace, locking). Never run
23
- a destructive `apply`/`destroy` blindly; read the plan first and understand what changes.
24
- 3. **Deprecations & breaking changes** — between the pinned versions and current (provider
25
- resource renames, removed k8s APIs, deprecated action inputs, runner image changes). List
26
- the ones this change touches and their replacements.
27
- 4. **Security & least privilege** — IAM/roles scoped to the minimum needed, no wildcard
28
- permissions, secrets from a vault/secret store (never committed), network/ingress locked
29
- down, and encrypted state/storage. Check the provider's current security guidance.
30
- 5. **Blast radius** — what this change can take down (shared modules, prod vs staging
31
- workspace, a pipeline that gates deploys). Prefer a dry run / plan and a staged rollout.
32
-
33
- ## Build & CLI tools
34
-
35
- - `terraform`/`tofu plan|apply`, `kubectl`/`helm`/`kustomize`, `ansible-playbook --check`,
36
- `pulumi preview`, `aws`/`gcloud`/`az` CLIs — use the project's wrapper/Makefile if present.
37
- - Validate before applying: `terraform validate`/`fmt`, `helm lint`/`template`, `kubeval`,
38
- `actionlint`, and a CI dry run.
39
-
40
- ## What to record before coding
41
-
42
- - The pinned versions and provider/module sources you will use.
43
- - Deprecated resources/APIs to avoid and their replacements, with migration steps.
44
- - The plan/preview output and the blast radius, plus how you'll roll back.
45
- - The validate/plan commands that prove the change is safe before apply.
46
-
47
- Don't broaden the change beyond the task — no incidental provider upgrades or touching
48
- unrelated modules/environments (see the surgical-changes rule in core-engineering).
@@ -1,46 +0,0 @@
1
- ---
2
- name: game-dev
3
- title: Game Development (Unity / Unreal / Godot) Intake
4
- description: Before changing game code, retrieve current engine versions, the frame-loop and performance budget, asset/scene conventions, and the right build/play CLI commands — like a senior game engineer briefing themselves on the engine and project.
5
- triggers:
6
- keywords: [unity, unreal, "unreal engine", godot, gameplay, gamedev, "game engine", "game loop", shader, hlsl, glsl, ecs, dots, "frame rate", physics, collider, gdscript]
7
- globs: ["*.unity", "*.uproject", "*.uplugin", "project.godot", "*.gd", "*.tscn", "*.tres", "Assets", "ProjectSettings"]
8
- ---
9
-
10
- # Game Development (Unity / Unreal / Godot) Intake
11
-
12
- Do this **before** writing or changing game code. Don't rely on training data — engine APIs
13
- and recommended patterns change between major versions, and gameplay code runs every frame so
14
- small mistakes show up as stutter or crashes. Confirm against the engine's current docs and the
15
- project's own version and conventions.
16
-
17
- ## Establish current state first
18
-
19
- 1. **Engine & version in use** — Unity (`ProjectSettings/ProjectVersion.txt`, render pipeline
20
- URP/HDRP/Built-in, input system), Unreal (`.uproject` engine association, Blueprint vs C++),
21
- or Godot (`project.godot`, Godot 3 vs 4, GDScript vs C#/GDExtension). Match it exactly.
22
- 2. **The frame loop & budget** — what runs per-frame (`Update`/`Tick`/`_process`) vs fixed-step
23
- physics (`FixedUpdate`/`_physics_process`). Keep per-frame work cheap; respect the target
24
- frame rate and platform budget (mobile/console/VR are tighter).
25
- 3. **Allocations & GC** — avoid per-frame allocations (no `new`/LINQ in `Update`, pool objects);
26
- GC spikes cause hitches. In Unreal, mind UObject lifetime/GC and `TWeakObjectPtr`.
27
- 4. **Scenes, prefabs & assets** — follow the project's scene/prefab/asset layout; serialized
28
- fields and `.meta`/GUID references are easy to break. Don't reformat scene/asset files by hand.
29
- 5. **Determinism & netcode** — if gameplay is networked or replay-based, keep simulation
30
- deterministic and authority/replication correct.
31
-
32
- ## Build & CLI tools
33
-
34
- - Unity: batch mode `Unity -batchmode -runTests`/`-buildTarget`, the Test Runner, the Profiler.
35
- - Unreal: `UnrealBuildTool`/`RunUAT BuildCookRun`, Automation tests, Unreal Insights.
36
- - Godot: `godot --headless --export-release`, `godot --headless --run-tests` / GUT.
37
-
38
- ## What to record before coding
39
-
40
- - The engine + version, render pipeline / scripting backend, and target platform budget.
41
- - The per-frame vs fixed-step work the change adds, and how you keep it allocation-light.
42
- - The scenes/prefabs/assets touched and any serialized references at risk.
43
- - The build/play/test commands (and a profiler check) that prove performance and correctness.
44
-
45
- Don't broaden the change beyond the task — no incidental engine upgrades or scene-wide edits
46
- (see the surgical-changes rule in core-engineering).
@@ -1,48 +0,0 @@
1
- ---
2
- name: ios
3
- title: iOS / Apple Platform Development Intake
4
- description: Before writing iOS/macOS code, retrieve current Swift/SwiftUI/Xcode versions, deployment targets, deprecations, recommended frameworks, and the right CLI/build tools — like a senior Apple-platform engineer.
5
- triggers:
6
- keywords: [ios, ipados, macos, swift, swiftui, uikit, xcode, cocoapods, spm, swiftpm, combine]
7
- globs: ["*.swift", "*.xcodeproj", "*.xcworkspace", "Podfile", "Package.swift", "*.entitlements", "Info.plist"]
8
- ---
9
-
10
- # iOS / Apple Platform Development Intake
11
-
12
- Do this **before** writing or changing Swift/iOS code. Confirm against
13
- `developer.apple.com`, the Xcode/Swift release notes, and the project's own settings —
14
- Apple deprecates APIs aggressively and gates features on OS version.
15
-
16
- ## Establish current state first
17
-
18
- 1. **Toolchain & targets** — read the Xcode project / `Package.swift` / `Podfile`:
19
- Swift language version, Xcode version, iOS/macOS **deployment target**, and the
20
- dependency manager (Swift Package Manager vs CocoaPods — prefer SPM for new work).
21
- 2. **Latest OS & SDK** — the current iOS/macOS release, its SDK, and notable
22
- behavior/privacy changes (App Tracking Transparency, privacy manifests, required
23
- reason APIs). Note what gates this task.
24
- 3. **Deprecations & availability** — APIs deprecated or unavailable below the
25
- deployment target. Use `@available` / `if #available` correctly rather than
26
- assuming an API exists. Common shifts: UIKit → SwiftUI patterns, `NSUserActivity`,
27
- completion handlers → `async/await`, Combine → Swift Concurrency / Observation.
28
- 4. **Recommended frameworks** — SwiftUI (+ Observation `@Observable`), Swift
29
- Concurrency (`async/await`, actors), SwiftData vs Core Data, the current navigation
30
- API. Confirm the recommended approach for the deployment target.
31
- 5. **Guidelines** — Human Interface Guidelines, accessibility (Dynamic Type,
32
- VoiceOver), and App Store / privacy requirements relevant to the change.
33
-
34
- ## Build & CLI tools
35
-
36
- - `xcodebuild` for builds/tests/archives; `xcrun simctl` for simulators.
37
- - `swift build` / `swift test` for SwiftPM targets; `swiftformat`/`swiftlint` if configured.
38
- - Instruments for profiling.
39
-
40
- ## What to record before coding
41
-
42
- - Swift version, deployment target, and dependency-manager choice.
43
- - Deprecated/unavailable APIs to avoid and their `@available`-guarded replacements.
44
- - The build/test commands you will run (`xcodebuild test -scheme … -destination …`,
45
- or `swift test`) so the change is verifiable.
46
-
47
- Match the paradigm of the file you're editing (UIKit vs SwiftUI); don't rewrite
48
- unrelated screens as a side effect.
@@ -1,46 +0,0 @@
1
- ---
2
- name: mobile-cross-platform
3
- title: Cross-Platform Mobile (Flutter / React Native) Intake
4
- description: Before changing Flutter or React Native code, retrieve current SDK/framework versions, platform-channel and native-module guidance, deprecations, and the right build/run CLI commands for both iOS and Android — like a senior cross-platform mobile engineer briefing themselves.
5
- triggers:
6
- keywords: [flutter, dart, "react native", "react-native", expo, "cross-platform mobile", cupertino]
7
- globs: ["pubspec.yaml", "pubspec.lock", "*.dart", "metro.config.js", "app.config.js", "app.config.ts", "react-native.config.js", "expo.json"]
8
- ---
9
-
10
- # Cross-Platform Mobile (Flutter / React Native) Intake
11
-
12
- Do this **before** writing or changing Flutter/React Native code. Don't rely on training
13
- data — these frameworks and their native toolchains move quickly, and a change that builds
14
- on one platform can break the other. Confirm against the framework's current docs and the
15
- project's own pinned versions.
16
-
17
- ## Establish current state first
18
-
19
- 1. **Framework & SDK versions in use** — Flutter/Dart SDK from `pubspec.yaml` and
20
- `.fvm`/`flutter --version`; React Native / Expo from `package.json` and the RN/Expo release
21
- notes. Note the JS engine (Hermes) and architecture (new arch / Fabric / TurboModules).
22
- 2. **Both native platforms** — iOS (CocoaPods/SPM, min iOS, Xcode) and Android (Gradle/AGP,
23
- min/target SDK). A dependency or native change must build and run on **both**.
24
- 3. **Deprecations & breaking changes** — between the pinned versions and current (Flutter API
25
- removals, RN bridge → JSI/TurboModules, deprecated Expo modules). List what this change touches.
26
- 4. **State & navigation** — match the project's existing approach (Riverpod/Bloc/Provider for
27
- Flutter; Redux/Zustand/Context + React Navigation/Expo Router for RN); don't introduce a new one.
28
- 5. **Native interop** — if the change needs platform code, use the current channel/module API
29
- (Flutter platform channels / Pigeon; RN TurboModules/native modules) and implement both sides.
30
-
31
- ## Build & CLI tools
32
-
33
- - Flutter: `flutter pub get`, `flutter run`, `flutter build apk|ios`, `flutter test`,
34
- `flutter analyze`, `dart format`.
35
- - React Native / Expo: `npm`/`yarn`/`pnpm`, `npx react-native run-android|run-ios`,
36
- `pod install` (iOS), `npx expo start`, `eas build`, `npm test`.
37
-
38
- ## What to record before coding
39
-
40
- - The framework/SDK versions and the iOS/Android minimums you must support.
41
- - Deprecated APIs to avoid and their modern replacements, with migration steps.
42
- - The state/navigation libraries already in use, and any native-module work needed on both sides.
43
- - The build/test/analyze commands you will run on both platforms to prove the change works.
44
-
45
- If the project mixes platform-specific code, match the file you're editing; don't migrate
46
- unrelated screens as a side effect (see the surgical-changes rule in core-engineering).
@@ -1,48 +0,0 @@
1
- ---
2
- name: security
3
- title: Application Security / Secure Coding Intake
4
- description: Before writing security-sensitive code or assessing a vulnerability, retrieve current guidance for the relevant class (injection, authn/z, crypto, deserialization), the project's existing controls, and the right scanning/test commands — like a senior application-security engineer briefing themselves.
5
- triggers:
6
- keywords: [security, vulnerability, "secure coding", hardening, "security audit", pentest, "penetration test", owasp, xss, csrf, ssrf, "sql injection", sqli, rce, deserialization, "path traversal", cryptography, encryption, "threat model", sast, dast, cve, sandbox, "least privilege", "input validation"]
7
- globs: [".semgrep.yml", ".semgrep.yaml", "bandit.yaml", ".bandit", "*.nuclei.yaml", "trivy.yaml", ".snyk"]
8
- ---
9
-
10
- # Application Security / Secure Coding Intake
11
-
12
- Do this **before** writing security-sensitive code or judging a vulnerability. Don't rely on
13
- training data — attack techniques and recommended mitigations evolve, and a plausible-looking
14
- fix can be incomplete or introduce a new hole. Confirm against current guidance (OWASP, the
15
- framework's security docs, the relevant CVE/advisory) and the project's existing controls.
16
-
17
- ## Establish current state first
18
-
19
- 1. **Trust boundaries & data flow** — where untrusted input enters and where it reaches a sink
20
- (DB, shell, filesystem, deserializer, template, HTTP). Map the path this change touches.
21
- 2. **Vulnerability class & correct mitigation** — identify the class precisely and use the
22
- *current* canonical defense: parameterized queries (not escaping) for SQLi; context-aware
23
- output encoding for XSS; allow-lists + canonicalization for path/SSRF; safe deserializers;
24
- constant-time comparison for secrets. Avoid blacklist/regex "sanitizers."
25
- 3. **AuthN / AuthZ** — every new entry point authenticates and authorizes (object-level too —
26
- no IDOR); sessions/tokens follow the project's scheme; deny by default.
27
- 4. **Secrets & crypto** — secrets from a vault/env, never committed or logged; use vetted
28
- libraries and current algorithms/parameters (no home-rolled crypto, no MD5/SHA1 for security).
29
- 5. **Dependencies & config** — check for known-vulnerable dependencies and insecure defaults
30
- (CORS, headers, TLS, file permissions). Note anything in scope.
31
-
32
- ## Build & CLI tools
33
-
34
- - Static/secret scanning: `semgrep`, `bandit` (Python), `gosec`, `npm audit`/`pip-audit`,
35
- `gitleaks`/`trufflehog`, `trivy`/`grype` for images and deps.
36
- - Dynamic/dependency: the project's DAST/`snyk`/`nuclei` flow where present.
37
- - Add or update a test that *proves* the vulnerability is closed (a failing-then-passing case),
38
- not just that the happy path still works.
39
-
40
- ## What to record before coding
41
-
42
- - The vulnerability class, the trust boundary, and the exact sink involved.
43
- - The current canonical mitigation chosen (and why a weaker one was rejected).
44
- - The authz/secret/crypto requirements the change must satisfy.
45
- - The scan/test commands and the regression test that prove the issue is fixed.
46
-
47
- Stay surgical: fix the specific weakness without unrelated refactors, and never weaken an
48
- existing control as a side effect (see core-engineering).
@@ -1,48 +0,0 @@
1
- ---
2
- name: systems
3
- title: Systems / Embedded / Native Intake
4
- description: Before writing native, systems, or embedded code, retrieve current toolchain/standard versions, memory and concurrency rules, undefined-behavior and safety guidance, and the right build/flash/test commands — like a senior systems engineer briefing themselves.
5
- triggers:
6
- keywords: [embedded, firmware, rtos, freertos, zephyr, microcontroller, "bare metal", "bare-metal", no_std, kernel, "device driver", "systems programming", cmake, "c++", cpp, stm32, esp32, arduino, "memory safety", "undefined behavior", simd, mmap, syscall]
7
- globs: ["CMakeLists.txt", "*.cpp", "*.cc", "*.hpp", "*.ino", "platformio.ini", "*.ld", "Kconfig", "prj.conf", "sdkconfig", "*.dts"]
8
- ---
9
-
10
- # Systems / Embedded / Native Intake
11
-
12
- Do this **before** writing or changing native/systems/embedded code. Don't rely on training
13
- data — toolchains, language standards, and platform constraints change, and a memory or
14
- concurrency bug here is often silent until it corrupts state or crashes in the field. Confirm
15
- against the toolchain/standard docs and the project's own build config.
16
-
17
- ## Establish current state first
18
-
19
- 1. **Toolchain & standard in use** — read the build config (`CMakeLists.txt`, `Cargo.toml`,
20
- `platformio.ini`, `Makefile`): compiler + version, language standard (C11/C++20/Rust edition),
21
- target triple/MCU, and `no_std`/freestanding vs hosted. Match what's already there.
22
- 2. **Memory & ownership** — allocation strategy (heap vs static/stack, arenas, no-alloc on
23
- embedded), ownership/lifetime rules, and buffer-bounds discipline. Avoid undefined behavior:
24
- no use-after-free, no data races, no signed overflow, no aliasing violations.
25
- 3. **Concurrency & interrupts** — what runs in ISR vs task context, shared state and its locking
26
- (or lock-free/atomics), `volatile` for MMIO, and memory-ordering requirements.
27
- 4. **Platform constraints** — flash/RAM budget, alignment and endianness, real-time deadlines,
28
- and the ABI/calling convention if crossing language or FFI boundaries.
29
- 5. **Safety tooling** — what's available and expected: sanitizers (ASan/UBSan/TSan), static
30
- analysis (clang-tidy, cppcheck), `cargo clippy`/`miri`, and valgrind on hosted targets.
31
-
32
- ## Build & CLI tools
33
-
34
- - Build: `cmake --build`, `make`, `cargo build --target ...`, `west build`, `idf.py`,
35
- `platformio run`. Use the project's presets/wrapper.
36
- - Test/verify: `ctest`, `cargo test`/`clippy`/`miri`, unit tests on host, and on-target/HIL or
37
- an emulator (QEMU/Renode) when hardware isn't available.
38
- - Flash/debug: the project's `openocd`/`gdb`/`probe-rs`/`idf.py flash` flow.
39
-
40
- ## What to record before coding
41
-
42
- - The toolchain/standard/target and the exact build config you will use.
43
- - The memory/ownership and concurrency model for the code you touch, and the UB you must avoid.
44
- - The platform budget/constraints relevant to the change.
45
- - The build/sanitizer/test commands (and on-target or emulator run) that prove correctness.
46
-
47
- Don't broaden the change beyond the task — no incidental toolchain bumps or refactors across
48
- unrelated modules (see the surgical-changes rule in core-engineering).
@@ -1,47 +0,0 @@
1
- ---
2
- name: web
3
- title: Web / Frontend Development Intake
4
- description: Before writing web code, retrieve current framework versions, runtime/build tooling, deprecations, and recommended patterns — like a senior web engineer briefing themselves on the stack.
5
- triggers:
6
- keywords: [web, website, frontend, react, next, nextjs, vue, svelte, angular, typescript, javascript, vite, tailwind, node]
7
- globs: ["package.json", "tsconfig.json", "*.tsx", "*.jsx", "*.vue", "*.svelte", "next.config.*", "vite.config.*", "tailwind.config.*"]
8
- ---
9
-
10
- # Web / Frontend Development Intake
11
-
12
- Do this **before** writing or changing web code. The JS/TS ecosystem moves quickly
13
- and major versions change defaults and APIs. Confirm against the framework's official
14
- docs and the project's `package.json` — not from memory.
15
-
16
- ## Establish current state first
17
-
18
- 1. **Framework & versions** — read `package.json` (and lockfile): the framework
19
- (React/Next, Vue/Nuxt, Svelte/SvelteKit, Angular), its major version, the build
20
- tool (Vite, Next, Webpack), the package manager (npm/pnpm/yarn/bun), and the Node
21
- version (`engines`, `.nvmrc`). Match what's already in use.
22
- 2. **Latest stable & major-version shifts** — current stable major and any defaults
23
- that changed (e.g. React Server Components / the App Router, Vue 3 Composition API,
24
- Svelte 5 runes, ESM-only packages). Note what gates this task.
25
- 3. **Deprecations** — APIs/patterns deprecated in the project's major version (e.g.
26
- legacy lifecycle methods, `getInitialProps`, options API where composition is
27
- preferred). List the ones this change touches and their replacements.
28
- 4. **Recommended patterns** — TypeScript strictness, data-fetching/caching model,
29
- state management, styling approach (CSS modules, Tailwind, CSS-in-JS), and
30
- accessibility (semantic HTML, ARIA only where needed, keyboard support).
31
- 5. **Guidelines** — performance budgets (Core Web Vitals), accessibility (WCAG), and
32
- SSR/CSR/SSG choice relevant to the change.
33
-
34
- ## Build & CLI tools
35
-
36
- - Package manager scripts (`npm run build`/`test`/`lint`, or pnpm/yarn/bun equivalents).
37
- - The framework CLI (`next`, `vite`, `ng`, `svelte-kit`) for dev/build.
38
- - `eslint`/`prettier`/`tsc --noEmit` and the test runner (Vitest/Jest/Playwright) if configured.
39
-
40
- ## What to record before coding
41
-
42
- - Framework + major version, build tool, package manager, and Node version.
43
- - Deprecated patterns to avoid and their modern replacements.
44
- - The build/test/lint commands you will run so the change is verifiable.
45
-
46
- Don't introduce a second styling system or state library when one is already in use,
47
- and don't bump a major framework version as a side effect of an unrelated task.