@bonesofspring/ai-rules 0.2.1 → 0.2.3
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 +41 -0
- package/README.md +17 -5
- package/bin/cli.js +4 -4
- package/package.json +3 -11
- package/presets/claude/ios-swift/CLAUDE.md +35 -0
- package/presets/claude/ios-swift/README.md +30 -0
- package/presets/claude/ios-swift/agents/README.md +55 -0
- package/presets/claude/ios-swift/agents/accessibility-reviewer.md +67 -0
- package/presets/claude/ios-swift/agents/api-contract-reviewer.md +72 -0
- package/presets/claude/ios-swift/agents/build-verifier.md +64 -0
- package/presets/claude/ios-swift/agents/ci-investigator.md +73 -0
- package/presets/claude/ios-swift/agents/code-reviewer.md +75 -0
- package/presets/claude/ios-swift/agents/debugger.md +72 -0
- package/presets/claude/ios-swift/agents/feature-developer.md +35 -0
- package/presets/claude/ios-swift/agents/migration-specialist.md +73 -0
- package/presets/claude/ios-swift/agents/performance-auditor.md +72 -0
- package/presets/claude/ios-swift/agents/qa-tester.md +65 -0
- package/presets/claude/ios-swift/agents/security-reviewer.md +69 -0
- package/presets/claude/ios-swift/agents/solution-architect.md +17 -0
- package/presets/claude/ios-swift/agents/task-analyst.md +25 -0
- package/presets/claude/ios-swift/agents/task-router.md +62 -0
- package/presets/claude/ios-swift/agents/tech-writer.md +63 -0
- package/presets/claude/ios-swift/agents/unit-test-generator.md +54 -0
- package/presets/claude/ios-swift/agents/unit-test-healer.md +53 -0
- package/presets/claude/ios-swift/agents/unit-test-planner.md +64 -0
- package/presets/claude/ios-swift/agents/xcuitest-test-generator.md +47 -0
- package/presets/claude/ios-swift/agents/xcuitest-test-healer.md +47 -0
- package/presets/claude/ios-swift/agents/xcuitest-test-planner.md +67 -0
- package/presets/claude/ios-swift/commands/README.md +13 -0
- package/presets/claude/ios-swift/commands/feature-continue.md +51 -0
- package/presets/claude/ios-swift/commands/feature-start.md +30 -0
- package/presets/claude/ios-swift/commands/task-continue.md +49 -0
- package/presets/claude/ios-swift/commands/task.md +50 -0
- package/presets/claude/ios-swift/commands/technical-retro.md +58 -0
- package/presets/claude/ios-swift/hooks/README.md +10 -0
- package/presets/claude/ios-swift/hooks/chain-team-phases.sh +382 -0
- package/presets/claude/ios-swift/hooks/guard-shell-command.sh +79 -0
- package/presets/claude/ios-swift/rules/README.md +55 -0
- package/presets/claude/ios-swift/rules/api-and-data/README.md +10 -0
- package/presets/claude/ios-swift/rules/api-and-data/networking.md +49 -0
- package/presets/claude/ios-swift/rules/api-and-data/persistence.md +30 -0
- package/presets/claude/ios-swift/rules/architecture/README.md +12 -0
- package/presets/claude/ios-swift/rules/architecture/boundaries.md +33 -0
- package/presets/claude/ios-swift/rules/architecture/feature-delivery.md +68 -0
- package/presets/claude/ios-swift/rules/architecture/module-public-api.md +25 -0
- package/presets/claude/ios-swift/rules/architecture/reference-features.md +50 -0
- package/presets/claude/ios-swift/rules/stack/README.md +10 -0
- package/presets/claude/ios-swift/rules/stack/ios-app-core.md +43 -0
- package/presets/claude/ios-swift/rules/stack/swift-conventions.md +51 -0
- package/presets/claude/ios-swift/rules/testing/README.md +10 -0
- package/presets/claude/ios-swift/rules/testing/ui.md +43 -0
- package/presets/claude/ios-swift/rules/testing/unit.md +41 -0
- package/presets/claude/ios-swift/rules/tooling-and-review/README.md +16 -0
- package/presets/claude/ios-swift/rules/tooling-and-review/agent-team-intake.md +18 -0
- package/presets/claude/ios-swift/rules/tooling-and-review/agent-team-orchestrator.md +47 -0
- package/presets/claude/ios-swift/rules/tooling-and-review/code-quality.md +38 -0
- package/presets/claude/ios-swift/rules/tooling-and-review/code-review.md +46 -0
- package/presets/claude/ios-swift/rules/tooling-and-review/post-change-build.md +36 -0
- package/presets/claude/ios-swift/rules/tooling-and-review/security-ios.md +36 -0
- package/presets/claude/ios-swift/rules/tooling-and-review/technical-retro.md +14 -0
- package/presets/claude/ios-swift/rules/tooling-and-review/xcode-tooling.md +24 -0
- package/presets/claude/ios-swift/rules/ui-and-accessibility/README.md +11 -0
- package/presets/claude/ios-swift/rules/ui-and-accessibility/navigation.md +28 -0
- package/presets/claude/ios-swift/rules/ui-and-accessibility/swiftui.md +61 -0
- package/presets/claude/ios-swift/rules/ui-and-accessibility/viewmodels.md +43 -0
- package/presets/claude/ios-swift/skills/README.md +13 -0
- package/presets/claude/ios-swift/skills/ci-investigation/SKILL.md +39 -0
- package/presets/claude/ios-swift/skills/code-review/SKILL.md +27 -0
- package/presets/claude/ios-swift/skills/debug-investigation/SKILL.md +30 -0
- package/presets/claude/ios-swift/skills/feature-delivery/SKILL.md +27 -0
- package/presets/claude/ios-swift/skills/technical-retro/SKILL.md +10 -0
- package/presets/claude/ios-swift/skills/unit-testing/SKILL.md +32 -0
- package/presets/claude/ios-swift/skills/xcuitest-e2e/SKILL.md +33 -0
- package/presets/claude/ios-swift/team/README.md +27 -0
- package/presets/claude/ios-swift/team/fixtures/bugfix-standard.json +33 -0
- package/presets/claude/ios-swift/team/fixtures/feature-full.json +48 -0
- package/presets/claude/ios-swift/team/fixtures/feature-light.json +36 -0
- package/presets/claude/next/CLAUDE.md +4 -8
- package/presets/claude/next/agents/README.md +62 -34
- package/presets/claude/next/agents/code-reviewer.md +6 -5
- package/presets/claude/next/agents/playwright-test-generator.md +65 -16
- package/presets/claude/next/agents/playwright-test-healer.md +51 -16
- package/presets/claude/next/agents/playwright-test-planner.md +55 -15
- package/presets/claude/next/agents/task-analyst.md +3 -1
- package/presets/claude/next/agents/task-router.md +4 -4
- package/presets/claude/next/agents/tech-writer.md +1 -0
- package/presets/claude/next/hooks/chain-team-phases.sh +73 -35
- package/presets/claude/next/rules/README.md +16 -3
- package/presets/claude/next/rules/architecture/README.md +2 -1
- package/presets/claude/next/rules/stack/README.md +1 -1
- package/presets/claude/next/rules/stack/navigation-router.md +2 -0
- package/presets/claude/next/rules/stack/next-app-core.md +1 -1
- package/presets/claude/next/rules/tooling-and-review/README.md +12 -14
- package/presets/claude/next/rules/tooling-and-review/agent-team-orchestrator.md +1 -0
- package/presets/claude/next/rules/tooling-and-review/code-review-mr.md +3 -3
- package/presets/claude/next/rules/tooling-and-review/post-change-lint.md +11 -0
- package/presets/claude/next/rules/ui-and-accessibility/README.md +6 -3
- package/presets/claude/next/skills/feature-delivery/SKILL.md +1 -1
- package/presets/claude/next/team/README.md +65 -7
- package/presets/cursor/ios-swift/AGENTS.md +47 -0
- package/presets/cursor/ios-swift/BUGBOT.md +15 -0
- package/presets/cursor/ios-swift/README.md +36 -0
- package/presets/cursor/ios-swift/agents/README.md +55 -0
- package/presets/cursor/ios-swift/agents/accessibility-reviewer.md +67 -0
- package/presets/cursor/ios-swift/agents/api-contract-reviewer.md +72 -0
- package/presets/cursor/ios-swift/agents/build-verifier.md +64 -0
- package/presets/cursor/ios-swift/agents/ci-investigator.md +73 -0
- package/presets/cursor/ios-swift/agents/code-reviewer.md +75 -0
- package/presets/cursor/ios-swift/agents/debugger.md +72 -0
- package/presets/cursor/ios-swift/agents/feature-developer.md +35 -0
- package/presets/cursor/ios-swift/agents/migration-specialist.md +73 -0
- package/presets/cursor/ios-swift/agents/performance-auditor.md +72 -0
- package/presets/cursor/ios-swift/agents/qa-tester.md +65 -0
- package/presets/cursor/ios-swift/agents/security-reviewer.md +69 -0
- package/presets/cursor/ios-swift/agents/solution-architect.md +17 -0
- package/presets/cursor/ios-swift/agents/task-analyst.md +25 -0
- package/presets/cursor/ios-swift/agents/task-router.md +62 -0
- package/presets/cursor/ios-swift/agents/tech-writer.md +63 -0
- package/presets/cursor/ios-swift/agents/unit-test-generator.md +54 -0
- package/presets/cursor/ios-swift/agents/unit-test-healer.md +53 -0
- package/presets/cursor/ios-swift/agents/unit-test-planner.md +64 -0
- package/presets/cursor/ios-swift/agents/xcuitest-test-generator.md +47 -0
- package/presets/cursor/ios-swift/agents/xcuitest-test-healer.md +47 -0
- package/presets/cursor/ios-swift/agents/xcuitest-test-planner.md +67 -0
- package/presets/cursor/ios-swift/commands/README.md +51 -0
- package/presets/cursor/ios-swift/commands/feature-continue.md +19 -0
- package/presets/cursor/ios-swift/commands/feature-start.md +33 -0
- package/presets/cursor/ios-swift/commands/task-continue.md +49 -0
- package/presets/cursor/ios-swift/commands/task.md +50 -0
- package/presets/cursor/ios-swift/commands/technical-retro.md +81 -0
- package/presets/cursor/ios-swift/hooks/README.md +8 -0
- package/presets/cursor/ios-swift/hooks/chain-team-phases.sh +382 -0
- package/presets/cursor/ios-swift/hooks/guard-shell-command.sh +79 -0
- package/presets/{claude/next → cursor/ios-swift}/hooks.json +2 -2
- package/presets/cursor/ios-swift/rules/README.md +65 -0
- package/presets/cursor/ios-swift/rules/agent-team-intake.mdc +16 -0
- package/presets/cursor/ios-swift/rules/agent-team-orchestrator.mdc +80 -0
- package/presets/cursor/ios-swift/rules/architecture-boundaries.mdc +34 -0
- package/presets/cursor/ios-swift/rules/code-quality-and-refactoring.mdc +39 -0
- package/presets/cursor/ios-swift/rules/code-review-mr.mdc +43 -0
- package/presets/cursor/ios-swift/rules/feature-delivery-workflow.mdc +61 -0
- package/presets/cursor/ios-swift/rules/ios-app-core.mdc +44 -0
- package/presets/cursor/ios-swift/rules/module-public-api.mdc +26 -0
- package/presets/cursor/ios-swift/rules/navigation-coordinators.mdc +29 -0
- package/presets/cursor/ios-swift/rules/networking-services.mdc +49 -0
- package/presets/cursor/ios-swift/rules/persistence-data.mdc +31 -0
- package/presets/cursor/ios-swift/rules/post-change-build.mdc +32 -0
- package/presets/cursor/ios-swift/rules/reference-features.mdc +53 -0
- package/presets/cursor/ios-swift/rules/security-ios.mdc +35 -0
- package/presets/cursor/ios-swift/rules/state-and-viewmodels.mdc +43 -0
- package/presets/cursor/ios-swift/rules/swift-conventions.mdc +51 -0
- package/presets/cursor/ios-swift/rules/swiftui-ui.mdc +61 -0
- package/presets/cursor/ios-swift/rules/technical-retro.mdc +12 -0
- package/presets/cursor/ios-swift/rules/tests-ui.mdc +42 -0
- package/presets/cursor/ios-swift/rules/tests-unit.mdc +41 -0
- package/presets/cursor/ios-swift/rules/xcode-tooling.mdc +20 -0
- package/presets/cursor/ios-swift/skills/README.md +13 -0
- package/presets/cursor/ios-swift/skills/ci-investigation/SKILL.md +39 -0
- package/presets/cursor/ios-swift/skills/code-review/SKILL.md +27 -0
- package/presets/cursor/ios-swift/skills/debug-investigation/SKILL.md +30 -0
- package/presets/cursor/ios-swift/skills/feature-delivery/SKILL.md +27 -0
- package/presets/cursor/ios-swift/skills/technical-retro/SKILL.md +10 -0
- package/presets/cursor/ios-swift/skills/unit-testing/SKILL.md +32 -0
- package/presets/cursor/ios-swift/skills/xcuitest-e2e/SKILL.md +33 -0
- package/presets/cursor/ios-swift/team/README.md +27 -0
- package/presets/cursor/ios-swift/team/fixtures/bugfix-standard.json +33 -0
- package/presets/cursor/ios-swift/team/fixtures/feature-full.json +48 -0
- package/presets/cursor/ios-swift/team/fixtures/feature-light.json +36 -0
- package/presets/cursor/next/AGENTS.md +1 -1
- package/presets/cursor/next/BUGBOT.md +0 -2
- package/presets/cursor/next/agents/README.md +6 -0
- package/presets/cursor/next/agents/accessibility-reviewer.md +1 -1
- package/presets/cursor/next/agents/api-contract-reviewer.md +1 -1
- package/presets/cursor/next/agents/build-verifier.md +2 -2
- package/presets/cursor/next/agents/code-reviewer.md +1 -1
- package/presets/cursor/next/agents/feature-developer.md +1 -0
- package/presets/cursor/next/agents/migration-specialist.md +2 -2
- package/presets/cursor/next/agents/performance-auditor.md +1 -1
- package/presets/cursor/next/agents/playwright-test-generator.md +1 -0
- package/presets/cursor/next/agents/playwright-test-healer.md +1 -0
- package/presets/cursor/next/agents/qa-tester.md +1 -0
- package/presets/cursor/next/agents/security-reviewer.md +1 -1
- package/presets/cursor/next/agents/solution-architect.md +1 -1
- package/presets/cursor/next/agents/task-analyst.md +1 -1
- package/presets/cursor/next/agents/task-router.md +2 -2
- package/presets/cursor/next/agents/tech-writer.md +1 -1
- package/presets/cursor/next/agents/unit-test-planner.md +2 -2
- package/presets/cursor/next/rules/README.md +6 -6
- package/presets/cursor/next/rules/agent-team-orchestrator.mdc +25 -23
- package/presets/cursor/next/rules/next-app-core.mdc +1 -1
- package/presets/cursor/next/rules/post-change-lint.mdc +4 -2
- package/presets/cursor/next/skills/feature-delivery/SKILL.md +1 -1
- package/CONTRIBUTING.md +0 -102
- package/fragments/BUGBOT.md +0 -23
- package/presets/claude/next/BUGBOT.md +0 -16
- package/presets/claude/next/rules/architecture/api-public-imports.md +0 -8
- package/presets/claude/next/rules/architecture/types-public-imports.md +0 -8
- package/presets/cursor/next/rules/api-public-imports.mdc +0 -8
- package/presets/cursor/next/rules/no-cross-component-styles-import.mdc +0 -8
- package/presets/cursor/next/rules/types-public-imports.mdc +0 -8
- package/scripts/README.md +0 -84
- package/scripts/golden-prompts.json +0 -276
- package/scripts/preset-manifest.json +0 -72
- package/scripts/regression-results/.gitkeep +0 -0
- package/scripts/validate-preset.sh +0 -484
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
#!/usr/bin/env bash
|
|
2
|
-
# Chains agent team
|
|
2
|
+
# Chains agent team steps from pipeline.json after subagentStop.
|
|
3
|
+
# Falls back to legacy phase-based flow when pipeline.json is absent.
|
|
3
4
|
|
|
4
5
|
set -euo pipefail
|
|
5
6
|
|
|
@@ -89,7 +90,7 @@ function getStepAgents(step) {
|
|
|
89
90
|
return Array.isArray(step.agent) ? step.agent : [step.agent];
|
|
90
91
|
}
|
|
91
92
|
|
|
92
|
-
function skipIfMatches(skipIf) {
|
|
93
|
+
function skipIfMatches(skipIf, dir) {
|
|
93
94
|
if (!skipIf) return false;
|
|
94
95
|
if (skipIf === 'debugger.fixed') {
|
|
95
96
|
const text = readArtifact('debug-report.md');
|
|
@@ -102,9 +103,9 @@ function skipIfMatches(skipIf) {
|
|
|
102
103
|
return false;
|
|
103
104
|
}
|
|
104
105
|
|
|
105
|
-
function findNextExecutableStep(steps, startIdx) {
|
|
106
|
+
function findNextExecutableStep(steps, startIdx, dir) {
|
|
106
107
|
for (let i = startIdx; i < steps.length; i++) {
|
|
107
|
-
if (!skipIfMatches(steps[i].skipIf)) {
|
|
108
|
+
if (!skipIfMatches(steps[i].skipIf, dir)) {
|
|
108
109
|
return { step: steps[i], index: i };
|
|
109
110
|
}
|
|
110
111
|
}
|
|
@@ -114,47 +115,54 @@ function findNextExecutableStep(steps, startIdx) {
|
|
|
114
115
|
const AGENT_HANDOFF = {
|
|
115
116
|
'task-analyst': (s) =>
|
|
116
117
|
`Invoke task-analyst for slug "${s}". Write brief.md and decomposition.md under .claude/team/tasks/${s}/. ` +
|
|
117
|
-
`Set status.json: phase executing, state awaiting_approval if human gate applies.`,
|
|
118
|
+
`Set status.json: phase executing, state awaiting_approval if human gate applies. Do not use legacy phase analysis.`,
|
|
118
119
|
debugger: (s) =>
|
|
119
|
-
`Invoke debugger subagent for slug "${s}".
|
|
120
|
+
`Invoke debugger subagent for slug "${s}". Investigate root cause; write debug-report.md with fixApplied: true/false. ` +
|
|
121
|
+
`Update status.json when done.`,
|
|
120
122
|
'solution-architect': (s) =>
|
|
121
123
|
`Invoke solution-architect for slug "${s}". Read brief.md; write architecture.md. Update status.json when done.`,
|
|
122
124
|
'migration-specialist': (s) =>
|
|
123
125
|
`Invoke migration-specialist for slug "${s}". Read brief.md; write migration-plan.md. Update status.json when done.`,
|
|
124
126
|
'api-contract-reviewer': (s) =>
|
|
125
|
-
`Invoke api-contract-reviewer for slug "${s}". Write api-contract-review.md. Update status.json when done.`,
|
|
127
|
+
`Invoke api-contract-reviewer (readonly) for slug "${s}". Write api-contract-review.md. Update status.json when done.`,
|
|
126
128
|
'ci-investigator': (s) =>
|
|
127
|
-
`Invoke ci-investigator for slug "${s}".
|
|
129
|
+
`Invoke ci-investigator for slug "${s}". Diagnose CI failure; write ci-report.md; apply minimal fix. ` +
|
|
130
|
+
`Use ci-investigation skill. Update status.json when done.`,
|
|
128
131
|
'feature-developer': (s) =>
|
|
129
|
-
`Invoke feature-developer for slug "${s}". Read brief.md, decomposition.md, validation-report.md, review.md if present. ` +
|
|
130
|
-
`Follow
|
|
132
|
+
`Invoke feature-developer for slug "${s}". Read brief.md, decomposition.md, validation-report.md, review.md, architecture.md, migration-plan.md, api-contract-review.md, debug-report.md if present. ` +
|
|
133
|
+
`Follow architecture/feature-delivery-workflow.md and architecture/reference-features.md. Include unit tests for mappers/logic before handoff. Update status.json when done.`,
|
|
131
134
|
'build-verifier': (s) =>
|
|
132
|
-
`Invoke build-verifier for slug "${s}". Run lint:js, lint:css, type-check, targeted unit tests from app/. ` +
|
|
135
|
+
`Invoke build-verifier (readonly) for slug "${s}". Run lint:js, lint:css, type-check, and targeted unit tests from app/. ` +
|
|
133
136
|
`Write validation-report.md. Set state completed or validation_failed. Do not edit production code.`,
|
|
134
137
|
'accessibility-reviewer': (s) =>
|
|
135
|
-
`Invoke accessibility-reviewer for slug "${s}".
|
|
138
|
+
`Invoke accessibility-reviewer (readonly) for slug "${s}". Review UI diff; write a11y-review.md. Update status.json when done.`,
|
|
136
139
|
'performance-auditor': (s) =>
|
|
137
|
-
`Invoke performance-auditor for slug "${s}". Write perf-report.md. Update status.json when done.`,
|
|
140
|
+
`Invoke performance-auditor (readonly) for slug "${s}". Write perf-report.md. Update status.json when done.`,
|
|
138
141
|
'code-reviewer': (s) =>
|
|
139
|
-
`Invoke code-reviewer for slug "${s}". Review git diff per
|
|
142
|
+
`Invoke code-reviewer subagent (readonly) for slug "${s}". Review git diff vs brief.md per tooling-and-review/code-review-mr.md. ` +
|
|
143
|
+
`Update status.json when done.`,
|
|
140
144
|
'security-reviewer': (s) =>
|
|
141
|
-
`Invoke security-reviewer for slug "${s}". Write security-review.md. Update status.json when done.`,
|
|
145
|
+
`Invoke security-reviewer (readonly) for slug "${s}". Write security-review.md. Update status.json when done.`,
|
|
142
146
|
'qa-tester': (s, scope) =>
|
|
143
|
-
`Invoke qa-tester for slug "${s}"${scope ? ` (scope: ${scope})` : ''}.
|
|
147
|
+
`Invoke qa-tester for slug "${s}"${scope ? ` (scope: ${scope})` : ''}. ` +
|
|
148
|
+
`Add/update tests per brief. Follow testing/playwright-agents.md. Update status.json when done.`,
|
|
144
149
|
'unit-test-planner': (s) =>
|
|
145
|
-
`Invoke unit-test-planner for slug "${s}". Use unit-testing skill. Update status.json when done.`,
|
|
150
|
+
`Invoke unit-test-planner for slug "${s}". Write unit-test-plan.md. Use unit-testing skill. Update status.json when done.`,
|
|
146
151
|
'unit-test-generator': (s) =>
|
|
147
|
-
`Invoke unit-test-generator for slug "${s}". Use unit-testing skill. Update status.json when done.`,
|
|
152
|
+
`Invoke unit-test-generator for slug "${s}". Implement specs from unit-test-plan.md. Use unit-testing skill. Update status.json when done.`,
|
|
148
153
|
'unit-test-healer': (s) =>
|
|
149
|
-
`Invoke unit-test-healer for slug "${s}". Use unit-testing and debug-investigation skills. Update status.json when done.`,
|
|
154
|
+
`Invoke unit-test-healer for slug "${s}". Fix failing unit tests. Use unit-testing and debug-investigation skills. Update status.json when done.`,
|
|
150
155
|
'playwright-test-planner': (s) =>
|
|
151
|
-
`Invoke playwright-test-planner for slug "${s}".
|
|
156
|
+
`Invoke playwright-test-planner for slug "${s}". Create/update app/__tests__/e2e/**/*.cases.md. ` +
|
|
157
|
+
`Follow testing/playwright-agents.md and the playwright-e2e skill. Update status.json when done.`,
|
|
152
158
|
'playwright-test-generator': (s) =>
|
|
153
|
-
`Invoke playwright-test-generator for slug "${s}".
|
|
159
|
+
`Invoke playwright-test-generator for slug "${s}". Generate/update *.spec.ts from matching *.cases.md. ` +
|
|
160
|
+
`Use user-playwright MCP when available. Follow testing/playwright-agents.md and the playwright-e2e skill. Update status.json when done.`,
|
|
154
161
|
'playwright-test-healer': (s) =>
|
|
155
|
-
`Invoke playwright-test-healer for slug "${s}".
|
|
162
|
+
`Invoke playwright-test-healer for slug "${s}". Fix failing/flaky e2e while preserving cases.md assertions. ` +
|
|
163
|
+
`Use user-playwright MCP when available. Follow testing/playwright-agents.md and debug-investigation. Update status.json when done.`,
|
|
156
164
|
'tech-writer': (s) =>
|
|
157
|
-
`Invoke tech-writer for slug "${s}". Write documentation.md. Update status.json when done.`,
|
|
165
|
+
`Invoke tech-writer for slug "${s}". Write documentation.md from task artifacts. Update status.json when done.`,
|
|
158
166
|
};
|
|
159
167
|
|
|
160
168
|
const REVIEW_AGENTS = new Set([
|
|
@@ -173,7 +181,7 @@ function handoffForParallelStep(step) {
|
|
|
173
181
|
const agents = getStepAgents(step);
|
|
174
182
|
return (
|
|
175
183
|
`Invoke IN PARALLEL (one message, multiple Task calls): ${agents.join(' AND ')} for slug "${slug}". ` +
|
|
176
|
-
`Each agent appends itself to status.json parallelCompleted when done.`
|
|
184
|
+
`Each agent writes its artifact and appends itself to status.json parallelCompleted when done.`
|
|
177
185
|
);
|
|
178
186
|
}
|
|
179
187
|
|
|
@@ -186,7 +194,11 @@ function hasGateAfterStep(step, humanGates) {
|
|
|
186
194
|
}
|
|
187
195
|
|
|
188
196
|
function legacyFlow() {
|
|
189
|
-
if (status.phase === '
|
|
197
|
+
if (status.phase === 'analysis') {
|
|
198
|
+
process.stdout.write('{}');
|
|
199
|
+
process.exit(0);
|
|
200
|
+
}
|
|
201
|
+
if (status.phase === 'development' && (status.state === 'completed' || status.state === 'in_progress')) {
|
|
190
202
|
writeStatus({ phase: 'executing', state: 'in_progress', currentAgent: 'build-verifier' });
|
|
191
203
|
out(handoffForAgent('build-verifier'));
|
|
192
204
|
process.exit(0);
|
|
@@ -208,16 +220,23 @@ function legacyFlow() {
|
|
|
208
220
|
phase: 'executing',
|
|
209
221
|
retryAfterFix: status.currentAgent,
|
|
210
222
|
});
|
|
211
|
-
out(
|
|
223
|
+
out(
|
|
224
|
+
handoffForAgent('feature-developer') +
|
|
225
|
+
` After fixes, re-run ${status.currentAgent}.`,
|
|
226
|
+
);
|
|
212
227
|
process.exit(0);
|
|
213
228
|
}
|
|
214
|
-
if (status.state === 'validation_failed') {
|
|
229
|
+
if (status.state === 'validation_failed' && status.currentAgent === 'build-verifier') {
|
|
215
230
|
writeStatus({
|
|
216
231
|
currentAgent: 'feature-developer',
|
|
217
232
|
state: 'in_progress',
|
|
233
|
+
phase: 'executing',
|
|
218
234
|
retryAfterFix: 'build-verifier',
|
|
219
235
|
});
|
|
220
|
-
out(
|
|
236
|
+
out(
|
|
237
|
+
handoffForAgent('feature-developer') +
|
|
238
|
+
` Read validation-report.md. After fixes, re-run build-verifier.`,
|
|
239
|
+
);
|
|
221
240
|
process.exit(0);
|
|
222
241
|
}
|
|
223
242
|
if (status.state === 'completed' && status.retryAfterFix) {
|
|
@@ -265,7 +284,10 @@ if (status.state === 'changes_requested' && REVIEW_AGENTS.has(status.currentAgen
|
|
|
265
284
|
phase: 'executing',
|
|
266
285
|
retryAfterFix: reviewer,
|
|
267
286
|
});
|
|
268
|
-
out(
|
|
287
|
+
out(
|
|
288
|
+
handoffForAgent('feature-developer') +
|
|
289
|
+
` After fixes, re-run ${reviewer}.`,
|
|
290
|
+
);
|
|
269
291
|
process.exit(0);
|
|
270
292
|
}
|
|
271
293
|
|
|
@@ -276,7 +298,10 @@ if (status.state === 'validation_failed' && status.currentAgent === 'build-verif
|
|
|
276
298
|
phase: 'executing',
|
|
277
299
|
retryAfterFix: 'build-verifier',
|
|
278
300
|
});
|
|
279
|
-
out(
|
|
301
|
+
out(
|
|
302
|
+
handoffForAgent('feature-developer') +
|
|
303
|
+
` Read validation-report.md. After fixes, re-run build-verifier.`,
|
|
304
|
+
);
|
|
280
305
|
process.exit(0);
|
|
281
306
|
}
|
|
282
307
|
|
|
@@ -300,9 +325,12 @@ const stepAgents = getStepAgents(currentStep);
|
|
|
300
325
|
|
|
301
326
|
if (currentStep.parallel && stepAgents.length > 1) {
|
|
302
327
|
const done = [...(status.parallelCompleted || [])];
|
|
303
|
-
if (completedAgent && !done.includes(completedAgent))
|
|
328
|
+
if (completedAgent && !done.includes(completedAgent)) {
|
|
329
|
+
done.push(completedAgent);
|
|
330
|
+
}
|
|
304
331
|
writeStatus({ parallelCompleted: done });
|
|
305
|
-
|
|
332
|
+
const remaining = stepAgents.filter((a) => !done.includes(a));
|
|
333
|
+
if (remaining.length > 0) {
|
|
306
334
|
process.stdout.write('{}');
|
|
307
335
|
process.exit(0);
|
|
308
336
|
}
|
|
@@ -310,14 +338,24 @@ if (currentStep.parallel && stepAgents.length > 1) {
|
|
|
310
338
|
}
|
|
311
339
|
|
|
312
340
|
if (hasGateAfterStep(currentStep, pipeline.humanGates)) {
|
|
313
|
-
writeStatus({
|
|
341
|
+
writeStatus({
|
|
342
|
+
awaitingHumanGate: true,
|
|
343
|
+
state: 'awaiting_approval',
|
|
344
|
+
currentAgent: completedAgent,
|
|
345
|
+
});
|
|
314
346
|
process.stdout.write('{}');
|
|
315
347
|
process.exit(0);
|
|
316
348
|
}
|
|
317
349
|
|
|
318
|
-
const next = findNextExecutableStep(steps, idx + 1);
|
|
350
|
+
const next = findNextExecutableStep(steps, idx + 1, taskDir);
|
|
319
351
|
if (!next) {
|
|
320
|
-
writeStatus({
|
|
352
|
+
writeStatus({
|
|
353
|
+
pipelineIndex: steps.length,
|
|
354
|
+
phase: 'done',
|
|
355
|
+
state: 'completed',
|
|
356
|
+
currentAgent: null,
|
|
357
|
+
awaitingHumanGate: false,
|
|
358
|
+
});
|
|
321
359
|
out(`Pipeline complete for "${slug}". Run /technical-retro ${slug}.`);
|
|
322
360
|
process.exit(0);
|
|
323
361
|
}
|
|
@@ -4,13 +4,22 @@
|
|
|
4
4
|
|
|
5
5
|
## Loading strategy
|
|
6
6
|
|
|
7
|
-
- **Session start (no `paths:`):** `
|
|
8
|
-
- **On-demand (`paths:` or via commands):** `agent-team-intake`, `agent-team-orchestrator`, `code-review-mr`, architecture, imports, UI, tests, feature-delivery-workflow, reference-features, next-app-router, react-a11y-coding
|
|
7
|
+
- **Session start (no `paths:`):** ровно **3** — `next-app-core`, `package-manager`, `code-quality`
|
|
8
|
+
- **On-demand (`paths:` or via commands):** `post-change-lint` (**обязателен после правок кода**), `agent-team-intake`, `agent-team-orchestrator`, `code-review-mr`, architecture, imports, UI, tests, feature-delivery-workflow, reference-features, next-app-router, react-a11y-coding
|
|
9
9
|
- **Skills:** long workflows (`feature-delivery`, `code-review`, …)
|
|
10
10
|
|
|
11
11
|
### UI edit bundle (consolidated paths)
|
|
12
12
|
|
|
13
|
-
При правке `app/src/ui/**/*.tsx`
|
|
13
|
+
При правке `app/src/ui/**/*.tsx` подгружается **уменьшенный** набор:
|
|
14
|
+
|
|
15
|
+
| Rule | Назначение |
|
|
16
|
+
|------|------------|
|
|
17
|
+
| `ui-and-accessibility/react-ui.md` | Структура, стили, пропсы |
|
|
18
|
+
| `architecture/architecture-boundaries-ui.md` | Slim границы UI-слоя |
|
|
19
|
+
| `ui-and-accessibility/react-a11y-coding.md` | A11y |
|
|
20
|
+
| `stack/navigation-router-ui.md` | Краткий ориентир навигации |
|
|
21
|
+
|
|
22
|
+
**Не грузятся на типичный UI edit:** `architecture/architecture-boundaries.md` (api/store/types/lib), `architecture/layer-barrel-exports.md` (только `index.ts`), `stack/navigation-router.md` (только `app/src/app/**`). Стили колокации — в `react-ui.md` (не отдельный stub).
|
|
14
23
|
|
|
15
24
|
## С чего начать
|
|
16
25
|
|
|
@@ -26,6 +35,10 @@
|
|
|
26
35
|
| `stack/next-app-router.md` | App Router, RSC |
|
|
27
36
|
| `ui-and-accessibility/react-a11y-coding.md` | A11y при кодинге UI |
|
|
28
37
|
| `architecture/feature-delivery-workflow.md` | Сквозной чеклист (paths) |
|
|
38
|
+
| `architecture/architecture-boundaries-ui.md` | Slim границы UI при правках компонентов |
|
|
39
|
+
| `architecture/architecture-boundaries.md` | Полная карта UI / store / API |
|
|
40
|
+
| `stack/navigation-router-ui.md` | Навигация в UI-компонентах (slim) |
|
|
41
|
+
| `stack/navigation-router.md` | Полный аудит стека навигации |
|
|
29
42
|
| `tooling-and-review/agent-team-orchestrator.md` | Pipeline, build-verifier, parallel |
|
|
30
43
|
| `agents/build-verifier.md` | Validation gate agent |
|
|
31
44
|
|
|
@@ -3,9 +3,10 @@
|
|
|
3
3
|
| Файл | Назначение |
|
|
4
4
|
|------|------------|
|
|
5
5
|
| `public-imports.md` | Импорты `@/types`, `@/types/enums`, `@/api` (вне `app/src/api/**`) |
|
|
6
|
-
| `types-public-imports.md`, `api-public-imports.md` | Deprecated stubs → `public-imports.md` |
|
|
7
6
|
| `architecture-boundaries-ui.md` | Slim границы UI при правках компонентов |
|
|
8
7
|
| `architecture-boundaries.md` | Полная карта UI / store / API (api, store, types, lib) |
|
|
9
8
|
| `layer-barrel-exports.md` | Двухуровневые barrel для слоёв с public API |
|
|
10
9
|
| `feature-delivery-workflow.md` | Сквозной чеклист новой фичи |
|
|
11
10
|
| `reference-features.md` | Эталонные пути UI/store/API/types |
|
|
11
|
+
|
|
12
|
+
Deprecated stubs `types-public-imports.md` / `api-public-imports.md` **removed** — use `public-imports.md`.
|
|
@@ -8,5 +8,5 @@
|
|
|
8
8
|
| `arrow-functions.md` | Стрелочный синтаксис | session start |
|
|
9
9
|
| `no-type-assertion.md` | Ограничение `as` на границах модулей | session start |
|
|
10
10
|
| `navigation-router-ui.md` | Навигация в UI-компонентах (slim) | `paths: app/src/ui/**/*.tsx` |
|
|
11
|
-
| `navigation-router.md` | Полный аудит стека навигации | `paths: app/src/app/**` |
|
|
11
|
+
| `navigation-router.md` | Полный аудит стека навигации (App Router / SPA) | `paths: app/src/app/**` |
|
|
12
12
|
| `types-jsdoc.md` | JSDoc в `app/src/types` | `paths: app/src/types/**/*.ts` |
|
|
@@ -6,6 +6,8 @@ paths:
|
|
|
6
6
|
|
|
7
7
|
# Навигация и роутинг: сначала стек проекта
|
|
8
8
|
|
|
9
|
+
Краткий ориентир для UI-компонентов: **`stack/navigation-router-ui.md`**.
|
|
10
|
+
|
|
9
11
|
**При любой задаче, связанной с навигацией, переходами между страницами, URL, редиректами, хлебными крошками, защищёнными маршрутами или программной сменой маршрута** — перед предложением кода или импортов **нельзя** опираться на «типичный React» по умолчанию. Нужно **явно свериться со стеком целевого репозитория** и использовать **один** согласованный с проектом механизм.
|
|
10
12
|
|
|
11
13
|
## Зависимости: что проверить в первую очередь
|
|
@@ -25,7 +25,7 @@
|
|
|
25
25
|
|
|
26
26
|
- Архитектура и импорты: `architecture/architecture-boundaries.md`, `architecture/public-imports.md`
|
|
27
27
|
- Фичи: `architecture/feature-delivery-workflow.md` + skill `feature-delivery`
|
|
28
|
-
- После правок: `tooling-and-review/post-change-lint.md
|
|
28
|
+
- После правок: **вызвать** `tooling-and-review/post-change-lint.md` (requestable, обязателен после code edits); менеджер пакетов: `tooling-and-review/package-manager.md`
|
|
29
29
|
- Копировать паттерны соседних файлов в целевом слое; не использовать `any` (предпочитать `unknown` + сужение)
|
|
30
30
|
|
|
31
31
|
Задачи на **сеть, HTTP, новые эндпоинты**: `api-and-data/http-client.md` + `api-and-data/api-services.md` + `api-and-data/store-rtk.md`.
|
|
@@ -1,16 +1,14 @@
|
|
|
1
1
|
# Tooling and review
|
|
2
2
|
|
|
3
|
-
Lint, package manager, качество кода, code review MR.
|
|
4
|
-
|
|
5
|
-
| Файл | Содержание |
|
|
6
|
-
|
|
7
|
-
| `package-manager.md` | yarn / pnpm / npm / bun — определить по lockfile |
|
|
8
|
-
| `
|
|
9
|
-
| `
|
|
10
|
-
| `
|
|
11
|
-
| `
|
|
12
|
-
| `code-review-mr.md` | Чеклист ревью merge request |
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
On-demand: **`commands/technical-retro.md`** (фасилитация ретро, не грузится как rule).
|
|
3
|
+
Lint, package manager, качество кода, agent team, code review MR.
|
|
4
|
+
|
|
5
|
+
| Файл | Содержание | Загрузка |
|
|
6
|
+
|------|------------|----------|
|
|
7
|
+
| `package-manager.md` | yarn / pnpm / npm / bun — определить по lockfile | session start |
|
|
8
|
+
| `post-change-lint.md` | `lint:js` + `lint:css` после изменений (**обязателен** при code edits) | `paths:` commands/team/agents + `app/**` |
|
|
9
|
+
| `code-quality.md` | Boy scout rule, рефакторинг, ESLint | session start |
|
|
10
|
+
| `agent-team-intake.md` | Когда предлагать `/task` и router pipeline | `paths:` commands/team |
|
|
11
|
+
| `agent-team-orchestrator.md` | Dynamic agent team: router, pipeline, gates | `paths:` commands/team/agents |
|
|
12
|
+
| `code-review-mr.md` | Чеклист ревью merge request | `paths:` review-related |
|
|
13
|
+
|
|
14
|
+
On-demand (не rule): **`commands/technical-retro.md`** (фасилитация ретро).
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
---
|
|
2
2
|
paths:
|
|
3
|
-
- .claude/agents/code-reviewer.md
|
|
4
3
|
- .claude/commands/**/*
|
|
5
|
-
- .claude/
|
|
4
|
+
- .claude/agents/code-reviewer.md
|
|
5
|
+
- .claude/skills/code-review/**/*
|
|
6
|
+
- .claude/team/**/review.md
|
|
6
7
|
---
|
|
7
8
|
|
|
8
9
|
# Code review merge requests
|
|
@@ -21,7 +22,6 @@ On-demand rule for review flows. **Procedure and output format:** skill `code-re
|
|
|
21
22
|
|
|
22
23
|
- User asks for review/MR/diff
|
|
23
24
|
- Pipeline step `code-reviewer`
|
|
24
|
-
- BUGBOT automated review
|
|
25
25
|
|
|
26
26
|
## Constraints
|
|
27
27
|
|
|
@@ -1,5 +1,16 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Прогон ESLint и Stylelint после изменений кода. Requestable — подгружать после правок app/**; агенты обязаны запускать после code edits.
|
|
3
|
+
paths:
|
|
4
|
+
- .claude/commands/**/*
|
|
5
|
+
- .claude/team/**/*
|
|
6
|
+
- .claude/agents/**/*
|
|
7
|
+
- app/**/*.{ts,tsx,js,jsx,mjs,css}
|
|
8
|
+
---
|
|
9
|
+
|
|
1
10
|
# Линтеры после изменений кода
|
|
2
11
|
|
|
12
|
+
**Requestable, но обязателен при изменениях кода:** правило не session-start (экономия контекста); после правок исходников агент **должен** следовать этому чеклисту.
|
|
13
|
+
|
|
3
14
|
## Когда применять
|
|
4
15
|
|
|
5
16
|
После **любого** изменения исходников в `app/**` (TS/TSX/JS/MJS, CSS, styled/Linaria в `.ts`/`.tsx`).
|
|
@@ -4,6 +4,9 @@
|
|
|
4
4
|
|
|
5
5
|
| Файл | Содержание | Загрузка |
|
|
6
6
|
|------|------------|----------|
|
|
7
|
-
| `no-props-spread.md` | Явные пропсы, без `{...props}` |
|
|
8
|
-
| `css-property-order.md` | Порядок CSS (Stylelint idiomatic-order) | `paths
|
|
9
|
-
| `react-ui.md` |
|
|
7
|
+
| `no-props-spread.md` | Явные пропсы, без `{...props}` | `paths: app/src/**/*.tsx` |
|
|
8
|
+
| `css-property-order.md` | Порядок CSS (Stylelint idiomatic-order) | `paths:` styles/css |
|
|
9
|
+
| `react-ui.md` | Структура, стили (`Root`), `.data.ts`, хуки | `paths: app/src/ui/**` |
|
|
10
|
+
| `react-a11y-coding.md` | A11y при написании UI | `paths: app/src/ui/**` |
|
|
11
|
+
|
|
12
|
+
Deprecated stub `component-styles.md` **removed** — styles colocation lives in `react-ui.md`.
|
|
@@ -8,7 +8,7 @@ description: Delivers Next.js frontend features end-to-end across domain types,
|
|
|
8
8
|
1. Read task brief, acceptance criteria, and decomposition if present.
|
|
9
9
|
2. Read **`rules/architecture/feature-delivery-workflow.md`** and **`rules/architecture/reference-features.md`** — follow layer order and mirror closest reference feature.
|
|
10
10
|
3. Add or update focused tests for changed behavior.
|
|
11
|
-
4. Validation from `app/`:
|
|
11
|
+
4. Validation from `app/`: **invoke** **`rules/tooling-and-review/post-change-lint.md`** after code edits (requestable, not session-start — but mandatory when code changed). Pipeline: scoped lint OK if next step is `build-verifier`.
|
|
12
12
|
|
|
13
13
|
## Handoff
|
|
14
14
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Agent team artifacts
|
|
2
2
|
|
|
3
|
-
Каталог артефактов пайплайна «команда агентов» Claude
|
|
3
|
+
Каталог артефактов пайплайна «команда агентов» Claude.
|
|
4
4
|
|
|
5
5
|
## Layout
|
|
6
6
|
|
|
@@ -14,8 +14,8 @@
|
|
|
14
14
|
status.json
|
|
15
15
|
brief.md
|
|
16
16
|
decomposition.md
|
|
17
|
-
debug-report.md
|
|
18
|
-
validation-report.md
|
|
17
|
+
debug-report.md # fixApplied: true/false
|
|
18
|
+
validation-report.md # build-verifier: PASS | FAIL
|
|
19
19
|
architecture.md
|
|
20
20
|
migration-plan.md
|
|
21
21
|
ci-report.md
|
|
@@ -30,18 +30,76 @@
|
|
|
30
30
|
|
|
31
31
|
## pipeline.json schema
|
|
32
32
|
|
|
33
|
-
|
|
33
|
+
```json
|
|
34
|
+
{
|
|
35
|
+
"slug": "order-history-date-filter",
|
|
36
|
+
"intent": "feature",
|
|
37
|
+
"summary": "Add date filter to Order History",
|
|
38
|
+
"steps": [
|
|
39
|
+
{ "agent": "task-analyst", "label": "Clarify and decompose" },
|
|
40
|
+
{ "agent": "feature-developer", "label": "Implement + unit tests", "scope": "unit-in-dev" },
|
|
41
|
+
{ "agent": "build-verifier", "label": "Validation gate" },
|
|
42
|
+
{ "agent": "code-reviewer", "label": "Code review" },
|
|
43
|
+
{ "agent": "qa-tester", "label": "E2E", "scope": "e2e-only" }
|
|
44
|
+
],
|
|
45
|
+
"humanGates": ["after:task-analyst"],
|
|
46
|
+
"autoChain": true,
|
|
47
|
+
"skipped": []
|
|
48
|
+
}
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
### Step fields
|
|
52
|
+
|
|
53
|
+
| Field | Description |
|
|
54
|
+
|-------|-------------|
|
|
55
|
+
| `agent` | kebab-case name or array when `parallel: true` |
|
|
56
|
+
| `label` | Human-readable step name |
|
|
57
|
+
| `scope` | Passed to agents (e.g. `unit-in-dev`, `e2e-only`) |
|
|
58
|
+
| `skipIf` | `debugger.fixed` \| `ci-investigator.resolved` |
|
|
59
|
+
| `parallel` | Invoke all `agent` values in one parent turn |
|
|
60
|
+
|
|
61
|
+
## status.json (pipeline mode)
|
|
62
|
+
|
|
63
|
+
```json
|
|
64
|
+
{
|
|
65
|
+
"slug": "order-history-date-filter",
|
|
66
|
+
"intent": "feature",
|
|
67
|
+
"pipelineIndex": 0,
|
|
68
|
+
"currentAgent": "task-analyst",
|
|
69
|
+
"phase": "executing",
|
|
70
|
+
"state": "in_progress",
|
|
71
|
+
"awaitingHumanGate": false,
|
|
72
|
+
"parallelCompleted": [],
|
|
73
|
+
"retryAfterFix": null,
|
|
74
|
+
"updatedAt": "2026-05-29T12:00:00.000Z"
|
|
75
|
+
}
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
### phase
|
|
79
|
+
|
|
80
|
+
Prefer **`executing`** for pipeline mode. Legacy: `analysis`, `development`, `review`, `testing`, `done`.
|
|
34
81
|
|
|
35
|
-
|
|
82
|
+
### state
|
|
36
83
|
|
|
37
|
-
|
|
84
|
+
| Value | Description |
|
|
85
|
+
|-------|-------------|
|
|
86
|
+
| `in_progress` | Current step running |
|
|
87
|
+
| `completed` | Current step finished |
|
|
88
|
+
| `awaiting_approval` | Human gate; use `/task-continue` |
|
|
89
|
+
| `changes_requested` | Reviewer requires fixes |
|
|
90
|
+
| `validation_failed` | build-verifier failed |
|
|
91
|
+
| `approved` | Legacy continue |
|
|
38
92
|
|
|
39
93
|
## Workflow entry
|
|
40
94
|
|
|
41
95
|
```bash
|
|
42
|
-
/task
|
|
96
|
+
/task <описание задачи>
|
|
43
97
|
/task-continue <slug>
|
|
44
98
|
/technical-retro <slug>
|
|
45
99
|
```
|
|
46
100
|
|
|
47
101
|
Legacy: `/feature-start`, `/feature-continue`.
|
|
102
|
+
|
|
103
|
+
## Git
|
|
104
|
+
|
|
105
|
+
Commit task artifacts if you want them to survive `ai-rules clean claude`. Or copy finished tasks to `docs/agent-workflow/tasks/<slug>/`.
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
# iOS Swift stack — Cursor agent team
|
|
2
|
+
|
|
3
|
+
Краткая точка входа для Cursor. Подробные правила — `.cursor/rules/*.mdc`; сценарии — `.cursor/skills/**`.
|
|
4
|
+
|
|
5
|
+
See `.cursor/rules/README.md` for the full catalog and loading strategy.
|
|
6
|
+
|
|
7
|
+
## Quick start
|
|
8
|
+
|
|
9
|
+
| Задача | Куда смотреть |
|
|
10
|
+
|--------|----------------|
|
|
11
|
+
| Любая новая work-задача | `/task` → `commands/task.md` + `agent-team-orchestrator.mdc` (+ `agent-team-intake.mdc` on-demand) |
|
|
12
|
+
| Новая фича end-to-end | skill `feature-delivery` + `feature-delivery-workflow.mdc` |
|
|
13
|
+
| Стек и слои | `ios-app-core.mdc` |
|
|
14
|
+
| Эталонные Feature | `reference-features.mdc` (примеры `Features/Orders/…`; заменить на реальные пути) |
|
|
15
|
+
| Toolchain / схемы | `xcode-tooling.mdc` (requestable) |
|
|
16
|
+
| После правок Swift | `post-change-build.mdc` (**requestable**, обязателен после edits; полный gate — `build-verifier`) |
|
|
17
|
+
| Code review MR | skill `code-review` + `code-review-mr.mdc` |
|
|
18
|
+
| UI-тесты | skill `xcuitest-e2e` + agents `xcuitest-test-*` |
|
|
19
|
+
| Security / Keychain | `security-ios.mdc` |
|
|
20
|
+
| Валидация перед review | agent `build-verifier` (для preset: ещё проверка chain≠next) |
|
|
21
|
+
| Техническое ретро | `/technical-retro` + skill `technical-retro` |
|
|
22
|
+
|
|
23
|
+
## Dogfood (5 сценариев)
|
|
24
|
+
|
|
25
|
+
1. `/task` — новая Feature под `Features/<Name>`.
|
|
26
|
+
2. Баг ViewModel — debugger + unit test.
|
|
27
|
+
3. Mapper — unit-test-planner/generator.
|
|
28
|
+
4. UI flow — xcuitest trio.
|
|
29
|
+
5. Auth/Keychain — security-reviewer + `security-ios.mdc`.
|
|
30
|
+
|
|
31
|
+
## Когда использовать `/task`
|
|
32
|
+
|
|
33
|
+
- Реализация, багфикс, миграция, тесты, ревью MR, CI-fix — **предпочтительно через `/task`**.
|
|
34
|
+
- Простой one-liner без архитектурного риска — можно без pipeline, если пользователь явно просит.
|
|
35
|
+
- Вопросы «как работает X» — ответ без `/task`.
|
|
36
|
+
|
|
37
|
+
## Pipeline routing
|
|
38
|
+
|
|
39
|
+
Intent detection, profiles (`full` / `standard` / `light`), and default steps — **only** in `agents/task-router.md`. Schema and rename map (Playwright → XCUITest) — `agents/README.md`.
|
|
40
|
+
|
|
41
|
+
## Install
|
|
42
|
+
|
|
43
|
+
```bash
|
|
44
|
+
npx @bonesofspring/ai-rules init cursor --preset ios-swift
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
Копирует rules, commands, agents, hooks, skills, team, `hooks.json`, `BUGBOT.md`, `AGENTS.md`.
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# Cursor Bugbot Review Guidelines (iOS)
|
|
2
|
+
|
|
3
|
+
Follow the **`code-review` skill** and **`code-review-mr.mdc`** for the full checklist.
|
|
4
|
+
|
|
5
|
+
## Priorities
|
|
6
|
+
|
|
7
|
+
1. Correctness regressions and runtime bugs (crashes, wrong state, concurrency races).
|
|
8
|
+
2. Architecture boundary violations (`architecture-boundaries.mdc`): View↛API/DTO, Domain↛SwiftUI, Data↛Presentation.
|
|
9
|
+
3. Missing unit tests for mappers / use cases / non-trivial ViewModel logic; XCUITest updates for user flows (`tests-unit.mdc`, `tests-ui.mdc`).
|
|
10
|
+
4. Concurrency and safety (`swift-conventions.mdc`): `@MainActor`, typed errors, no unjustified force unwrap; SPM public API / no deep-imports (`module-public-api.mdc`).
|
|
11
|
+
5. Security-sensitive diffs: Keychain, tokens, PII, ATS (`security-ios.mdc`).
|
|
12
|
+
|
|
13
|
+
## Review style
|
|
14
|
+
|
|
15
|
+
Lead with concrete findings: file, impact, fix direction. Skip style-only nits unless they violate SwiftLint/project conventions.
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
# iOS Swift preset (Cursor)
|
|
2
|
+
|
|
3
|
+
Правила и agent-team surface для iOS (Swift / SwiftUI / XCTest / XCUITest).
|
|
4
|
+
|
|
5
|
+
## Install
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
npx @bonesofspring/ai-rules init cursor --preset ios-swift
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
Копирует:
|
|
12
|
+
|
|
13
|
+
| Path | Содержание |
|
|
14
|
+
|------|------------|
|
|
15
|
+
| `AGENTS.md` | Quick-start |
|
|
16
|
+
| `BUGBOT.md` | Cursor Bugbot review priorities (iOS) |
|
|
17
|
+
| `rules/**` | `.mdc` + README (alwaysApply ≤3) |
|
|
18
|
+
| `agents/**` | **21** ролей (+ README rename map) |
|
|
19
|
+
| `skills/**` | **7** skills (в т.ч. `xcuitest-e2e`) |
|
|
20
|
+
| `commands/**` | task, task-continue, feature-start/continue, technical-retro |
|
|
21
|
+
| `hooks.json` + `hooks/**` | guard-shell + chain-team-phases |
|
|
22
|
+
| `team/**` | fixtures + README |
|
|
23
|
+
|
|
24
|
+
## alwaysApply (≤3)
|
|
25
|
+
|
|
26
|
+
`ios-app-core`, `architecture-boundaries`, `code-quality-and-refactoring`.
|
|
27
|
+
|
|
28
|
+
Requestable (не always-on): `post-change-build`, `xcode-tooling`, `agent-team-*`, `code-review-mr`, `feature-delivery-workflow`, `reference-features`.
|
|
29
|
+
|
|
30
|
+
## Sync with Claude
|
|
31
|
+
|
|
32
|
+
SoT = этот Cursor-пресет. После правок `.mdc` / agents / skills — обновить twin в `presets/claude/ios-swift/` **в том же PR**.
|
|
33
|
+
|
|
34
|
+
`BUGBOT.md` — **Cursor-only** (нет Claude twin); для Claude Code — skill `code-review` + `tooling-and-review/code-review.md`.
|
|
35
|
+
|
|
36
|
+
См. `rules/README.md`, `AGENTS.md`.
|