@bonesofspring/ai-rules 0.2.15 → 0.2.16
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +8 -0
- package/README.md +3 -1
- package/bin/cli.js +2 -0
- package/package.json +1 -1
- package/presets/_shared/core/meta/preset-layering.md +1 -1
- package/presets/_shared/core/meta/preset-no-cross-stack-leakage.md +25 -12
- package/presets/_shared/core/meta/preset-pr-checklist.md +1 -1
- package/presets/_shared/core/meta/preset-twin-sync.md +2 -0
- package/presets/claude/android-kotlin/CLAUDE.md +38 -0
- package/presets/claude/android-kotlin/MCP.md +16 -0
- package/presets/claude/android-kotlin/README.md +32 -0
- package/presets/claude/android-kotlin/REPO_AGENTS.md +48 -0
- package/presets/claude/android-kotlin/agents/README.md +44 -0
- package/presets/claude/android-kotlin/agents/accessibility-reviewer.md +60 -0
- package/presets/claude/android-kotlin/agents/api-contract-reviewer.md +70 -0
- package/presets/claude/android-kotlin/agents/build-verifier.md +67 -0
- package/presets/claude/android-kotlin/agents/ci-investigator.md +74 -0
- package/presets/claude/android-kotlin/agents/code-reviewer.md +74 -0
- package/presets/claude/android-kotlin/agents/codebase-analyzer.md +28 -0
- package/presets/claude/android-kotlin/agents/debugger.md +77 -0
- package/presets/claude/android-kotlin/agents/feature-developer.md +63 -0
- package/presets/claude/android-kotlin/agents/instrumentation-test-generator.md +19 -0
- package/presets/claude/android-kotlin/agents/instrumentation-test-healer.md +19 -0
- package/presets/claude/android-kotlin/agents/instrumentation-test-planner.md +19 -0
- package/presets/claude/android-kotlin/agents/migration-specialist.md +74 -0
- package/presets/claude/android-kotlin/agents/performance-auditor.md +67 -0
- package/presets/claude/android-kotlin/agents/qa-tester.md +66 -0
- package/presets/claude/android-kotlin/agents/security-reviewer.md +65 -0
- package/presets/claude/android-kotlin/agents/solution-architect.md +21 -0
- package/presets/claude/android-kotlin/agents/task-analyst.md +36 -0
- package/presets/claude/android-kotlin/agents/task-router.md +103 -0
- package/presets/claude/android-kotlin/agents/tech-writer.md +61 -0
- package/presets/claude/android-kotlin/agents/unit-test-generator.md +55 -0
- package/presets/claude/android-kotlin/agents/unit-test-healer.md +54 -0
- package/presets/claude/android-kotlin/agents/unit-test-planner.md +65 -0
- package/presets/claude/android-kotlin/commands/README.md +51 -0
- package/presets/claude/android-kotlin/commands/feature-continue.md +19 -0
- package/presets/claude/android-kotlin/commands/feature-start.md +33 -0
- package/presets/claude/android-kotlin/commands/task-continue.md +50 -0
- package/presets/claude/android-kotlin/commands/task.md +56 -0
- package/presets/claude/android-kotlin/commands/technical-retro.md +85 -0
- package/presets/claude/android-kotlin/hooks/README.md +16 -0
- package/presets/claude/android-kotlin/hooks/chain-team-phases.sh +705 -0
- package/presets/claude/android-kotlin/hooks/examples/README.md +18 -0
- package/presets/claude/android-kotlin/hooks/examples/format-edited.example.sh +13 -0
- package/presets/claude/android-kotlin/hooks/examples/secret-guard.example.sh +10 -0
- package/presets/claude/android-kotlin/hooks/examples/test-on-save.example.sh +8 -0
- package/presets/claude/android-kotlin/hooks/guard-shell-command.sh +80 -0
- package/presets/claude/android-kotlin/mcp.json +12 -0
- package/presets/claude/android-kotlin/rules/README.md +63 -0
- package/presets/claude/android-kotlin/rules/api-and-data/README.md +10 -0
- package/presets/claude/android-kotlin/rules/api-and-data/networking.md +30 -0
- package/presets/claude/android-kotlin/rules/api-and-data/persistence.md +29 -0
- package/presets/claude/android-kotlin/rules/architecture/README.md +9 -0
- package/presets/claude/android-kotlin/rules/architecture/boundaries.md +27 -0
- package/presets/claude/android-kotlin/rules/architecture/di-dagger-feature-holders.md +34 -0
- package/presets/claude/android-kotlin/rules/architecture/feature-delivery.md +41 -0
- package/presets/claude/android-kotlin/rules/architecture/module-public-api.md +29 -0
- package/presets/claude/android-kotlin/rules/architecture/reference-features.md +28 -0
- package/presets/claude/android-kotlin/rules/stack/README.md +6 -0
- package/presets/claude/android-kotlin/rules/stack/android-app-core.md +27 -0
- package/presets/claude/android-kotlin/rules/stack/kotlin-conventions.md +30 -0
- package/presets/claude/android-kotlin/rules/testing/README.md +10 -0
- package/presets/claude/android-kotlin/rules/testing/ui.md +28 -0
- package/presets/claude/android-kotlin/rules/testing/unit.md +29 -0
- package/presets/claude/android-kotlin/rules/tooling-and-review/README.md +19 -0
- package/presets/claude/android-kotlin/rules/tooling-and-review/agent-team-intake.md +18 -0
- package/presets/claude/android-kotlin/rules/tooling-and-review/agent-team-orchestrator.md +127 -0
- package/presets/claude/android-kotlin/rules/tooling-and-review/anti-sycophancy-discipline.md +29 -0
- package/presets/claude/android-kotlin/rules/tooling-and-review/code-quality.md +52 -0
- package/presets/claude/android-kotlin/rules/tooling-and-review/code-review.md +88 -0
- package/presets/claude/android-kotlin/rules/tooling-and-review/design-guidance.md +110 -0
- package/presets/claude/android-kotlin/rules/tooling-and-review/gradle-tooling.md +30 -0
- package/presets/claude/android-kotlin/rules/tooling-and-review/post-change-build.md +34 -0
- package/presets/claude/android-kotlin/rules/tooling-and-review/preset-layering.md +36 -0
- package/presets/claude/android-kotlin/rules/tooling-and-review/preset-no-cross-stack-leakage.md +100 -0
- package/presets/claude/android-kotlin/rules/tooling-and-review/preset-pr-checklist.md +39 -0
- package/presets/claude/android-kotlin/rules/tooling-and-review/preset-token-budget.md +41 -0
- package/presets/claude/android-kotlin/rules/tooling-and-review/preset-twin-sync.md +56 -0
- package/presets/claude/android-kotlin/rules/tooling-and-review/security-android.md +29 -0
- package/presets/claude/android-kotlin/rules/tooling-and-review/technical-retro.md +18 -0
- package/presets/claude/android-kotlin/rules/ui-and-accessibility/README.md +7 -0
- package/presets/claude/android-kotlin/rules/ui-and-accessibility/compose.md +31 -0
- package/presets/claude/android-kotlin/rules/ui-and-accessibility/navigation.md +30 -0
- package/presets/claude/android-kotlin/rules/ui-and-accessibility/viewmodels.md +27 -0
- package/presets/claude/android-kotlin/skills/README.md +14 -0
- package/presets/claude/android-kotlin/skills/ci-investigation/SKILL.md +39 -0
- package/presets/claude/android-kotlin/skills/code-review/SKILL.md +39 -0
- package/presets/claude/android-kotlin/skills/debug-investigation/SKILL.md +34 -0
- package/presets/claude/android-kotlin/skills/feature-delivery/SKILL.md +35 -0
- package/presets/claude/android-kotlin/skills/instrumentation-ui-e2e/SKILL.md +17 -0
- package/presets/claude/android-kotlin/skills/technical-retro/SKILL.md +54 -0
- package/presets/claude/android-kotlin/skills/unit-testing/SKILL.md +32 -0
- package/presets/claude/android-kotlin/skills/write-adr/SKILL.md +41 -0
- package/presets/claude/android-kotlin/team/README.md +54 -0
- package/presets/claude/android-kotlin/team/conventions.md +17 -0
- package/presets/claude/android-kotlin/team/fixtures/bugfix-standard.json +47 -0
- package/presets/claude/android-kotlin/team/fixtures/feature-full.json +97 -0
- package/presets/claude/android-kotlin/team/fixtures/feature-light.json +38 -0
- package/presets/claude/go/rules/tooling-and-review/preset-layering.md +1 -1
- package/presets/claude/go/rules/tooling-and-review/preset-no-cross-stack-leakage.md +25 -12
- package/presets/claude/go/rules/tooling-and-review/preset-pr-checklist.md +1 -1
- package/presets/claude/go/rules/tooling-and-review/preset-twin-sync.md +2 -0
- package/presets/claude/ios-swift/rules/tooling-and-review/preset-layering.md +1 -1
- package/presets/claude/ios-swift/rules/tooling-and-review/preset-no-cross-stack-leakage.md +25 -12
- package/presets/claude/ios-swift/rules/tooling-and-review/preset-pr-checklist.md +1 -1
- package/presets/claude/ios-swift/rules/tooling-and-review/preset-twin-sync.md +2 -0
- package/presets/claude/java/rules/tooling-and-review/preset-layering.md +1 -1
- package/presets/claude/java/rules/tooling-and-review/preset-no-cross-stack-leakage.md +25 -12
- package/presets/claude/java/rules/tooling-and-review/preset-pr-checklist.md +1 -1
- package/presets/claude/java/rules/tooling-and-review/preset-twin-sync.md +2 -0
- package/presets/claude/mcp-ts/rules/tooling-and-review/preset-layering.md +1 -1
- package/presets/claude/mcp-ts/rules/tooling-and-review/preset-no-cross-stack-leakage.md +25 -12
- package/presets/claude/mcp-ts/rules/tooling-and-review/preset-pr-checklist.md +1 -1
- package/presets/claude/mcp-ts/rules/tooling-and-review/preset-twin-sync.md +2 -0
- package/presets/claude/next/rules/tooling-and-review/preset-layering.md +1 -1
- package/presets/claude/next/rules/tooling-and-review/preset-no-cross-stack-leakage.md +25 -12
- package/presets/claude/next/rules/tooling-and-review/preset-pr-checklist.md +1 -1
- package/presets/claude/next/rules/tooling-and-review/preset-twin-sync.md +2 -0
- package/presets/claude/nuxt/rules/tooling-and-review/preset-layering.md +1 -1
- package/presets/claude/nuxt/rules/tooling-and-review/preset-no-cross-stack-leakage.md +25 -12
- package/presets/claude/nuxt/rules/tooling-and-review/preset-pr-checklist.md +1 -1
- package/presets/claude/nuxt/rules/tooling-and-review/preset-twin-sync.md +2 -0
- package/presets/claude/php-hexagonal/rules/tooling-and-review/preset-layering.md +1 -1
- package/presets/claude/php-hexagonal/rules/tooling-and-review/preset-no-cross-stack-leakage.md +25 -12
- package/presets/claude/php-hexagonal/rules/tooling-and-review/preset-pr-checklist.md +1 -1
- package/presets/claude/php-hexagonal/rules/tooling-and-review/preset-twin-sync.md +2 -0
- package/presets/claude/php-laravel/rules/tooling-and-review/preset-layering.md +1 -1
- package/presets/claude/php-laravel/rules/tooling-and-review/preset-no-cross-stack-leakage.md +25 -12
- package/presets/claude/php-laravel/rules/tooling-and-review/preset-pr-checklist.md +1 -1
- package/presets/claude/php-laravel/rules/tooling-and-review/preset-twin-sync.md +2 -0
- package/presets/claude/svelte/rules/tooling-and-review/preset-layering.md +1 -1
- package/presets/claude/svelte/rules/tooling-and-review/preset-no-cross-stack-leakage.md +25 -12
- package/presets/claude/svelte/rules/tooling-and-review/preset-pr-checklist.md +1 -1
- package/presets/claude/svelte/rules/tooling-and-review/preset-twin-sync.md +2 -0
- package/presets/cursor/android-kotlin/AGENTS.md +50 -0
- package/presets/cursor/android-kotlin/BUGBOT.md +16 -0
- package/presets/cursor/android-kotlin/MCP.md +16 -0
- package/presets/cursor/android-kotlin/README.md +35 -0
- package/presets/cursor/android-kotlin/REPO_AGENTS.md +48 -0
- package/presets/cursor/android-kotlin/agents/README.md +44 -0
- package/presets/cursor/android-kotlin/agents/accessibility-reviewer.md +60 -0
- package/presets/cursor/android-kotlin/agents/api-contract-reviewer.md +70 -0
- package/presets/cursor/android-kotlin/agents/build-verifier.md +67 -0
- package/presets/cursor/android-kotlin/agents/ci-investigator.md +74 -0
- package/presets/cursor/android-kotlin/agents/code-reviewer.md +74 -0
- package/presets/cursor/android-kotlin/agents/codebase-analyzer.md +28 -0
- package/presets/cursor/android-kotlin/agents/debugger.md +77 -0
- package/presets/cursor/android-kotlin/agents/feature-developer.md +63 -0
- package/presets/cursor/android-kotlin/agents/instrumentation-test-generator.md +19 -0
- package/presets/cursor/android-kotlin/agents/instrumentation-test-healer.md +19 -0
- package/presets/cursor/android-kotlin/agents/instrumentation-test-planner.md +19 -0
- package/presets/cursor/android-kotlin/agents/migration-specialist.md +74 -0
- package/presets/cursor/android-kotlin/agents/performance-auditor.md +67 -0
- package/presets/cursor/android-kotlin/agents/qa-tester.md +66 -0
- package/presets/cursor/android-kotlin/agents/security-reviewer.md +65 -0
- package/presets/cursor/android-kotlin/agents/solution-architect.md +21 -0
- package/presets/cursor/android-kotlin/agents/task-analyst.md +36 -0
- package/presets/cursor/android-kotlin/agents/task-router.md +103 -0
- package/presets/cursor/android-kotlin/agents/tech-writer.md +61 -0
- package/presets/cursor/android-kotlin/agents/unit-test-generator.md +55 -0
- package/presets/cursor/android-kotlin/agents/unit-test-healer.md +54 -0
- package/presets/cursor/android-kotlin/agents/unit-test-planner.md +65 -0
- package/presets/cursor/android-kotlin/commands/README.md +51 -0
- package/presets/cursor/android-kotlin/commands/feature-continue.md +19 -0
- package/presets/cursor/android-kotlin/commands/feature-start.md +33 -0
- package/presets/cursor/android-kotlin/commands/task-continue.md +50 -0
- package/presets/cursor/android-kotlin/commands/task.md +56 -0
- package/presets/cursor/android-kotlin/commands/technical-retro.md +85 -0
- package/presets/cursor/android-kotlin/hooks/README.md +12 -0
- package/presets/cursor/android-kotlin/hooks/chain-team-phases.sh +723 -0
- package/presets/cursor/android-kotlin/hooks/examples/README.md +18 -0
- package/presets/cursor/android-kotlin/hooks/examples/format-edited.example.sh +13 -0
- package/presets/cursor/android-kotlin/hooks/examples/secret-guard.example.sh +10 -0
- package/presets/cursor/android-kotlin/hooks/examples/test-on-save.example.sh +8 -0
- package/presets/cursor/android-kotlin/hooks/guard-shell-command.sh +80 -0
- package/presets/cursor/android-kotlin/hooks.json +17 -0
- package/presets/cursor/android-kotlin/mcp.json +11 -0
- package/presets/cursor/android-kotlin/rules/README.md +61 -0
- package/presets/cursor/android-kotlin/rules/agent-team-intake.mdc +16 -0
- package/presets/cursor/android-kotlin/rules/agent-team-orchestrator.mdc +124 -0
- package/presets/cursor/android-kotlin/rules/android-app-core.mdc +28 -0
- package/presets/cursor/android-kotlin/rules/anti-sycophancy-discipline.mdc +30 -0
- package/presets/cursor/android-kotlin/rules/architecture-boundaries.mdc +28 -0
- package/presets/cursor/android-kotlin/rules/code-quality-and-refactoring.mdc +53 -0
- package/presets/cursor/android-kotlin/rules/code-review-mr.mdc +84 -0
- package/presets/cursor/android-kotlin/rules/compose-ui.mdc +32 -0
- package/presets/cursor/android-kotlin/rules/design-guidance.mdc +111 -0
- package/presets/cursor/android-kotlin/rules/di-dagger-feature-holders.mdc +35 -0
- package/presets/cursor/android-kotlin/rules/feature-delivery-workflow.mdc +36 -0
- package/presets/cursor/android-kotlin/rules/gradle-tooling.mdc +31 -0
- package/presets/cursor/android-kotlin/rules/kotlin-conventions.mdc +31 -0
- package/presets/cursor/android-kotlin/rules/module-public-api.mdc +30 -0
- package/presets/cursor/android-kotlin/rules/navigation-feature-launcher.mdc +31 -0
- package/presets/cursor/android-kotlin/rules/networking-data.mdc +31 -0
- package/presets/cursor/android-kotlin/rules/persistence-data.mdc +30 -0
- package/presets/cursor/android-kotlin/rules/post-change-build.mdc +30 -0
- package/presets/cursor/android-kotlin/rules/preset-layering.mdc +36 -0
- package/presets/cursor/android-kotlin/rules/preset-no-cross-stack-leakage.mdc +100 -0
- package/presets/cursor/android-kotlin/rules/preset-pr-checklist.mdc +39 -0
- package/presets/cursor/android-kotlin/rules/preset-token-budget.mdc +41 -0
- package/presets/cursor/android-kotlin/rules/preset-twin-sync.mdc +56 -0
- package/presets/cursor/android-kotlin/rules/reference-features.mdc +29 -0
- package/presets/cursor/android-kotlin/rules/security-android.mdc +30 -0
- package/presets/cursor/android-kotlin/rules/state-and-viewmodels.mdc +28 -0
- package/presets/cursor/android-kotlin/rules/technical-retro.mdc +16 -0
- package/presets/cursor/android-kotlin/rules/tests-ui.mdc +29 -0
- package/presets/cursor/android-kotlin/rules/tests-unit.mdc +30 -0
- package/presets/cursor/android-kotlin/skills/README.md +14 -0
- package/presets/cursor/android-kotlin/skills/ci-investigation/SKILL.md +39 -0
- package/presets/cursor/android-kotlin/skills/code-review/SKILL.md +39 -0
- package/presets/cursor/android-kotlin/skills/debug-investigation/SKILL.md +34 -0
- package/presets/cursor/android-kotlin/skills/feature-delivery/SKILL.md +35 -0
- package/presets/cursor/android-kotlin/skills/instrumentation-ui-e2e/SKILL.md +17 -0
- package/presets/cursor/android-kotlin/skills/technical-retro/SKILL.md +54 -0
- package/presets/cursor/android-kotlin/skills/unit-testing/SKILL.md +32 -0
- package/presets/cursor/android-kotlin/skills/write-adr/SKILL.md +41 -0
- package/presets/cursor/android-kotlin/team/README.md +54 -0
- package/presets/cursor/android-kotlin/team/conventions.md +17 -0
- package/presets/cursor/android-kotlin/team/fixtures/bugfix-standard.json +47 -0
- package/presets/cursor/android-kotlin/team/fixtures/feature-full.json +97 -0
- package/presets/cursor/android-kotlin/team/fixtures/feature-light.json +38 -0
- package/presets/cursor/go/rules/preset-layering.mdc +1 -1
- package/presets/cursor/go/rules/preset-no-cross-stack-leakage.mdc +25 -12
- package/presets/cursor/go/rules/preset-pr-checklist.mdc +1 -1
- package/presets/cursor/go/rules/preset-twin-sync.mdc +2 -0
- package/presets/cursor/ios-swift/rules/preset-layering.mdc +1 -1
- package/presets/cursor/ios-swift/rules/preset-no-cross-stack-leakage.mdc +25 -12
- package/presets/cursor/ios-swift/rules/preset-pr-checklist.mdc +1 -1
- package/presets/cursor/ios-swift/rules/preset-twin-sync.mdc +2 -0
- package/presets/cursor/java/rules/preset-layering.mdc +1 -1
- package/presets/cursor/java/rules/preset-no-cross-stack-leakage.mdc +25 -12
- package/presets/cursor/java/rules/preset-pr-checklist.mdc +1 -1
- package/presets/cursor/java/rules/preset-twin-sync.mdc +2 -0
- package/presets/cursor/mcp-ts/rules/preset-layering.mdc +1 -1
- package/presets/cursor/mcp-ts/rules/preset-no-cross-stack-leakage.mdc +25 -12
- package/presets/cursor/mcp-ts/rules/preset-pr-checklist.mdc +1 -1
- package/presets/cursor/mcp-ts/rules/preset-twin-sync.mdc +2 -0
- package/presets/cursor/next/rules/preset-layering.mdc +1 -1
- package/presets/cursor/next/rules/preset-no-cross-stack-leakage.mdc +25 -12
- package/presets/cursor/next/rules/preset-pr-checklist.mdc +1 -1
- package/presets/cursor/next/rules/preset-twin-sync.mdc +2 -0
- package/presets/cursor/nuxt/rules/preset-layering.mdc +1 -1
- package/presets/cursor/nuxt/rules/preset-no-cross-stack-leakage.mdc +25 -12
- package/presets/cursor/nuxt/rules/preset-pr-checklist.mdc +1 -1
- package/presets/cursor/nuxt/rules/preset-twin-sync.mdc +2 -0
- package/presets/cursor/php-hexagonal/rules/preset-layering.mdc +1 -1
- package/presets/cursor/php-hexagonal/rules/preset-no-cross-stack-leakage.mdc +25 -12
- package/presets/cursor/php-hexagonal/rules/preset-pr-checklist.mdc +1 -1
- package/presets/cursor/php-hexagonal/rules/preset-twin-sync.mdc +2 -0
- package/presets/cursor/php-laravel/rules/preset-layering.mdc +1 -1
- package/presets/cursor/php-laravel/rules/preset-no-cross-stack-leakage.mdc +25 -12
- package/presets/cursor/php-laravel/rules/preset-pr-checklist.mdc +1 -1
- package/presets/cursor/php-laravel/rules/preset-twin-sync.mdc +2 -0
- package/presets/cursor/svelte/rules/preset-layering.mdc +1 -1
- package/presets/cursor/svelte/rules/preset-no-cross-stack-leakage.mdc +25 -12
- package/presets/cursor/svelte/rules/preset-pr-checklist.mdc +1 -1
- package/presets/cursor/svelte/rules/preset-twin-sync.mdc +2 -0
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
{
|
|
2
|
+
"slug": "example-bugfix-standard",
|
|
3
|
+
"intent": "bugfix",
|
|
4
|
+
"profile": "standard",
|
|
5
|
+
"summary": "Bugfix with unit coverage and optional instrumentation",
|
|
6
|
+
"steps": [
|
|
7
|
+
{
|
|
8
|
+
"agent": "task-analyst",
|
|
9
|
+
"label": "Clarify repro and AC"
|
|
10
|
+
},
|
|
11
|
+
{
|
|
12
|
+
"agent": "debugger",
|
|
13
|
+
"label": "Reproduce and locate root cause"
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
"agent": "feature-developer",
|
|
17
|
+
"label": "Minimal fix + unit test",
|
|
18
|
+
"scope": "unit-in-dev"
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
"agent": "build-verifier",
|
|
22
|
+
"label": "Gradle compile + lint + unit smoke",
|
|
23
|
+
"model": "cheap"
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
"agent": "code-reviewer",
|
|
27
|
+
"label": "Code review",
|
|
28
|
+
"model": "cheap"
|
|
29
|
+
}
|
|
30
|
+
],
|
|
31
|
+
"humanGates": [],
|
|
32
|
+
"autoChain": true,
|
|
33
|
+
"skipped": [
|
|
34
|
+
{
|
|
35
|
+
"agent": "playwright-test-planner",
|
|
36
|
+
"reason": "Android uses instrumentation-test-*"
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
"agent": "xcuitest-test-planner",
|
|
40
|
+
"reason": "iOS-only"
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
"agent": "instrumentation-test-planner",
|
|
44
|
+
"reason": "No UI AC \u2014 add if regression is UI-only"
|
|
45
|
+
}
|
|
46
|
+
]
|
|
47
|
+
}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
{
|
|
2
|
+
"slug": "example-feature-full",
|
|
3
|
+
"intent": "feature",
|
|
4
|
+
"profile": "full",
|
|
5
|
+
"summary": "Multi-layer feature with Android instrumentation coverage",
|
|
6
|
+
"steps": [
|
|
7
|
+
{
|
|
8
|
+
"agent": "task-analyst",
|
|
9
|
+
"label": "Clarify and decompose"
|
|
10
|
+
},
|
|
11
|
+
{
|
|
12
|
+
"agent": "solution-architect",
|
|
13
|
+
"label": "Design boundaries",
|
|
14
|
+
"model": "strong"
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
"agent": "feature-developer",
|
|
18
|
+
"label": "Implement + unit tests",
|
|
19
|
+
"scope": "unit-in-dev"
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
"agent": "build-verifier",
|
|
23
|
+
"label": "Gradle compile + lint + unit smoke",
|
|
24
|
+
"model": "cheap"
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
"agent": "security-reviewer",
|
|
28
|
+
"label": "Security review",
|
|
29
|
+
"model": "strong"
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
"agent": "code-reviewer",
|
|
33
|
+
"label": "Code review",
|
|
34
|
+
"model": "cheap"
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
"agent": "accessibility-reviewer",
|
|
38
|
+
"label": "Compose a11y",
|
|
39
|
+
"model": "cheap"
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
"agent": "instrumentation-test-planner",
|
|
43
|
+
"label": "Plan instrumentation UI tests"
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
"agent": "instrumentation-test-generator",
|
|
47
|
+
"label": "Generate instrumentation tests"
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
"agent": "instrumentation-test-healer",
|
|
51
|
+
"label": "Heal flaky instrumentation",
|
|
52
|
+
"model": "cheap"
|
|
53
|
+
}
|
|
54
|
+
],
|
|
55
|
+
"humanGates": [
|
|
56
|
+
"after:task-analyst"
|
|
57
|
+
],
|
|
58
|
+
"autoChain": true,
|
|
59
|
+
"skipped": [
|
|
60
|
+
{
|
|
61
|
+
"agent": "playwright-test-planner",
|
|
62
|
+
"reason": "Android uses instrumentation-test-* \u2014 not Playwright"
|
|
63
|
+
},
|
|
64
|
+
{
|
|
65
|
+
"agent": "playwright-test-generator",
|
|
66
|
+
"reason": "Android uses instrumentation-test-*"
|
|
67
|
+
},
|
|
68
|
+
{
|
|
69
|
+
"agent": "playwright-test-healer",
|
|
70
|
+
"reason": "Android uses instrumentation-test-*"
|
|
71
|
+
},
|
|
72
|
+
{
|
|
73
|
+
"agent": "xcuitest-test-planner",
|
|
74
|
+
"reason": "iOS-only"
|
|
75
|
+
},
|
|
76
|
+
{
|
|
77
|
+
"agent": "xcuitest-test-generator",
|
|
78
|
+
"reason": "iOS-only"
|
|
79
|
+
},
|
|
80
|
+
{
|
|
81
|
+
"agent": "xcuitest-test-healer",
|
|
82
|
+
"reason": "iOS-only"
|
|
83
|
+
},
|
|
84
|
+
{
|
|
85
|
+
"agent": "integration-test-planner",
|
|
86
|
+
"reason": "JVM backend pattern \u2014 not Android UI"
|
|
87
|
+
},
|
|
88
|
+
{
|
|
89
|
+
"agent": "integration-test-generator",
|
|
90
|
+
"reason": "JVM backend pattern"
|
|
91
|
+
},
|
|
92
|
+
{
|
|
93
|
+
"agent": "integration-test-healer",
|
|
94
|
+
"reason": "JVM backend pattern"
|
|
95
|
+
}
|
|
96
|
+
]
|
|
97
|
+
}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
{
|
|
2
|
+
"slug": "example-feature-light",
|
|
3
|
+
"intent": "feature",
|
|
4
|
+
"profile": "light",
|
|
5
|
+
"summary": "Trivial single-file change with explicit AC",
|
|
6
|
+
"steps": [
|
|
7
|
+
{
|
|
8
|
+
"agent": "feature-developer",
|
|
9
|
+
"label": "Implement",
|
|
10
|
+
"model": "cheap"
|
|
11
|
+
},
|
|
12
|
+
{
|
|
13
|
+
"agent": "build-verifier",
|
|
14
|
+
"label": "Gradle compile + lint + unit smoke",
|
|
15
|
+
"model": "cheap"
|
|
16
|
+
}
|
|
17
|
+
],
|
|
18
|
+
"humanGates": [],
|
|
19
|
+
"autoChain": true,
|
|
20
|
+
"skipped": [
|
|
21
|
+
{
|
|
22
|
+
"agent": "task-analyst",
|
|
23
|
+
"reason": "Explicit AC and single-file scope"
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
"agent": "code-reviewer",
|
|
27
|
+
"reason": "Light profile \u2014 non-trivial app changes should use standard"
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
"agent": "instrumentation-test-planner",
|
|
31
|
+
"reason": "No UI AC"
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
"agent": "playwright-test-planner",
|
|
35
|
+
"reason": "Android uses instrumentation-test-*"
|
|
36
|
+
}
|
|
37
|
+
]
|
|
38
|
+
}
|
|
@@ -24,7 +24,7 @@ Rules for **preset authors** (`packages/ai-rules/presets/**`). Not always-on in
|
|
|
24
24
|
## Where to put a new rule
|
|
25
25
|
|
|
26
26
|
1. Shared principles for all stacks → **core** + adapters with `<!-- shared-core: … -->`.
|
|
27
|
-
2. Only one of the installable stacks (`next` / `nuxt` / `svelte` / `ios-swift` / `go` / `java` / `mcp-ts` / `php-hexagonal` / `php-laravel`) → **stack-specific** (not in `_shared`).
|
|
27
|
+
2. Only one of the installable stacks (`next` / `nuxt` / `svelte` / `ios-swift` / `android-kotlin` / `go` / `java` / `mcp-ts` / `php-hexagonal` / `php-laravel`) → **stack-specific** (not in `_shared`).
|
|
28
28
|
3. Only Cursor or only Claude packaging → platform artifact / frontmatter; do not duplicate semantics.
|
|
29
29
|
|
|
30
30
|
## SoT
|
|
@@ -15,11 +15,12 @@ Ban leakage of stack-specific names, paths, and handoff stems across presets.
|
|
|
15
15
|
|
|
16
16
|
## Principles
|
|
17
17
|
|
|
18
|
-
- `next` must not require iOS-only agents/tooling (`xcuitest-*`, `xcodebuild` as required handoff, Keychain-only rules).
|
|
19
|
-
- `nuxt` must not require iOS-only agents/tooling (`xcuitest-*`, `xcodebuild` as required handoff, Keychain-only rules).
|
|
20
|
-
- `svelte` must not require iOS-only agents/tooling (`xcuitest-*`, `xcodebuild` as required handoff, Keychain-only rules).
|
|
21
|
-
- `ios-swift` must not ship Playwright handoffs or Next lint recipes as required commands.
|
|
22
|
-
- `
|
|
18
|
+
- `next` must not require iOS-only or Android-only agents/tooling (`xcuitest-*`, `instrumentation-test-*`, `xcodebuild` as required handoff, Keychain-only rules).
|
|
19
|
+
- `nuxt` must not require iOS-only or Android-only agents/tooling (`xcuitest-*`, `instrumentation-test-*`, `xcodebuild` as required handoff, Keychain-only rules).
|
|
20
|
+
- `svelte` must not require iOS-only or Android-only agents/tooling (`xcuitest-*`, `instrumentation-test-*`, `xcodebuild` as required handoff, Keychain-only rules).
|
|
21
|
+
- `ios-swift` must not ship Playwright handoffs, Android `instrumentation-test-*` handoffs, or Next lint recipes as required commands.
|
|
22
|
+
- `android-kotlin` must not ship Playwright, XCUITest, `xcodebuild`, or Next lint recipes as required handoffs.
|
|
23
|
+
- `go` / `java` / `php-hexagonal` / `php-laravel` / `mcp-ts` must not ship Playwright, XCUITest, Android instrumentation agents, Next lint recipes, or `xcodebuild`/`SwiftLint` as required handoffs.
|
|
23
24
|
- `mcp-ts` must not ship Go tool commands (`go test`, `go vet`, `golangci-lint`) or `integration-test-*` agents as required delivery gates.
|
|
24
25
|
- Shared core must not embed stack paths (`app/src/**`, `Features/**`, `playwright`, `xcodebuild`).
|
|
25
26
|
|
|
@@ -28,25 +29,37 @@ Ban leakage of stack-specific names, paths, and handoff stems across presets.
|
|
|
28
29
|
In ios-swift `chain-team-phases.sh` / agent handoffs (Cursor + Claude):
|
|
29
30
|
|
|
30
31
|
- `playwright-test-`, `playwright-agents`, `playwright-e2e`, `user-playwright`
|
|
32
|
+
- `instrumentation-test-` as required Android handoffs
|
|
31
33
|
- `app/__tests__/e2e` as a required path
|
|
32
34
|
- Positive yarn recipes `lint:js` / `lint:css` as commands to run (negation prose alone is weak — prefer zero occurrences)
|
|
33
35
|
|
|
34
36
|
Required instead: `xcuitest-test-*` stems; build-verifier mentions `xcodebuild` or `post-change-build` / `xcode-tooling`.
|
|
35
37
|
|
|
38
|
+
## Forbidden in android-kotlin hooks/agents (FAIL)
|
|
39
|
+
|
|
40
|
+
In android-kotlin `chain-team-phases.sh` / agent handoffs (Cursor + Claude):
|
|
41
|
+
|
|
42
|
+
- `playwright-test-`, `playwright-agents`, `playwright-e2e`, `user-playwright`
|
|
43
|
+
- `app/__tests__/e2e` as a required path
|
|
44
|
+
- `xcuitest-test-`, positive `xcodebuild` / `SwiftLint` as required handoffs
|
|
45
|
+
- Positive yarn recipes `lint:js` / `lint:css` as commands to run
|
|
46
|
+
|
|
47
|
+
Required instead: `instrumentation-test-*` stems; build-verifier mentions `gradle-tooling` and/or `post-change-build` (Gradle wrapper discovery — not `xcodebuild` as the default gate).
|
|
48
|
+
|
|
36
49
|
## Forbidden in next hooks/agents (FAIL when present as required)
|
|
37
50
|
|
|
38
|
-
- `xcuitest-test-` as handoff stems
|
|
51
|
+
- `xcuitest-test-` / `instrumentation-test-` as handoff stems
|
|
39
52
|
- Requiring `xcodebuild` / SwiftLint as the default post-change gate for Next app work
|
|
40
53
|
|
|
41
54
|
## Forbidden in nuxt hooks/agents (FAIL when present as required)
|
|
42
55
|
|
|
43
|
-
- `xcuitest-test-` as handoff stems
|
|
56
|
+
- `xcuitest-test-` / `instrumentation-test-` as handoff stems
|
|
44
57
|
- Requiring `xcodebuild` / SwiftLint as the default post-change gate for Nuxt app work
|
|
45
58
|
- Frontend profile mirrors `next`: Playwright / `lint:js` / `lint:css` allowed
|
|
46
59
|
|
|
47
60
|
## Forbidden in svelte hooks/agents (FAIL when present as required)
|
|
48
61
|
|
|
49
|
-
- `xcuitest-test-` as handoff stems
|
|
62
|
+
- `xcuitest-test-` / `instrumentation-test-` as handoff stems
|
|
50
63
|
- Requiring `xcodebuild` / SwiftLint as the default post-change gate for SvelteKit app work
|
|
51
64
|
- Frontend profile mirrors `next` / `nuxt`: Playwright / `lint:js` / `lint:css` allowed
|
|
52
65
|
|
|
@@ -56,7 +69,7 @@ Shared backend-stack bans (`go`, `java`, `php-hexagonal`, and `php-laravel`):
|
|
|
56
69
|
|
|
57
70
|
- `playwright-test-`, `playwright-e2e`, `user-playwright`, `app/__tests__/e2e`
|
|
58
71
|
- Positive yarn recipes `lint:js` / `lint:css`
|
|
59
|
-
- `xcuitest-test-`, `xcodebuild`, `SwiftLint` as required handoffs
|
|
72
|
+
- `xcuitest-test-`, `instrumentation-test-`, `xcodebuild`, `SwiftLint` as required handoffs
|
|
60
73
|
- Agent file `accessibility-reviewer` (no UI surface)
|
|
61
74
|
|
|
62
75
|
Required instead: `integration-test-*`; build-verifier / `post-change-test` plus stack tooling — `go-tooling` (`go test`, `go vet`), `java-tooling` (`mvn test` / `./gradlew test`), or `php-tooling` (`php artisan test` / `composer test` / `vendor/bin/phpunit`).
|
|
@@ -67,9 +80,9 @@ Same UI/mobile bans as backend stacks, plus:
|
|
|
67
80
|
|
|
68
81
|
- `playwright-test-`, `playwright-agents`, `playwright-e2e`, `user-playwright`, `app/__tests__/e2e`
|
|
69
82
|
- Positive yarn recipes `lint:js` / `lint:css` as required gates
|
|
70
|
-
- `xcuitest-test-`, `xcodebuild`, `SwiftLint` as required handoffs
|
|
83
|
+
- `xcuitest-test-`, `instrumentation-test-`, `xcodebuild`, `SwiftLint` as required handoffs
|
|
71
84
|
- Go tool commands as required MCP delivery gates: `go test`, `go vet`, `golangci-lint`
|
|
72
|
-
- Agent files: `playwright-test-*`, `xcuitest-test-*`, `integration-test-*`, `accessibility-reviewer`
|
|
85
|
+
- Agent files: `playwright-test-*`, `xcuitest-test-*`, `instrumentation-test-*`, `integration-test-*`, `accessibility-reviewer`
|
|
73
86
|
|
|
74
87
|
Required instead: package-manager–discovered typecheck/test (`mcp-ts-tooling`, `post-change-test`); Phase 1 gates `build-verifier` + `security-reviewer`.
|
|
75
88
|
|
|
@@ -80,4 +93,4 @@ Required instead: package-manager–discovered typecheck/test (`mcp-ts-tooling`,
|
|
|
80
93
|
|
|
81
94
|
## Chain fork
|
|
82
95
|
|
|
83
|
-
`hooks/chain-team-phases.sh` must differ **byte-wise** pairwise among `next`, `nuxt`, `svelte`, `ios-swift`, `go`, `java`, `mcp-ts`, `php-hexagonal`, and `php-laravel` (per platform).
|
|
96
|
+
`hooks/chain-team-phases.sh` must differ **byte-wise** pairwise among `next`, `nuxt`, `svelte`, `ios-swift`, `android-kotlin`, `go`, `java`, `mcp-ts`, `php-hexagonal`, and `php-laravel` (per platform).
|
|
@@ -17,7 +17,7 @@ Checklist for PRs that touch `packages/ai-rules/presets/**` (and dogfood `.curso
|
|
|
17
17
|
|
|
18
18
|
- [ ] **SoT:** edits in `packages/…` (not only root `.cursor/`)
|
|
19
19
|
- [ ] **Core:** if `_shared/core/**` changed — all `<!-- shared-core: … -->` consumers updated (or documented intentional fork)
|
|
20
|
-
- [ ] **Twin:** Cursor change → Claude twin **same PR** (**FAIL** if missing on next, nuxt, svelte, ios-swift, go, java, mcp-ts, php-hexagonal, and php-laravel — see `preset-twin-sync`)
|
|
20
|
+
- [ ] **Twin:** Cursor change → Claude twin **same PR** (**FAIL** if missing on next, nuxt, svelte, ios-swift, android-kotlin, go, java, mcp-ts, php-hexagonal, and php-laravel — see `preset-twin-sync`)
|
|
21
21
|
- [ ] **Mapping:** `claude/<stack>/rules/README.md` mapping table is current
|
|
22
22
|
- [ ] **Token budget:** alwaysApply / session-start ≤ 3; meta rules not always-on
|
|
23
23
|
- [ ] **Leakage:** no foreign stack agent stems / handoff strings (`preset-no-cross-stack-leakage`)
|
|
@@ -26,6 +26,7 @@ Cursor `.mdc` — **SoT per stack**. Claude topic `.md` — derived twin.
|
|
|
26
26
|
| `mcp-ts` | `presets/cursor/mcp-ts/rules/*.mdc` | `presets/claude/mcp-ts/rules/<topic>/` | Keep in `claude/mcp-ts/rules/README.md` |
|
|
27
27
|
| `php-hexagonal` | `presets/cursor/php-hexagonal/rules/*.mdc` | `presets/claude/php-hexagonal/rules/<topic>/` | Keep in `claude/php-hexagonal/rules/README.md` |
|
|
28
28
|
| `php-laravel` | `presets/cursor/php-laravel/rules/*.mdc` | `presets/claude/php-laravel/rules/<topic>/` | Keep in `claude/php-laravel/rules/README.md` |
|
|
29
|
+
| `android-kotlin` | `presets/cursor/android-kotlin/rules/*.mdc` | `presets/claude/android-kotlin/rules/<topic>/` | Keep in `claude/android-kotlin/rules/README.md` |
|
|
29
30
|
|
|
30
31
|
## Same-PR checklist
|
|
31
32
|
|
|
@@ -50,5 +51,6 @@ Cursor `.mdc` — **SoT per stack**. Claude topic `.md` — derived twin.
|
|
|
50
51
|
- **mcp-ts:** missing Claude twin for a changed Cursor rule → **FAIL** (same as next / ios-swift / go / java; mapping table required).
|
|
51
52
|
- **php-hexagonal:** missing Claude twin for a changed Cursor rule → **FAIL** (same as next / ios-swift / go / java / mcp-ts; mapping table required).
|
|
52
53
|
- **php-laravel:** missing Claude twin for a changed Cursor rule → **FAIL** (same as next / ios-swift / go / java / mcp-ts / php-hexagonal; mapping table required).
|
|
54
|
+
- **android-kotlin:** missing Claude twin for a changed Cursor rule → **FAIL** (same as next / ios-swift / go / java / mcp-ts / php-*; mapping table required).
|
|
53
55
|
|
|
54
56
|
Dogfood: sync packages → root `.cursor/` after Cursor SoT changes (not the reverse). Use `packages/ai-rules/scripts/sync-dogfood-cursor.sh`.
|
|
@@ -24,7 +24,7 @@ Rules for **preset authors** (`packages/ai-rules/presets/**`). Not always-on in
|
|
|
24
24
|
## Where to put a new rule
|
|
25
25
|
|
|
26
26
|
1. Shared principles for all stacks → **core** + adapters with `<!-- shared-core: … -->`.
|
|
27
|
-
2. Only one of the installable stacks (`next` / `nuxt` / `svelte` / `ios-swift` / `go` / `java` / `mcp-ts` / `php-hexagonal` / `php-laravel`) → **stack-specific** (not in `_shared`).
|
|
27
|
+
2. Only one of the installable stacks (`next` / `nuxt` / `svelte` / `ios-swift` / `android-kotlin` / `go` / `java` / `mcp-ts` / `php-hexagonal` / `php-laravel`) → **stack-specific** (not in `_shared`).
|
|
28
28
|
3. Only Cursor or only Claude packaging → platform artifact / frontmatter; do not duplicate semantics.
|
|
29
29
|
|
|
30
30
|
## SoT
|
|
@@ -15,11 +15,12 @@ Ban leakage of stack-specific names, paths, and handoff stems across presets.
|
|
|
15
15
|
|
|
16
16
|
## Principles
|
|
17
17
|
|
|
18
|
-
- `next` must not require iOS-only agents/tooling (`xcuitest-*`, `xcodebuild` as required handoff, Keychain-only rules).
|
|
19
|
-
- `nuxt` must not require iOS-only agents/tooling (`xcuitest-*`, `xcodebuild` as required handoff, Keychain-only rules).
|
|
20
|
-
- `svelte` must not require iOS-only agents/tooling (`xcuitest-*`, `xcodebuild` as required handoff, Keychain-only rules).
|
|
21
|
-
- `ios-swift` must not ship Playwright handoffs or Next lint recipes as required commands.
|
|
22
|
-
- `
|
|
18
|
+
- `next` must not require iOS-only or Android-only agents/tooling (`xcuitest-*`, `instrumentation-test-*`, `xcodebuild` as required handoff, Keychain-only rules).
|
|
19
|
+
- `nuxt` must not require iOS-only or Android-only agents/tooling (`xcuitest-*`, `instrumentation-test-*`, `xcodebuild` as required handoff, Keychain-only rules).
|
|
20
|
+
- `svelte` must not require iOS-only or Android-only agents/tooling (`xcuitest-*`, `instrumentation-test-*`, `xcodebuild` as required handoff, Keychain-only rules).
|
|
21
|
+
- `ios-swift` must not ship Playwright handoffs, Android `instrumentation-test-*` handoffs, or Next lint recipes as required commands.
|
|
22
|
+
- `android-kotlin` must not ship Playwright, XCUITest, `xcodebuild`, or Next lint recipes as required handoffs.
|
|
23
|
+
- `go` / `java` / `php-hexagonal` / `php-laravel` / `mcp-ts` must not ship Playwright, XCUITest, Android instrumentation agents, Next lint recipes, or `xcodebuild`/`SwiftLint` as required handoffs.
|
|
23
24
|
- `mcp-ts` must not ship Go tool commands (`go test`, `go vet`, `golangci-lint`) or `integration-test-*` agents as required delivery gates.
|
|
24
25
|
- Shared core must not embed stack paths (`app/src/**`, `Features/**`, `playwright`, `xcodebuild`).
|
|
25
26
|
|
|
@@ -28,25 +29,37 @@ Ban leakage of stack-specific names, paths, and handoff stems across presets.
|
|
|
28
29
|
In ios-swift `chain-team-phases.sh` / agent handoffs (Cursor + Claude):
|
|
29
30
|
|
|
30
31
|
- `playwright-test-`, `playwright-agents`, `playwright-e2e`, `user-playwright`
|
|
32
|
+
- `instrumentation-test-` as required Android handoffs
|
|
31
33
|
- `app/__tests__/e2e` as a required path
|
|
32
34
|
- Positive yarn recipes `lint:js` / `lint:css` as commands to run (negation prose alone is weak — prefer zero occurrences)
|
|
33
35
|
|
|
34
36
|
Required instead: `xcuitest-test-*` stems; build-verifier mentions `xcodebuild` or `post-change-build` / `xcode-tooling`.
|
|
35
37
|
|
|
38
|
+
## Forbidden in android-kotlin hooks/agents (FAIL)
|
|
39
|
+
|
|
40
|
+
In android-kotlin `chain-team-phases.sh` / agent handoffs (Cursor + Claude):
|
|
41
|
+
|
|
42
|
+
- `playwright-test-`, `playwright-agents`, `playwright-e2e`, `user-playwright`
|
|
43
|
+
- `app/__tests__/e2e` as a required path
|
|
44
|
+
- `xcuitest-test-`, positive `xcodebuild` / `SwiftLint` as required handoffs
|
|
45
|
+
- Positive yarn recipes `lint:js` / `lint:css` as commands to run
|
|
46
|
+
|
|
47
|
+
Required instead: `instrumentation-test-*` stems; build-verifier mentions `gradle-tooling` and/or `post-change-build` (Gradle wrapper discovery — not `xcodebuild` as the default gate).
|
|
48
|
+
|
|
36
49
|
## Forbidden in next hooks/agents (FAIL when present as required)
|
|
37
50
|
|
|
38
|
-
- `xcuitest-test-` as handoff stems
|
|
51
|
+
- `xcuitest-test-` / `instrumentation-test-` as handoff stems
|
|
39
52
|
- Requiring `xcodebuild` / SwiftLint as the default post-change gate for Next app work
|
|
40
53
|
|
|
41
54
|
## Forbidden in nuxt hooks/agents (FAIL when present as required)
|
|
42
55
|
|
|
43
|
-
- `xcuitest-test-` as handoff stems
|
|
56
|
+
- `xcuitest-test-` / `instrumentation-test-` as handoff stems
|
|
44
57
|
- Requiring `xcodebuild` / SwiftLint as the default post-change gate for Nuxt app work
|
|
45
58
|
- Frontend profile mirrors `next`: Playwright / `lint:js` / `lint:css` allowed
|
|
46
59
|
|
|
47
60
|
## Forbidden in svelte hooks/agents (FAIL when present as required)
|
|
48
61
|
|
|
49
|
-
- `xcuitest-test-` as handoff stems
|
|
62
|
+
- `xcuitest-test-` / `instrumentation-test-` as handoff stems
|
|
50
63
|
- Requiring `xcodebuild` / SwiftLint as the default post-change gate for SvelteKit app work
|
|
51
64
|
- Frontend profile mirrors `next` / `nuxt`: Playwright / `lint:js` / `lint:css` allowed
|
|
52
65
|
|
|
@@ -56,7 +69,7 @@ Shared backend-stack bans (`go`, `java`, `php-hexagonal`, and `php-laravel`):
|
|
|
56
69
|
|
|
57
70
|
- `playwright-test-`, `playwright-e2e`, `user-playwright`, `app/__tests__/e2e`
|
|
58
71
|
- Positive yarn recipes `lint:js` / `lint:css`
|
|
59
|
-
- `xcuitest-test-`, `xcodebuild`, `SwiftLint` as required handoffs
|
|
72
|
+
- `xcuitest-test-`, `instrumentation-test-`, `xcodebuild`, `SwiftLint` as required handoffs
|
|
60
73
|
- Agent file `accessibility-reviewer` (no UI surface)
|
|
61
74
|
|
|
62
75
|
Required instead: `integration-test-*`; build-verifier / `post-change-test` plus stack tooling — `go-tooling` (`go test`, `go vet`), `java-tooling` (`mvn test` / `./gradlew test`), or `php-tooling` (`php artisan test` / `composer test` / `vendor/bin/phpunit`).
|
|
@@ -67,9 +80,9 @@ Same UI/mobile bans as backend stacks, plus:
|
|
|
67
80
|
|
|
68
81
|
- `playwright-test-`, `playwright-agents`, `playwright-e2e`, `user-playwright`, `app/__tests__/e2e`
|
|
69
82
|
- Positive yarn recipes `lint:js` / `lint:css` as required gates
|
|
70
|
-
- `xcuitest-test-`, `xcodebuild`, `SwiftLint` as required handoffs
|
|
83
|
+
- `xcuitest-test-`, `instrumentation-test-`, `xcodebuild`, `SwiftLint` as required handoffs
|
|
71
84
|
- Go tool commands as required MCP delivery gates: `go test`, `go vet`, `golangci-lint`
|
|
72
|
-
- Agent files: `playwright-test-*`, `xcuitest-test-*`, `integration-test-*`, `accessibility-reviewer`
|
|
85
|
+
- Agent files: `playwright-test-*`, `xcuitest-test-*`, `instrumentation-test-*`, `integration-test-*`, `accessibility-reviewer`
|
|
73
86
|
|
|
74
87
|
Required instead: package-manager–discovered typecheck/test (`mcp-ts-tooling`, `post-change-test`); Phase 1 gates `build-verifier` + `security-reviewer`.
|
|
75
88
|
|
|
@@ -80,4 +93,4 @@ Required instead: package-manager–discovered typecheck/test (`mcp-ts-tooling`,
|
|
|
80
93
|
|
|
81
94
|
## Chain fork
|
|
82
95
|
|
|
83
|
-
`hooks/chain-team-phases.sh` must differ **byte-wise** pairwise among `next`, `nuxt`, `svelte`, `ios-swift`, `go`, `java`, `mcp-ts`, `php-hexagonal`, and `php-laravel` (per platform).
|
|
96
|
+
`hooks/chain-team-phases.sh` must differ **byte-wise** pairwise among `next`, `nuxt`, `svelte`, `ios-swift`, `android-kotlin`, `go`, `java`, `mcp-ts`, `php-hexagonal`, and `php-laravel` (per platform).
|
|
@@ -17,7 +17,7 @@ Checklist for PRs that touch `packages/ai-rules/presets/**` (and dogfood `.curso
|
|
|
17
17
|
|
|
18
18
|
- [ ] **SoT:** edits in `packages/…` (not only root `.cursor/`)
|
|
19
19
|
- [ ] **Core:** if `_shared/core/**` changed — all `<!-- shared-core: … -->` consumers updated (or documented intentional fork)
|
|
20
|
-
- [ ] **Twin:** Cursor change → Claude twin **same PR** (**FAIL** if missing on next, nuxt, svelte, ios-swift, go, java, mcp-ts, php-hexagonal, and php-laravel — see `preset-twin-sync`)
|
|
20
|
+
- [ ] **Twin:** Cursor change → Claude twin **same PR** (**FAIL** if missing on next, nuxt, svelte, ios-swift, android-kotlin, go, java, mcp-ts, php-hexagonal, and php-laravel — see `preset-twin-sync`)
|
|
21
21
|
- [ ] **Mapping:** `claude/<stack>/rules/README.md` mapping table is current
|
|
22
22
|
- [ ] **Token budget:** alwaysApply / session-start ≤ 3; meta rules not always-on
|
|
23
23
|
- [ ] **Leakage:** no foreign stack agent stems / handoff strings (`preset-no-cross-stack-leakage`)
|
|
@@ -26,6 +26,7 @@ Cursor `.mdc` — **SoT per stack**. Claude topic `.md` — derived twin.
|
|
|
26
26
|
| `mcp-ts` | `presets/cursor/mcp-ts/rules/*.mdc` | `presets/claude/mcp-ts/rules/<topic>/` | Keep in `claude/mcp-ts/rules/README.md` |
|
|
27
27
|
| `php-hexagonal` | `presets/cursor/php-hexagonal/rules/*.mdc` | `presets/claude/php-hexagonal/rules/<topic>/` | Keep in `claude/php-hexagonal/rules/README.md` |
|
|
28
28
|
| `php-laravel` | `presets/cursor/php-laravel/rules/*.mdc` | `presets/claude/php-laravel/rules/<topic>/` | Keep in `claude/php-laravel/rules/README.md` |
|
|
29
|
+
| `android-kotlin` | `presets/cursor/android-kotlin/rules/*.mdc` | `presets/claude/android-kotlin/rules/<topic>/` | Keep in `claude/android-kotlin/rules/README.md` |
|
|
29
30
|
|
|
30
31
|
## Same-PR checklist
|
|
31
32
|
|
|
@@ -50,5 +51,6 @@ Cursor `.mdc` — **SoT per stack**. Claude topic `.md` — derived twin.
|
|
|
50
51
|
- **mcp-ts:** missing Claude twin for a changed Cursor rule → **FAIL** (same as next / ios-swift / go / java; mapping table required).
|
|
51
52
|
- **php-hexagonal:** missing Claude twin for a changed Cursor rule → **FAIL** (same as next / ios-swift / go / java / mcp-ts; mapping table required).
|
|
52
53
|
- **php-laravel:** missing Claude twin for a changed Cursor rule → **FAIL** (same as next / ios-swift / go / java / mcp-ts / php-hexagonal; mapping table required).
|
|
54
|
+
- **android-kotlin:** missing Claude twin for a changed Cursor rule → **FAIL** (same as next / ios-swift / go / java / mcp-ts / php-*; mapping table required).
|
|
53
55
|
|
|
54
56
|
Dogfood: sync packages → root `.cursor/` after Cursor SoT changes (not the reverse). Use `packages/ai-rules/scripts/sync-dogfood-cursor.sh`.
|
|
@@ -24,7 +24,7 @@ Rules for **preset authors** (`packages/ai-rules/presets/**`). Not always-on in
|
|
|
24
24
|
## Where to put a new rule
|
|
25
25
|
|
|
26
26
|
1. Shared principles for all stacks → **core** + adapters with `<!-- shared-core: … -->`.
|
|
27
|
-
2. Only one of the installable stacks (`next` / `nuxt` / `svelte` / `ios-swift` / `go` / `java` / `mcp-ts` / `php-hexagonal` / `php-laravel`) → **stack-specific** (not in `_shared`).
|
|
27
|
+
2. Only one of the installable stacks (`next` / `nuxt` / `svelte` / `ios-swift` / `android-kotlin` / `go` / `java` / `mcp-ts` / `php-hexagonal` / `php-laravel`) → **stack-specific** (not in `_shared`).
|
|
28
28
|
3. Only Cursor or only Claude packaging → platform artifact / frontmatter; do not duplicate semantics.
|
|
29
29
|
|
|
30
30
|
## SoT
|
|
@@ -15,11 +15,12 @@ Ban leakage of stack-specific names, paths, and handoff stems across presets.
|
|
|
15
15
|
|
|
16
16
|
## Principles
|
|
17
17
|
|
|
18
|
-
- `next` must not require iOS-only agents/tooling (`xcuitest-*`, `xcodebuild` as required handoff, Keychain-only rules).
|
|
19
|
-
- `nuxt` must not require iOS-only agents/tooling (`xcuitest-*`, `xcodebuild` as required handoff, Keychain-only rules).
|
|
20
|
-
- `svelte` must not require iOS-only agents/tooling (`xcuitest-*`, `xcodebuild` as required handoff, Keychain-only rules).
|
|
21
|
-
- `ios-swift` must not ship Playwright handoffs or Next lint recipes as required commands.
|
|
22
|
-
- `
|
|
18
|
+
- `next` must not require iOS-only or Android-only agents/tooling (`xcuitest-*`, `instrumentation-test-*`, `xcodebuild` as required handoff, Keychain-only rules).
|
|
19
|
+
- `nuxt` must not require iOS-only or Android-only agents/tooling (`xcuitest-*`, `instrumentation-test-*`, `xcodebuild` as required handoff, Keychain-only rules).
|
|
20
|
+
- `svelte` must not require iOS-only or Android-only agents/tooling (`xcuitest-*`, `instrumentation-test-*`, `xcodebuild` as required handoff, Keychain-only rules).
|
|
21
|
+
- `ios-swift` must not ship Playwright handoffs, Android `instrumentation-test-*` handoffs, or Next lint recipes as required commands.
|
|
22
|
+
- `android-kotlin` must not ship Playwright, XCUITest, `xcodebuild`, or Next lint recipes as required handoffs.
|
|
23
|
+
- `go` / `java` / `php-hexagonal` / `php-laravel` / `mcp-ts` must not ship Playwright, XCUITest, Android instrumentation agents, Next lint recipes, or `xcodebuild`/`SwiftLint` as required handoffs.
|
|
23
24
|
- `mcp-ts` must not ship Go tool commands (`go test`, `go vet`, `golangci-lint`) or `integration-test-*` agents as required delivery gates.
|
|
24
25
|
- Shared core must not embed stack paths (`app/src/**`, `Features/**`, `playwright`, `xcodebuild`).
|
|
25
26
|
|
|
@@ -28,25 +29,37 @@ Ban leakage of stack-specific names, paths, and handoff stems across presets.
|
|
|
28
29
|
In ios-swift `chain-team-phases.sh` / agent handoffs (Cursor + Claude):
|
|
29
30
|
|
|
30
31
|
- `playwright-test-`, `playwright-agents`, `playwright-e2e`, `user-playwright`
|
|
32
|
+
- `instrumentation-test-` as required Android handoffs
|
|
31
33
|
- `app/__tests__/e2e` as a required path
|
|
32
34
|
- Positive yarn recipes `lint:js` / `lint:css` as commands to run (negation prose alone is weak — prefer zero occurrences)
|
|
33
35
|
|
|
34
36
|
Required instead: `xcuitest-test-*` stems; build-verifier mentions `xcodebuild` or `post-change-build` / `xcode-tooling`.
|
|
35
37
|
|
|
38
|
+
## Forbidden in android-kotlin hooks/agents (FAIL)
|
|
39
|
+
|
|
40
|
+
In android-kotlin `chain-team-phases.sh` / agent handoffs (Cursor + Claude):
|
|
41
|
+
|
|
42
|
+
- `playwright-test-`, `playwright-agents`, `playwright-e2e`, `user-playwright`
|
|
43
|
+
- `app/__tests__/e2e` as a required path
|
|
44
|
+
- `xcuitest-test-`, positive `xcodebuild` / `SwiftLint` as required handoffs
|
|
45
|
+
- Positive yarn recipes `lint:js` / `lint:css` as commands to run
|
|
46
|
+
|
|
47
|
+
Required instead: `instrumentation-test-*` stems; build-verifier mentions `gradle-tooling` and/or `post-change-build` (Gradle wrapper discovery — not `xcodebuild` as the default gate).
|
|
48
|
+
|
|
36
49
|
## Forbidden in next hooks/agents (FAIL when present as required)
|
|
37
50
|
|
|
38
|
-
- `xcuitest-test-` as handoff stems
|
|
51
|
+
- `xcuitest-test-` / `instrumentation-test-` as handoff stems
|
|
39
52
|
- Requiring `xcodebuild` / SwiftLint as the default post-change gate for Next app work
|
|
40
53
|
|
|
41
54
|
## Forbidden in nuxt hooks/agents (FAIL when present as required)
|
|
42
55
|
|
|
43
|
-
- `xcuitest-test-` as handoff stems
|
|
56
|
+
- `xcuitest-test-` / `instrumentation-test-` as handoff stems
|
|
44
57
|
- Requiring `xcodebuild` / SwiftLint as the default post-change gate for Nuxt app work
|
|
45
58
|
- Frontend profile mirrors `next`: Playwright / `lint:js` / `lint:css` allowed
|
|
46
59
|
|
|
47
60
|
## Forbidden in svelte hooks/agents (FAIL when present as required)
|
|
48
61
|
|
|
49
|
-
- `xcuitest-test-` as handoff stems
|
|
62
|
+
- `xcuitest-test-` / `instrumentation-test-` as handoff stems
|
|
50
63
|
- Requiring `xcodebuild` / SwiftLint as the default post-change gate for SvelteKit app work
|
|
51
64
|
- Frontend profile mirrors `next` / `nuxt`: Playwright / `lint:js` / `lint:css` allowed
|
|
52
65
|
|
|
@@ -56,7 +69,7 @@ Shared backend-stack bans (`go`, `java`, `php-hexagonal`, and `php-laravel`):
|
|
|
56
69
|
|
|
57
70
|
- `playwright-test-`, `playwright-e2e`, `user-playwright`, `app/__tests__/e2e`
|
|
58
71
|
- Positive yarn recipes `lint:js` / `lint:css`
|
|
59
|
-
- `xcuitest-test-`, `xcodebuild`, `SwiftLint` as required handoffs
|
|
72
|
+
- `xcuitest-test-`, `instrumentation-test-`, `xcodebuild`, `SwiftLint` as required handoffs
|
|
60
73
|
- Agent file `accessibility-reviewer` (no UI surface)
|
|
61
74
|
|
|
62
75
|
Required instead: `integration-test-*`; build-verifier / `post-change-test` plus stack tooling — `go-tooling` (`go test`, `go vet`), `java-tooling` (`mvn test` / `./gradlew test`), or `php-tooling` (`php artisan test` / `composer test` / `vendor/bin/phpunit`).
|
|
@@ -67,9 +80,9 @@ Same UI/mobile bans as backend stacks, plus:
|
|
|
67
80
|
|
|
68
81
|
- `playwright-test-`, `playwright-agents`, `playwright-e2e`, `user-playwright`, `app/__tests__/e2e`
|
|
69
82
|
- Positive yarn recipes `lint:js` / `lint:css` as required gates
|
|
70
|
-
- `xcuitest-test-`, `xcodebuild`, `SwiftLint` as required handoffs
|
|
83
|
+
- `xcuitest-test-`, `instrumentation-test-`, `xcodebuild`, `SwiftLint` as required handoffs
|
|
71
84
|
- Go tool commands as required MCP delivery gates: `go test`, `go vet`, `golangci-lint`
|
|
72
|
-
- Agent files: `playwright-test-*`, `xcuitest-test-*`, `integration-test-*`, `accessibility-reviewer`
|
|
85
|
+
- Agent files: `playwright-test-*`, `xcuitest-test-*`, `instrumentation-test-*`, `integration-test-*`, `accessibility-reviewer`
|
|
73
86
|
|
|
74
87
|
Required instead: package-manager–discovered typecheck/test (`mcp-ts-tooling`, `post-change-test`); Phase 1 gates `build-verifier` + `security-reviewer`.
|
|
75
88
|
|
|
@@ -80,4 +93,4 @@ Required instead: package-manager–discovered typecheck/test (`mcp-ts-tooling`,
|
|
|
80
93
|
|
|
81
94
|
## Chain fork
|
|
82
95
|
|
|
83
|
-
`hooks/chain-team-phases.sh` must differ **byte-wise** pairwise among `next`, `nuxt`, `svelte`, `ios-swift`, `go`, `java`, `mcp-ts`, `php-hexagonal`, and `php-laravel` (per platform).
|
|
96
|
+
`hooks/chain-team-phases.sh` must differ **byte-wise** pairwise among `next`, `nuxt`, `svelte`, `ios-swift`, `android-kotlin`, `go`, `java`, `mcp-ts`, `php-hexagonal`, and `php-laravel` (per platform).
|
|
@@ -17,7 +17,7 @@ Checklist for PRs that touch `packages/ai-rules/presets/**` (and dogfood `.curso
|
|
|
17
17
|
|
|
18
18
|
- [ ] **SoT:** edits in `packages/…` (not only root `.cursor/`)
|
|
19
19
|
- [ ] **Core:** if `_shared/core/**` changed — all `<!-- shared-core: … -->` consumers updated (or documented intentional fork)
|
|
20
|
-
- [ ] **Twin:** Cursor change → Claude twin **same PR** (**FAIL** if missing on next, nuxt, svelte, ios-swift, go, java, mcp-ts, php-hexagonal, and php-laravel — see `preset-twin-sync`)
|
|
20
|
+
- [ ] **Twin:** Cursor change → Claude twin **same PR** (**FAIL** if missing on next, nuxt, svelte, ios-swift, android-kotlin, go, java, mcp-ts, php-hexagonal, and php-laravel — see `preset-twin-sync`)
|
|
21
21
|
- [ ] **Mapping:** `claude/<stack>/rules/README.md` mapping table is current
|
|
22
22
|
- [ ] **Token budget:** alwaysApply / session-start ≤ 3; meta rules not always-on
|
|
23
23
|
- [ ] **Leakage:** no foreign stack agent stems / handoff strings (`preset-no-cross-stack-leakage`)
|
|
@@ -26,6 +26,7 @@ Cursor `.mdc` — **SoT per stack**. Claude topic `.md` — derived twin.
|
|
|
26
26
|
| `mcp-ts` | `presets/cursor/mcp-ts/rules/*.mdc` | `presets/claude/mcp-ts/rules/<topic>/` | Keep in `claude/mcp-ts/rules/README.md` |
|
|
27
27
|
| `php-hexagonal` | `presets/cursor/php-hexagonal/rules/*.mdc` | `presets/claude/php-hexagonal/rules/<topic>/` | Keep in `claude/php-hexagonal/rules/README.md` |
|
|
28
28
|
| `php-laravel` | `presets/cursor/php-laravel/rules/*.mdc` | `presets/claude/php-laravel/rules/<topic>/` | Keep in `claude/php-laravel/rules/README.md` |
|
|
29
|
+
| `android-kotlin` | `presets/cursor/android-kotlin/rules/*.mdc` | `presets/claude/android-kotlin/rules/<topic>/` | Keep in `claude/android-kotlin/rules/README.md` |
|
|
29
30
|
|
|
30
31
|
## Same-PR checklist
|
|
31
32
|
|
|
@@ -50,5 +51,6 @@ Cursor `.mdc` — **SoT per stack**. Claude topic `.md` — derived twin.
|
|
|
50
51
|
- **mcp-ts:** missing Claude twin for a changed Cursor rule → **FAIL** (same as next / ios-swift / go / java; mapping table required).
|
|
51
52
|
- **php-hexagonal:** missing Claude twin for a changed Cursor rule → **FAIL** (same as next / ios-swift / go / java / mcp-ts; mapping table required).
|
|
52
53
|
- **php-laravel:** missing Claude twin for a changed Cursor rule → **FAIL** (same as next / ios-swift / go / java / mcp-ts / php-hexagonal; mapping table required).
|
|
54
|
+
- **android-kotlin:** missing Claude twin for a changed Cursor rule → **FAIL** (same as next / ios-swift / go / java / mcp-ts / php-*; mapping table required).
|
|
53
55
|
|
|
54
56
|
Dogfood: sync packages → root `.cursor/` after Cursor SoT changes (not the reverse). Use `packages/ai-rules/scripts/sync-dogfood-cursor.sh`.
|
|
@@ -24,7 +24,7 @@ Rules for **preset authors** (`packages/ai-rules/presets/**`). Not always-on in
|
|
|
24
24
|
## Where to put a new rule
|
|
25
25
|
|
|
26
26
|
1. Shared principles for all stacks → **core** + adapters with `<!-- shared-core: … -->`.
|
|
27
|
-
2. Only one of the installable stacks (`next` / `nuxt` / `svelte` / `ios-swift` / `go` / `java` / `mcp-ts` / `php-hexagonal` / `php-laravel`) → **stack-specific** (not in `_shared`).
|
|
27
|
+
2. Only one of the installable stacks (`next` / `nuxt` / `svelte` / `ios-swift` / `android-kotlin` / `go` / `java` / `mcp-ts` / `php-hexagonal` / `php-laravel`) → **stack-specific** (not in `_shared`).
|
|
28
28
|
3. Only Cursor or only Claude packaging → platform artifact / frontmatter; do not duplicate semantics.
|
|
29
29
|
|
|
30
30
|
## SoT
|