@bonesofspring/ai-rules 0.2.2 → 0.2.4
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 +65 -0
- package/README.md +27 -4
- package/bin/cli.js +285 -72
- package/package.json +3 -2
- package/presets/claude/ios-swift/CLAUDE.md +28 -20
- package/presets/claude/ios-swift/MCP.md +14 -0
- package/presets/claude/ios-swift/README.md +18 -15
- 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 +12 -2
- 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/mcp.json +12 -0
- package/presets/claude/ios-swift/rules/README.md +25 -14
- package/presets/claude/ios-swift/rules/api-and-data/README.md +2 -1
- package/presets/claude/ios-swift/rules/api-and-data/networking.md +2 -2
- package/presets/claude/ios-swift/rules/api-and-data/persistence.md +30 -0
- package/presets/claude/ios-swift/rules/architecture/README.md +3 -1
- package/presets/claude/ios-swift/rules/architecture/feature-delivery.md +10 -2
- 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/ios-app-core.md +2 -1
- package/presets/claude/ios-swift/rules/testing/ui.md +2 -0
- package/presets/claude/ios-swift/rules/tooling-and-review/README.md +6 -1
- 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-review.md +5 -0
- package/presets/claude/ios-swift/rules/tooling-and-review/post-change-build.md +5 -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 +2 -1
- package/presets/claude/ios-swift/rules/ui-and-accessibility/navigation.md +28 -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 +29 -5
- package/presets/claude/next/MCP.md +16 -0
- package/presets/claude/next/README.md +12 -0
- package/presets/claude/next/agents/README.md +155 -1
- package/presets/claude/next/agents/accessibility-reviewer.md +65 -0
- package/presets/claude/next/agents/api-contract-reviewer.md +69 -0
- package/presets/claude/next/agents/build-verifier.md +64 -0
- package/presets/claude/next/agents/ci-investigator.md +62 -0
- package/presets/claude/next/agents/code-reviewer.md +63 -0
- package/presets/claude/next/agents/debugger.md +63 -0
- package/presets/claude/next/agents/feature-developer.md +27 -0
- package/presets/claude/next/agents/migration-specialist.md +69 -0
- package/presets/claude/next/agents/performance-auditor.md +68 -0
- package/presets/claude/next/agents/qa-tester.md +56 -0
- package/presets/claude/next/agents/security-reviewer.md +64 -0
- package/presets/claude/next/agents/solution-architect.md +70 -0
- package/presets/claude/next/agents/task-analyst.md +111 -0
- package/presets/claude/next/agents/task-router.md +94 -0
- package/presets/claude/next/agents/tech-writer.md +61 -0
- package/presets/claude/next/agents/unit-test-generator.md +37 -0
- package/presets/claude/next/agents/unit-test-healer.md +38 -0
- package/presets/claude/next/agents/unit-test-planner.md +62 -0
- package/presets/claude/next/commands/README.md +10 -2
- package/presets/claude/next/commands/feature-continue.md +51 -0
- package/presets/claude/next/commands/feature-start.md +30 -0
- package/presets/claude/next/commands/task-continue.md +49 -0
- package/presets/claude/next/commands/task.md +50 -0
- package/presets/claude/next/commands/technical-retro.md +58 -0
- package/presets/claude/next/hooks/README.md +5 -2
- package/presets/claude/next/hooks/chain-team-phases.sh +380 -0
- package/presets/claude/next/hooks/guard-shell-command.sh +77 -0
- package/presets/claude/next/mcp.json +20 -0
- package/presets/claude/next/rules/README.md +42 -11
- package/presets/claude/next/rules/api-and-data/README.md +7 -1
- package/presets/claude/next/rules/api-and-data/api-services.md +57 -0
- package/presets/claude/next/rules/api-and-data/http-client.md +40 -0
- package/presets/claude/next/rules/api-and-data/store-rtk.md +65 -0
- package/presets/claude/next/rules/architecture/README.md +11 -2
- package/presets/claude/next/rules/architecture/architecture-boundaries-ui.md +15 -0
- package/presets/claude/next/rules/architecture/architecture-boundaries.md +75 -0
- package/presets/claude/next/rules/architecture/feature-delivery-workflow.md +79 -0
- package/presets/claude/next/rules/architecture/layer-barrel-exports.md +58 -0
- package/presets/claude/next/rules/architecture/public-imports.md +46 -0
- package/presets/claude/next/rules/architecture/reference-features.md +37 -0
- package/presets/claude/next/rules/stack/README.md +10 -1
- package/presets/claude/next/rules/stack/arrow-functions.md +45 -0
- package/presets/claude/next/rules/stack/navigation-router-ui.md +15 -0
- package/presets/claude/next/rules/stack/navigation-router.md +64 -0
- package/presets/claude/next/rules/stack/next-app-core.md +33 -0
- package/presets/claude/next/rules/stack/next-app-router.md +36 -0
- package/presets/claude/next/rules/stack/no-type-assertion.md +59 -0
- package/presets/claude/next/rules/stack/types-jsdoc.md +37 -0
- package/presets/claude/next/rules/testing/README.md +9 -1
- package/presets/claude/next/rules/testing/playwright-agents.md +74 -0
- package/presets/claude/next/rules/testing/tests-e2e-structure.md +52 -0
- package/presets/claude/next/rules/testing/tests-unit.md +66 -0
- package/presets/claude/next/rules/tooling-and-review/README.md +12 -1
- package/presets/claude/next/rules/tooling-and-review/agent-team-intake.md +15 -0
- package/presets/claude/next/rules/tooling-and-review/agent-team-orchestrator.md +145 -0
- package/presets/claude/next/rules/tooling-and-review/code-quality.md +42 -0
- package/presets/claude/next/rules/tooling-and-review/code-review-mr.md +30 -0
- package/presets/claude/next/rules/tooling-and-review/package-manager.md +11 -0
- package/presets/claude/next/rules/tooling-and-review/post-change-lint.md +44 -0
- package/presets/claude/next/rules/ui-and-accessibility/README.md +10 -1
- package/presets/claude/next/rules/ui-and-accessibility/css-property-order.md +14 -0
- package/presets/claude/next/rules/ui-and-accessibility/no-props-spread.md +57 -0
- package/presets/claude/next/rules/ui-and-accessibility/react-a11y-coding.md +37 -0
- package/presets/claude/next/rules/ui-and-accessibility/react-ui.md +91 -0
- package/presets/claude/next/skills/README.md +11 -1
- package/presets/claude/next/skills/ci-investigation/SKILL.md +36 -0
- package/presets/claude/next/skills/code-review/SKILL.md +26 -0
- package/presets/claude/next/skills/debug-investigation/SKILL.md +28 -0
- package/presets/claude/next/skills/feature-delivery/SKILL.md +15 -0
- package/presets/claude/next/skills/playwright-e2e/SKILL.md +31 -0
- package/presets/claude/next/skills/technical-retro/SKILL.md +40 -0
- package/presets/claude/next/skills/unit-testing/SKILL.md +32 -0
- package/presets/claude/next/team/README.md +105 -0
- package/presets/claude/next/team/fixtures/bugfix-standard.json +15 -0
- package/presets/claude/next/team/fixtures/feature-full.json +16 -0
- package/presets/claude/next/team/fixtures/feature-light.json +17 -0
- package/presets/claude/next/team/tasks/.gitkeep +1 -0
- package/presets/cursor/ios-swift/AGENTS.md +47 -0
- package/presets/cursor/ios-swift/BUGBOT.md +15 -0
- package/presets/cursor/ios-swift/MCP.md +16 -0
- package/presets/cursor/ios-swift/README.md +27 -7
- 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 +49 -1
- 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/cursor/ios-swift/hooks.json +17 -0
- package/presets/cursor/ios-swift/mcp.json +11 -0
- package/presets/cursor/ios-swift/rules/README.md +45 -13
- package/presets/cursor/ios-swift/rules/agent-team-intake.mdc +16 -0
- package/presets/cursor/ios-swift/rules/agent-team-orchestrator.mdc +85 -0
- package/presets/cursor/ios-swift/rules/code-review-mr.mdc +1 -0
- package/presets/cursor/ios-swift/rules/feature-delivery-workflow.mdc +1 -1
- package/presets/cursor/ios-swift/rules/ios-app-core.mdc +2 -1
- 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 +2 -2
- package/presets/cursor/ios-swift/rules/persistence-data.mdc +31 -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/technical-retro.mdc +12 -0
- package/presets/cursor/ios-swift/rules/tests-ui.mdc +1 -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 +31 -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 +36 -0
- package/presets/cursor/next/BUGBOT.md +14 -0
- package/presets/cursor/next/MCP.md +16 -0
- package/presets/cursor/next/agents/README.md +165 -0
- package/presets/cursor/next/agents/accessibility-reviewer.md +67 -0
- package/presets/cursor/next/agents/api-contract-reviewer.md +71 -0
- package/presets/cursor/next/agents/build-verifier.md +66 -0
- package/presets/cursor/next/agents/ci-investigator.md +64 -0
- package/presets/cursor/next/agents/code-reviewer.md +64 -0
- package/presets/cursor/next/agents/debugger.md +64 -0
- package/presets/cursor/next/agents/feature-developer.md +28 -0
- package/presets/cursor/next/agents/migration-specialist.md +71 -0
- package/presets/cursor/next/agents/performance-auditor.md +70 -0
- package/presets/cursor/next/agents/playwright-test-generator.md +27 -0
- package/presets/cursor/next/agents/playwright-test-healer.md +27 -0
- package/presets/cursor/next/agents/playwright-test-planner.md +28 -0
- package/presets/cursor/next/agents/qa-tester.md +58 -0
- package/presets/cursor/next/agents/security-reviewer.md +66 -0
- package/presets/cursor/next/agents/solution-architect.md +71 -0
- package/presets/cursor/next/agents/task-analyst.md +112 -0
- package/presets/cursor/next/agents/task-router.md +95 -0
- package/presets/cursor/next/agents/tech-writer.md +62 -0
- package/presets/cursor/next/agents/unit-test-generator.md +39 -0
- package/presets/cursor/next/agents/unit-test-healer.md +40 -0
- package/presets/cursor/next/agents/unit-test-planner.md +64 -0
- package/presets/cursor/next/commands/README.md +49 -1
- package/presets/cursor/next/commands/feature-continue.md +19 -0
- package/presets/cursor/next/commands/feature-start.md +33 -0
- package/presets/cursor/next/commands/task-continue.md +49 -0
- package/presets/cursor/next/commands/task.md +50 -0
- package/presets/cursor/next/commands/technical-retro.md +81 -0
- package/presets/cursor/next/hooks/README.md +8 -0
- package/presets/cursor/next/hooks/chain-team-phases.sh +380 -0
- package/presets/cursor/next/hooks/guard-shell-command.sh +77 -0
- package/presets/cursor/next/hooks.json +17 -0
- package/presets/cursor/next/mcp.json +19 -0
- package/presets/cursor/next/rules/README.md +67 -0
- package/presets/cursor/next/rules/agent-team-intake.mdc +14 -0
- package/presets/cursor/next/rules/agent-team-orchestrator.mdc +147 -0
- package/presets/cursor/next/rules/api-services.mdc +12 -10
- package/presets/cursor/next/rules/architecture-boundaries-ui.mdc +15 -0
- package/presets/cursor/next/rules/architecture-boundaries.mdc +31 -12
- package/presets/cursor/next/rules/arrow-functions.mdc +46 -0
- package/presets/cursor/next/rules/code-quality-and-refactoring.mdc +5 -4
- package/presets/cursor/next/rules/code-review-mr.mdc +21 -40
- package/presets/cursor/next/rules/css-property-order-stylelint.mdc +16 -0
- package/presets/cursor/next/rules/feature-delivery-workflow.mdc +76 -0
- package/presets/cursor/next/rules/http-client.mdc +42 -0
- package/presets/cursor/next/rules/layer-barrel-exports.mdc +59 -0
- package/presets/cursor/next/rules/navigation-router-stack.mdc +62 -0
- package/presets/cursor/next/rules/navigation-router-ui.mdc +16 -0
- package/presets/cursor/next/rules/next-app-core.mdc +18 -61
- package/presets/cursor/next/rules/next-app-router.mdc +36 -0
- package/presets/cursor/next/rules/no-props-spread.mdc +27 -4
- package/presets/cursor/next/rules/no-type-assertion-as-import-export.mdc +60 -0
- package/presets/cursor/next/rules/package-manager.mdc +16 -0
- package/presets/cursor/next/rules/playwright-agents.mdc +2 -1
- package/presets/cursor/next/rules/post-change-lint.mdc +40 -0
- package/presets/cursor/next/rules/public-imports.mdc +48 -0
- package/presets/cursor/next/rules/react-a11y-coding.mdc +37 -0
- package/presets/cursor/next/rules/react-ui.mdc +33 -3
- package/presets/cursor/next/rules/reference-features.mdc +39 -0
- package/presets/cursor/next/rules/store-rtk.mdc +13 -6
- package/presets/cursor/next/rules/technical-retro.mdc +12 -0
- package/presets/cursor/next/rules/tests-unit.mdc +30 -10
- package/presets/cursor/next/rules/types-jsdoc.mdc +42 -0
- package/presets/cursor/next/skills/README.md +15 -0
- package/presets/cursor/next/skills/ci-investigation/SKILL.md +36 -0
- package/presets/cursor/next/skills/code-review/SKILL.md +26 -0
- package/presets/cursor/next/skills/debug-investigation/SKILL.md +28 -0
- package/presets/cursor/next/skills/feature-delivery/SKILL.md +15 -0
- package/presets/cursor/next/skills/playwright-e2e/SKILL.md +31 -0
- package/presets/cursor/next/skills/technical-retro/SKILL.md +40 -0
- package/presets/cursor/next/skills/unit-testing/SKILL.md +32 -0
- package/presets/cursor/next/team/README.md +109 -0
- package/presets/cursor/next/team/fixtures/bugfix-standard.json +15 -0
- package/presets/cursor/next/team/fixtures/feature-full.json +16 -0
- package/presets/cursor/next/team/fixtures/feature-light.json +17 -0
- package/presets/cursor/next/team/tasks/.gitkeep +0 -0
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Эталонные Feature-модули репозитория — копировать структуру при реализации. Заполните пути после init в целевом iOS-репо.
|
|
3
|
+
paths:
|
|
4
|
+
- Features/**/*
|
|
5
|
+
- "**/Presentation/**/*"
|
|
6
|
+
- "**/Domain/**/*"
|
|
7
|
+
- "**/Data/**/*"
|
|
8
|
+
- "**/DesignSystem/**/*"
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
# Эталонные фичи (reference features)
|
|
12
|
+
|
|
13
|
+
Перед реализацией найди Feature того же типа и **повтори её структуру**, не изобретая новую организацию файлов.
|
|
14
|
+
|
|
15
|
+
## Таблица эталонов
|
|
16
|
+
|
|
17
|
+
После `ai-rules init` замени примеры на **реальные** пути consumer-репо. Ниже — conventional placeholders для greenfield / dogfood.
|
|
18
|
+
|
|
19
|
+
| Слой | Эталон (пример → заменить) | Conventional glob / path |
|
|
20
|
+
|------|----------------------------|--------------------------|
|
|
21
|
+
| Feature module | `Features/Orders/` | `Features/**` |
|
|
22
|
+
| Presentation / UI | `Features/Orders/Presentation/` | `**/Presentation/**`, `**/DesignSystem/**` |
|
|
23
|
+
| Domain | `Features/Orders/Domain/` | `**/Domain/**` |
|
|
24
|
+
| Data / Network | `Features/Orders/Data/` | `**/Data/**`, `**/Network*/**` |
|
|
25
|
+
| Persistence | `Features/Orders/Data/Persistence/` | `**/Persistence/**`, `**/Keychain/**` |
|
|
26
|
+
| Unit tests | `Features/OrdersTests/` или `*Tests` рядом | `**/*Tests/**/*.swift` |
|
|
27
|
+
| UI tests | `OrdersUITests/` | `**/*UITests/**/*.swift` |
|
|
28
|
+
|
|
29
|
+
Если в репо другая раскладка (`Modules/`, `Sources/`) — перепиши таблицу один раз и держи её SoT для агентов.
|
|
30
|
+
|
|
31
|
+
## Как использовать
|
|
32
|
+
|
|
33
|
+
1. Определи затронутые слои из `decomposition.md` или задачи.
|
|
34
|
+
2. Открой эталон из таблицы (после заполнения путей).
|
|
35
|
+
3. Зеркаль именование, порядок файлов, DI, паттерны тестов.
|
|
36
|
+
4. Если эталона нет — выбери **самую близкую** существующую фичу того же слоя и зафиксируй выбор в handoff.
|
|
37
|
+
|
|
38
|
+
## Dogfood checklist (5 сценариев)
|
|
39
|
+
|
|
40
|
+
1. `/task` новая фича в `Features/<Name>` — analyst → developer → build-verifier (xcodebuild).
|
|
41
|
+
2. Баг в ViewModel — debugger → fix → unit test.
|
|
42
|
+
3. Mapper DTO↔domain — unit-test-planner/generator.
|
|
43
|
+
4. UI flow — `xcuitest-test-planner` → generator (accessibilityIdentifier).
|
|
44
|
+
5. Auth/Keychain touch — security-reviewer + `security-ios`.
|
|
45
|
+
|
|
46
|
+
## Связанные правила
|
|
47
|
+
|
|
48
|
+
- `tooling-and-review/code-quality.md` — повторять паттерны.
|
|
49
|
+
- `architecture/feature-delivery.md` — порядок слоёв.
|
|
50
|
+
- skill `feature-delivery` — end-to-end сценарий.
|
|
@@ -39,4 +39,5 @@ description: Базовые принципы, стек и структура iOS
|
|
|
39
39
|
|
|
40
40
|
- Определить слой (Presentation / Domain / Data / DesignSystem / Tests); повторить паттерн соседних файлов.
|
|
41
41
|
- Не тянуть `URLSession` во View и DTO во ViewModel — детали в `architecture/boundaries.md`.
|
|
42
|
-
- Доставка фичи — `architecture/feature-delivery.md`; после правок Swift — `tooling-and-review/post-change-build.md
|
|
42
|
+
- Доставка фичи — `architecture/feature-delivery.md`; после правок Swift — **вызвать** `tooling-and-review/post-change-build.md` (requestable).
|
|
43
|
+
- Toolchain перед сборкой — `tooling-and-review/xcode-tooling.md` (requestable).
|
|
@@ -39,3 +39,5 @@ paths:
|
|
|
39
39
|
- Переиспользовать page objects, не дублировать query в каждом тесте.
|
|
40
40
|
- Добавлять `accessibilityIdentifier` в SwiftUI через `.accessibilityIdentifier(...)` для новых интерактивных элементов.
|
|
41
41
|
- Следовать существующим UITest files как эталону.
|
|
42
|
+
|
|
43
|
+
- Планирование / генерация / heal — agents `xcuitest-test-{planner,generator,healer}` и skill `xcuitest-e2e` (не Playwright).
|
|
@@ -1,11 +1,16 @@
|
|
|
1
1
|
# Tooling and review
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Качество, review, build, security, agent-team, retro. Index only — тела в topic `.md`.
|
|
4
4
|
|
|
5
5
|
| File | Cursor SoT |
|
|
6
6
|
|------|------------|
|
|
7
7
|
| [`code-quality.md`](./code-quality.md) | `code-quality-and-refactoring.mdc` |
|
|
8
8
|
| [`code-review.md`](./code-review.md) | `code-review-mr.mdc` |
|
|
9
9
|
| [`post-change-build.md`](./post-change-build.md) | `post-change-build.mdc` |
|
|
10
|
+
| [`xcode-tooling.md`](./xcode-tooling.md) | `xcode-tooling.mdc` |
|
|
11
|
+
| [`security-ios.md`](./security-ios.md) | `security-ios.mdc` |
|
|
12
|
+
| [`agent-team-intake.md`](./agent-team-intake.md) | `agent-team-intake.mdc` |
|
|
13
|
+
| [`agent-team-orchestrator.md`](./agent-team-orchestrator.md) | `agent-team-orchestrator.mdc` |
|
|
14
|
+
| [`technical-retro.md`](./technical-retro.md) | `technical-retro.mdc` |
|
|
10
15
|
|
|
11
16
|
Sync: change Cursor → update Claude twin same PR. Full map: [`../README.md`](../README.md).
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Use when user posts a work request without /task — suggest or use /task to run the agent team router. Lightweight intake hint only.
|
|
3
|
+
paths:
|
|
4
|
+
- .claude/commands/**/*
|
|
5
|
+
- .claude/team/**/*
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Agent team intake
|
|
9
|
+
|
|
10
|
+
When the user message looks like a **work request** (implement, add, fix, refactor, review MR, write tests, spike) — not a question about how code works:
|
|
11
|
+
|
|
12
|
+
1. Prefer **`/task <their request>`** or invoke **task-router** first.
|
|
13
|
+
2. Do not jump straight to coding without router + pipeline when scope is non-trivial.
|
|
14
|
+
3. Pure questions («как работает X», «объясни») — answer normally, no `/task`.
|
|
15
|
+
|
|
16
|
+
Exceptions: user explicitly says «без pipeline», «просто сделай», or continues an active slug.
|
|
17
|
+
|
|
18
|
+
Scope: iOS/Swift Feature modules (`Features/`, Presentation/Domain/Data) — not `app/src` / Playwright.
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Orchestrates the agent team via task-router and pipeline.json. Use for /task, /task-continue, /feature-start, task decomposition, or when the user describes a feature, bug, or review request.
|
|
3
|
+
paths:
|
|
4
|
+
- .claude/commands/**/*
|
|
5
|
+
- .claude/team/**/*
|
|
6
|
+
- .claude/agents/**/*
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# Agent team orchestrator
|
|
10
|
+
|
|
11
|
+
Parent agent = **manager**. Router plans; specialists execute. Artifacts: `.claude/team/tasks/<slug>/`.
|
|
12
|
+
|
|
13
|
+
Work request без `/task` — см. **`tooling-and-review/agent-team-intake.md`**.
|
|
14
|
+
|
|
15
|
+
## Entry points
|
|
16
|
+
|
|
17
|
+
| Command | When |
|
|
18
|
+
|---------|------|
|
|
19
|
+
| **`/task <desc>`** | **Preferred** — router → dynamic pipeline → first agent |
|
|
20
|
+
| `/task-continue <slug>` | After human gate or pause |
|
|
21
|
+
| `/feature-start <desc>` | Legacy: analyst-only start (no router) |
|
|
22
|
+
| `/feature-continue <slug>` | Alias of task-continue |
|
|
23
|
+
| `/technical-retro [slug]` | Retro with agent team block |
|
|
24
|
+
|
|
25
|
+
## Roles (iOS)
|
|
26
|
+
|
|
27
|
+
Same stems as Cursor ios-swift agents. **Never Playwright** — use `xcuitest-test-{planner,generator,healer}`. `build-verifier` runs xcodebuild + SwiftLint/Format + unit smoke.
|
|
28
|
+
|
|
29
|
+
Full prompts: `.claude/agents/*.md`. Artifacts: `.claude/team/README.md`.
|
|
30
|
+
|
|
31
|
+
## Dynamic pipeline
|
|
32
|
+
|
|
33
|
+
**Source of truth:** `pipeline.json` → `steps[]`.
|
|
34
|
+
|
|
35
|
+
## Rules (strict)
|
|
36
|
+
|
|
37
|
+
1. **`/task` always starts with task-router**.
|
|
38
|
+
2. Read `pipeline.json` before every subagent invocation.
|
|
39
|
+
3. One role per invocation — except parallel steps.
|
|
40
|
+
4. **Never** skip `humanGates` without continue/approval.
|
|
41
|
+
5. Persist handoffs under `.claude/team/tasks/<slug>/` by writing files (not Shell-only `mkdir`).
|
|
42
|
+
6. On `validation_failed`: developer → build-verifier.
|
|
43
|
+
7. When complete, suggest `/technical-retro <slug>`.
|
|
44
|
+
|
|
45
|
+
## Skip pipeline when
|
|
46
|
+
|
|
47
|
+
Pure questions; trivial one-file; user «без pipeline»; docs-only one-liner.
|
|
@@ -1,5 +1,10 @@
|
|
|
1
1
|
---
|
|
2
2
|
description: Требования к code review для iOS merge requests. Use when reviewing MR/diff/PR, evaluating a branch, or when the user asks for code review.
|
|
3
|
+
paths:
|
|
4
|
+
- .claude/commands/**/*
|
|
5
|
+
- .claude/team/**/*
|
|
6
|
+
- .claude/agents/**/*
|
|
7
|
+
- .claude/skills/code-review/**/*
|
|
3
8
|
---
|
|
4
9
|
|
|
5
10
|
# Code review merge requests
|
|
@@ -1,5 +1,10 @@
|
|
|
1
1
|
---
|
|
2
2
|
description: Сборка и lint после изменений Swift/iOS кода. Use after editing iOS/Swift sources, Xcode targets, or Package.swift.
|
|
3
|
+
paths:
|
|
4
|
+
- .claude/commands/**/*
|
|
5
|
+
- .claude/agents/**/*
|
|
6
|
+
- **/*.{swift,xcodeproj,xcworkspace,pbxproj}
|
|
7
|
+
- **/Package.swift
|
|
3
8
|
---
|
|
4
9
|
|
|
5
10
|
# Сборка и lint после изменений
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: ATS, Keychain, PII, секреты, безопасное логирование iOS
|
|
3
|
+
paths:
|
|
4
|
+
- "**/*Keychain*.swift"
|
|
5
|
+
- "**/*Auth*.swift"
|
|
6
|
+
- "**/*Token*.swift"
|
|
7
|
+
- "**/*Credential*.swift"
|
|
8
|
+
- "**/Info.plist"
|
|
9
|
+
- .claude/commands/**/*
|
|
10
|
+
- .claude/agents/**/*
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# Security (iOS)
|
|
14
|
+
|
|
15
|
+
## Секреты и конфиг
|
|
16
|
+
|
|
17
|
+
- Нет API keys / tokens в исходниках и git; использовать Keychain, xcconfig (не в VCS), CI secrets.
|
|
18
|
+
- Debug-only bypass ATS / SSL — только `#if DEBUG` и никогда в Release.
|
|
19
|
+
|
|
20
|
+
## ATS и сеть
|
|
21
|
+
|
|
22
|
+
- ATS exceptions в Info.plist — минимальные, с обоснованием; предпочитать HTTPS.
|
|
23
|
+
- Certificate pinning — только если уже принято в репо.
|
|
24
|
+
|
|
25
|
+
## PII и логи
|
|
26
|
+
|
|
27
|
+
- Не логировать токены, пароли, полные номера карт/документов.
|
|
28
|
+
- Crash/APM: scrub PII по политике репо.
|
|
29
|
+
|
|
30
|
+
## Keychain / биометрия
|
|
31
|
+
|
|
32
|
+
- Accessible уровни и `kSecAttrAccessible` — осознанно; Face ID/Touch ID — через LocalAuthentication как в репо.
|
|
33
|
+
|
|
34
|
+
## Требование к агенту
|
|
35
|
+
|
|
36
|
+
При auth/формах/платежах — сверить с этим правилом и `code-review`. Security-reviewer подключать для чувствительных фич.
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Роль агента для проведения технического ретроспективы (retro). On-demand — предпочтительнее slash-команда /technical-retro.
|
|
3
|
+
paths:
|
|
4
|
+
- .claude/commands/**/*
|
|
5
|
+
- .claude/team/**/*
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Техническое ретро — rule alias
|
|
9
|
+
|
|
10
|
+
Полный сценарий — в slash-команде:
|
|
11
|
+
|
|
12
|
+
**`.claude/commands/technical-retro.md`** → `/technical-retro`
|
|
13
|
+
|
|
14
|
+
Используй rule только если command недоступен. Не дублируй содержимое — следуй command-файлу и skill `technical-retro`.
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Перед xcodebuild / SwiftLint / SwiftFormat определять toolchain и схемы репозитория и использовать только их
|
|
3
|
+
paths:
|
|
4
|
+
- .claude/commands/**/*
|
|
5
|
+
- .claude/agents/**/*
|
|
6
|
+
- "**/*.{swift,xcodeproj,xcworkspace,pbxproj}"
|
|
7
|
+
- "**/Package.swift"
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# Xcode tooling (терминал)
|
|
11
|
+
|
|
12
|
+
Перед **`xcodebuild` / `swift build` / `swift test` / SwiftLint / SwiftFormat / `simctl`** определи toolchain репозитория и **используй только его**.
|
|
13
|
+
|
|
14
|
+
## Как определить
|
|
15
|
+
|
|
16
|
+
1. **Workspace / project:** `.xcworkspace` (CocoaPods) → workspace; иначе `.xcodeproj`; SPM-only — `Package.swift`.
|
|
17
|
+
2. **Scheme / destination:** как в CI, `Makefile`, `fastlane`, `scripts/` — не угадывать.
|
|
18
|
+
3. **Lint:** `.swiftlint.yml` / `SwiftLint` в PATH или Mint/mise — если конфига нет, не запускать «чужой» lint.
|
|
19
|
+
4. **Format:** `.swiftformat` / SwiftFormat — только если принято в репо.
|
|
20
|
+
5. **Simulator:** `xcrun simctl list` + destination из CI; не хардкодить UDID.
|
|
21
|
+
|
|
22
|
+
Примеры: `xcodebuild -scheme App -destination 'platform=iOS Simulator,name=iPhone 16' build`, `swiftlint lint --quiet`, `swiftformat . --lint`.
|
|
23
|
+
|
|
24
|
+
Долгие сборки и DerivedData — нормальны; не блокировать `xcodebuild`/`simctl`/`xcrun`.
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
# UI and accessibility
|
|
2
2
|
|
|
3
|
-
SwiftUI Views, Design System, ViewModels. Index only — тела в topic `.md`.
|
|
3
|
+
SwiftUI Views, Design System, ViewModels, navigation. Index only — тела в topic `.md`.
|
|
4
4
|
|
|
5
5
|
| File | Cursor SoT |
|
|
6
6
|
|------|------------|
|
|
7
7
|
| [`swiftui.md`](./swiftui.md) | `swiftui-ui.mdc` |
|
|
8
8
|
| [`viewmodels.md`](./viewmodels.md) | `state-and-viewmodels.mdc` |
|
|
9
|
+
| [`navigation.md`](./navigation.md) | `navigation-coordinators.mdc` |
|
|
9
10
|
|
|
10
11
|
Sync: change Cursor → update Claude twin same PR. Full map: [`../README.md`](../README.md).
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: NavigationStack, координаторы, deep links — границы Presentation
|
|
3
|
+
paths:
|
|
4
|
+
- "**/Presentation/**/*Navigator*.swift"
|
|
5
|
+
- "**/Presentation/**/*Coordinator*.swift"
|
|
6
|
+
- "**/Presentation/**/*Router*.swift"
|
|
7
|
+
- "**/App/**/*App*.swift"
|
|
8
|
+
- "**/*Navigation*.swift"
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
# Навигация (iOS)
|
|
12
|
+
|
|
13
|
+
## Рамка
|
|
14
|
+
|
|
15
|
+
- **SwiftUI-first:** `NavigationStack` / `navigationDestination` / sheet / fullScreenCover — как в репо.
|
|
16
|
+
- UIKit / coordinator — только если уже принят в модуле; не смешивать два стиля в одном Feature без причины.
|
|
17
|
+
- Маршруты и deep links — **Presentation** (или App shell); Domain не знает о `NavigationPath`.
|
|
18
|
+
|
|
19
|
+
## Правила
|
|
20
|
+
|
|
21
|
+
- Один Feature — один явный «вход» навигации (root view / coordinator), не размазывать `NavigationLink` по Data.
|
|
22
|
+
- Параметры экрана — typed (enum route / struct), не «магические» строки без реестра.
|
|
23
|
+
- Deep link → route mapping централизован (App или Navigation hub); ViewModel не парсит URL напрямую.
|
|
24
|
+
- Модалки: владелец presentation state — родительский VM/coordinator, не глобальный singleton без нужды.
|
|
25
|
+
|
|
26
|
+
## Требование к агенту
|
|
27
|
+
|
|
28
|
+
Копировать паттерн ближайшего Feature из `reference-features`. Не тащить networking в навигационный слой.
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
# `.claude/skills` (preset ios-swift)
|
|
2
|
+
|
|
3
|
+
| Skill | Назначение |
|
|
4
|
+
|-------|------------|
|
|
5
|
+
| `feature-delivery` | Domain → Data → VM → View → tests → post-change-build |
|
|
6
|
+
| `code-review` | iOS MR checklist |
|
|
7
|
+
| `unit-testing` | XCTest / Swift Testing |
|
|
8
|
+
| `xcuitest-e2e` | XCUITest plan/generate/heal (← next `playwright-e2e`) |
|
|
9
|
+
| `debug-investigation` | Runtime evidence before fix |
|
|
10
|
+
| `ci-investigation` | iOS CI red |
|
|
11
|
+
| `technical-retro` | Retro facilitation |
|
|
12
|
+
|
|
13
|
+
Копируется в `.claude/skills/` при init.
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: ci-investigation
|
|
3
|
+
description: Investigates failing CI checks on PRs and branches — xcodebuild, SwiftLint, unit, XCUITest — with local reproduction and minimal fixes. Use when CI is red or for ci-fix pipeline tasks.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# CI Investigation (iOS)
|
|
7
|
+
|
|
8
|
+
## Workflow
|
|
9
|
+
|
|
10
|
+
1. Identify the **first failing check** (compile, lint, unit, XCUITest, signing, SPM).
|
|
11
|
+
2. Capture error output — ignore cascading failures until root cause is found.
|
|
12
|
+
3. Reproduce locally with the same scheme/destination CI uses (`tooling-and-review/xcode-tooling.md`):
|
|
13
|
+
- `xcodebuild build` / `xcodebuild test`
|
|
14
|
+
- SwiftLint / SwiftFormat scripts as in repo CI
|
|
15
|
+
- affected XCUITest if UI job failed
|
|
16
|
+
4. Inspect git diff for changed files related to the failure.
|
|
17
|
+
5. Apply **minimal fix** — no unrelated refactors.
|
|
18
|
+
|
|
19
|
+
## Artifact
|
|
20
|
+
|
|
21
|
+
Write `ci-report.md` under the task slug folder (`.claude/team/tasks/<slug>/`):
|
|
22
|
+
|
|
23
|
+
- Failed check name and log excerpt
|
|
24
|
+
- Root cause classification
|
|
25
|
+
- Fix applied (or handoff to feature-developer)
|
|
26
|
+
- `resolved: true|false`
|
|
27
|
+
- Validation commands and results
|
|
28
|
+
|
|
29
|
+
## Handoff Rules
|
|
30
|
+
|
|
31
|
+
- Config-only or one-line fixes → fix in place, re-run check.
|
|
32
|
+
- Missing tests or architecture work → document and route to `feature-developer` or `qa-tester`.
|
|
33
|
+
- Flaky XCUITest → prefer `xcuitest-test-healer` after ci-investigator identifies the case.
|
|
34
|
+
|
|
35
|
+
## Validation
|
|
36
|
+
|
|
37
|
+
Always re-run the failing command locally before marking complete. If environment blocks execution (no simulator), state the exact command and blocker.
|
|
38
|
+
|
|
39
|
+
Never run yarn/`lint:js`/Playwright — wrong stack.
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: code-review
|
|
3
|
+
description: Reviews pull requests, merge requests, git diffs, and branch changes using iOS architecture, SwiftUI, networking, and testing standards. Use when the user asks for review or when code-reviewer runs in an agent pipeline.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Code Review (iOS)
|
|
7
|
+
|
|
8
|
+
## Inputs
|
|
9
|
+
|
|
10
|
+
Use the local repository as the source of truth: `git status`, `git diff`, task artifacts under `.claude/team/tasks/<slug>/` when present, and opened files. Do not invent hosting metadata such as labels, CI status, or reviewers.
|
|
11
|
+
|
|
12
|
+
## Review Order
|
|
13
|
+
|
|
14
|
+
1. Understand the intent and affected Feature layers (Presentation / Domain / Data).
|
|
15
|
+
2. Check correctness and regressions first.
|
|
16
|
+
3. Verify architecture boundaries (`architecture/boundaries.md`): View ≠ API/DTO; ViewModel ≠ Data impl; Domain ≠ SwiftUI; Data ≠ Presentation.
|
|
17
|
+
4. Check DI composition in `App/`, SPM public API (`architecture/module-public-api.md`), and no deep-imports across Features.
|
|
18
|
+
5. Review Swift concurrency and conventions (`stack/swift-conventions.md`): `@MainActor`, typed errors, force unwrap.
|
|
19
|
+
6. Review SwiftUI thinness, Design System usage, accessibility identifiers (`ui-and-accessibility/swiftui.md`).
|
|
20
|
+
7. Check tests: unit for mapper/domain/VM (`testing/unit.md`); XCUITest for user flows (`testing/ui.md`).
|
|
21
|
+
8. Report validation gaps: `xcodebuild`, SwiftLint, or relevant tests not run (`tooling-and-review/xcode-tooling.md`, `tooling-and-review/post-change-build.md`).
|
|
22
|
+
|
|
23
|
+
## Output
|
|
24
|
+
|
|
25
|
+
Lead with findings ordered by severity. Each finding should include the file, the problem, impact, and a concrete fix direction. If there are no findings, say so and call out remaining test or validation risk.
|
|
26
|
+
|
|
27
|
+
For agent team tasks, write `.claude/team/tasks/<slug>/review.md` and set `status.json` to `completed` or `changes_requested`.
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: debug-investigation
|
|
3
|
+
description: Investigates bugs, failing tests, crashes, and incorrect behavior with runtime evidence before applying minimal fixes. Use for bugfix tasks, debugger agent runs, regressions, and flaky test diagnosis.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Debug Investigation (iOS)
|
|
7
|
+
|
|
8
|
+
## Process
|
|
9
|
+
|
|
10
|
+
1. Reproduce the issue or collect the closest available evidence: Xcode console, lldb backtrace, crash log, failing XCTest/XCUITest output, Instruments note, or user steps.
|
|
11
|
+
2. Define expected vs actual behavior in one sentence.
|
|
12
|
+
3. Trace the failing path through the smallest relevant Feature slice (Presentation → Domain → Data).
|
|
13
|
+
4. Identify the root cause before editing. Avoid broad refactors during bugfixes.
|
|
14
|
+
5. Apply the smallest fix that preserves existing architecture and public contracts.
|
|
15
|
+
6. Add or update a regression XCTest when the behavior is domain/VM logic or likely to recur.
|
|
16
|
+
7. Run the narrow failing check first (`xcodebuild test` for the affected target), then broader build validation if needed (`tooling-and-review/xcode-tooling.md`).
|
|
17
|
+
|
|
18
|
+
## Artifacts
|
|
19
|
+
|
|
20
|
+
For agent team tasks, write `.claude/team/tasks/<slug>/debug-report.md` with:
|
|
21
|
+
|
|
22
|
+
- Reproduction steps or evidence source.
|
|
23
|
+
- Root cause.
|
|
24
|
+
- Fix scope (`fixApplied`).
|
|
25
|
+
- Regression coverage.
|
|
26
|
+
- Remaining risk.
|
|
27
|
+
|
|
28
|
+
Update `status.json` when complete.
|
|
29
|
+
|
|
30
|
+
Do not use browser/Playwright tooling — this is an Xcode stack.
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: feature-delivery
|
|
3
|
+
description: Delivers iOS Swift/SwiftUI features end-to-end across Domain, Data, ViewModels, Views, tests, and post-change-build validation. Use when implementing or extending a feature, especially through /task or feature-developer.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Feature Delivery (iOS)
|
|
7
|
+
|
|
8
|
+
1. Read task brief, acceptance criteria, and decomposition if present.
|
|
9
|
+
2. Read `architecture/feature-delivery.md` and `architecture/reference-features.md` — Domain → Data → ViewModel → View → tests; mirror the closest Feature.
|
|
10
|
+
3. Wire DI in `App/` composition root; keep Views thin; keep DTOs out of ViewModels.
|
|
11
|
+
4. Add or update focused XCTest for mappers / use cases / ViewModels (`testing/unit.md`).
|
|
12
|
+
5. After Swift edits: **invoke** `tooling-and-review/post-change-build.md` (+ `tooling-and-review/xcode-tooling.md`). Pipeline: scoped build OK if next step is `build-verifier`.
|
|
13
|
+
|
|
14
|
+
## Do / Don't
|
|
15
|
+
|
|
16
|
+
- **Do** follow existing Feature folder layout and public module APIs.
|
|
17
|
+
- **Do** add `accessibilityIdentifier`s for new interactive UI when UI tests are in scope.
|
|
18
|
+
- **Don't** introduce TCA/SwiftData/etc. unless the repo already uses them.
|
|
19
|
+
- **Don't** use yarn, Playwright, or `app/src` paths — wrong stack.
|
|
20
|
+
|
|
21
|
+
## Preset packaging note
|
|
22
|
+
|
|
23
|
+
When editing **ai-rules ios-swift preset** sources (agents, hooks, rules) rather than an app Feature: keep Cursor and Claude trees in sync where applicable, and **fork / verify hook handoffs** (`hooks/chain-team-phases.sh`, guard scripts, team path conventions) so Cursor (`.cursor/team`) and Claude (`.claude/team`) do not regress against each other or against the next preset templates.
|
|
24
|
+
|
|
25
|
+
## Handoff
|
|
26
|
+
|
|
27
|
+
Summarize by layer, validation results, and known gaps. Agent team: update `.claude/team/tasks/<slug>/status.json`.
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: technical-retro
|
|
3
|
+
description: Facilitates technical retrospectives for tasks, sprints, incidents, releases, and agent-team pipelines. Use when the user asks for retro, postmortem, process review, or action items after delivery.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Technical Retro
|
|
7
|
+
|
|
8
|
+
Same structure as next technical-retro skill. For `/task` pipelines include router, analyst, developer, **build-verifier** (xcodebuild), reviewer, QA/XCUITest, hooks, rules.
|
|
9
|
+
|
|
10
|
+
Preset feedback: propose updates to `.claude/rules|agents|skills` — do not apply without approval.
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: unit-testing
|
|
3
|
+
description: Plans, generates, and heals XCTest / Swift Testing for mappers, use cases, and ViewModels using *Tests targets and tests-unit rules. Use for unit test planning, generation, or fixing failing unit tests.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Unit Testing (iOS)
|
|
7
|
+
|
|
8
|
+
## Project Layout
|
|
9
|
+
|
|
10
|
+
- Unit targets: `*Tests/` colocated or parallel to Feature — **as in the Xcode project**.
|
|
11
|
+
- Framework: XCTest or Swift Testing per project convention.
|
|
12
|
+
- Do **not** create Jest/Vitest `*.spec.ts` files.
|
|
13
|
+
|
|
14
|
+
Follow `testing/unit.md` (Cursor `.mdc` / Claude `testing/unit.md` depending on preset).
|
|
15
|
+
|
|
16
|
+
## Planner
|
|
17
|
+
|
|
18
|
+
Write or update `.claude/team/tasks/<slug>/unit-test-plan.md`.
|
|
19
|
+
|
|
20
|
+
Each scenario needs a Russian `test` / `@Test` title (capital letter after each sentence). Cover mappers, use cases, ViewModel state branches, and mocked client/repository behavior per AC.
|
|
21
|
+
|
|
22
|
+
## Generator
|
|
23
|
+
|
|
24
|
+
Implement tests from `unit-test-plan.md` into the correct `*Tests` target. Reuse TestSupport / protocol mocks. Do not change production code.
|
|
25
|
+
|
|
26
|
+
## Healer
|
|
27
|
+
|
|
28
|
+
Fix mocks, async/MainActor timing, and fixtures — preserve business assertions. Use `unit-test-plan.md` and `brief.md` as the behavior contract.
|
|
29
|
+
|
|
30
|
+
## Validation
|
|
31
|
+
|
|
32
|
+
Run affected unit tests via `xcodebuild test` (`tooling-and-review/xcode-tooling.md`) when feasible. Report command, pass/fail, and remaining gaps vs plan.
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: xcuitest-e2e
|
|
3
|
+
description: Plans, generates, and heals XCUITest UI tests using *UITests targets, accessibility identifiers, and screen objects. Use for UI test planning, generation, or fixing flaky XCUITest.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# XCUITest E2E
|
|
7
|
+
|
|
8
|
+
## Project Layout
|
|
9
|
+
|
|
10
|
+
- UI Test target: `*UITests/` (as in the Xcode project).
|
|
11
|
+
- Optional plans: `*.cases.md` if the repo uses them.
|
|
12
|
+
- Screen/Page objects keyed by `accessibilityIdentifier` (`{screen}__{element}`).
|
|
13
|
+
- Shared helpers: `UITestSupport/` or equivalent — follow existing patterns.
|
|
14
|
+
|
|
15
|
+
Follow `testing/ui.md`. Agents: `xcuitest-test-{planner,generator,healer}`.
|
|
16
|
+
|
|
17
|
+
**Never Playwright** and never `app/__tests__/e2e`.
|
|
18
|
+
|
|
19
|
+
## Planner
|
|
20
|
+
|
|
21
|
+
Create or update the relevant plan (`*.cases.md` or team notes). Each scenario should include title, preconditions, steps, and expected result. Cover happy path, important edge cases, validation, and error states. Russian titles with entity prefix when that is repo convention.
|
|
22
|
+
|
|
23
|
+
## Generator
|
|
24
|
+
|
|
25
|
+
Generate XCUITest from plans into the UITests target. Reuse screen objects. Keep test names aligned with scenario names. Prefer identifiers over coordinates.
|
|
26
|
+
|
|
27
|
+
## Healer
|
|
28
|
+
|
|
29
|
+
Fix waits, launch arguments, identifiers, or screen-object details without weakening business assertions. Use the matching plan / AC as the behavior contract.
|
|
30
|
+
|
|
31
|
+
## Validation
|
|
32
|
+
|
|
33
|
+
Run affected UI tests via `xcodebuild test` (`tooling-and-review/xcode-tooling.md`) when a simulator is available. If blocked, report the exact command and blocker.
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
# Agent team artifacts (ios-swift)
|
|
2
|
+
|
|
3
|
+
Каталог артефактов пайплайна «команда агентов» для iOS.
|
|
4
|
+
|
|
5
|
+
## Layout
|
|
6
|
+
|
|
7
|
+
```
|
|
8
|
+
.claude/team/ # Claude: .claude/team/
|
|
9
|
+
active-task.json
|
|
10
|
+
fixtures/
|
|
11
|
+
tasks/<slug>/
|
|
12
|
+
pipeline.json
|
|
13
|
+
status.json
|
|
14
|
+
brief.md
|
|
15
|
+
decomposition.md
|
|
16
|
+
…
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
## Fixtures
|
|
20
|
+
|
|
21
|
+
| Fixture | Notes |
|
|
22
|
+
|---------|-------|
|
|
23
|
+
| `feature-full.json` | Full profile; QA scope `e2e-only` = **XCUITest**; Playwright stems in `skipped` |
|
|
24
|
+
| `feature-light.json` | developer → build-verifier |
|
|
25
|
+
| `bugfix-standard.json` | debugger → developer (skipIf) → verifier → reviewer |
|
|
26
|
+
|
|
27
|
+
**Never** schedule Playwright-only steps without skip rationale. Use `xcuitest-test-*` for UI-test-only intents.
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
{
|
|
2
|
+
"slug": "example-bugfix-standard",
|
|
3
|
+
"intent": "bugfix",
|
|
4
|
+
"profile": "standard",
|
|
5
|
+
"summary": "Regression fix with review",
|
|
6
|
+
"steps": [
|
|
7
|
+
{
|
|
8
|
+
"agent": "debugger",
|
|
9
|
+
"label": "Root cause"
|
|
10
|
+
},
|
|
11
|
+
{
|
|
12
|
+
"agent": "feature-developer",
|
|
13
|
+
"label": "Fix if needed",
|
|
14
|
+
"skipIf": "debugger.fixed"
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
"agent": "build-verifier",
|
|
18
|
+
"label": "Validation gate"
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
"agent": "code-reviewer",
|
|
22
|
+
"label": "Code review"
|
|
23
|
+
}
|
|
24
|
+
],
|
|
25
|
+
"humanGates": [],
|
|
26
|
+
"autoChain": true,
|
|
27
|
+
"skipped": [
|
|
28
|
+
{
|
|
29
|
+
"agent": "playwright-test-planner",
|
|
30
|
+
"reason": "iOS uses XCUITest — not in this bugfix path"
|
|
31
|
+
}
|
|
32
|
+
]
|
|
33
|
+
}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
{
|
|
2
|
+
"slug": "example-feature-full",
|
|
3
|
+
"intent": "feature",
|
|
4
|
+
"profile": "full",
|
|
5
|
+
"summary": "Multi-layer Feature with XCUITest coverage",
|
|
6
|
+
"steps": [
|
|
7
|
+
{
|
|
8
|
+
"agent": "task-analyst",
|
|
9
|
+
"label": "Clarify and decompose"
|
|
10
|
+
},
|
|
11
|
+
{
|
|
12
|
+
"agent": "feature-developer",
|
|
13
|
+
"label": "Implement + unit tests",
|
|
14
|
+
"scope": "unit-in-dev"
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
"agent": "build-verifier",
|
|
18
|
+
"label": "xcodebuild + lint + unit smoke"
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
"agent": "code-reviewer",
|
|
22
|
+
"label": "Code review"
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
"agent": "qa-tester",
|
|
26
|
+
"label": "XCUITest",
|
|
27
|
+
"scope": "e2e-only"
|
|
28
|
+
}
|
|
29
|
+
],
|
|
30
|
+
"humanGates": [
|
|
31
|
+
"after:task-analyst"
|
|
32
|
+
],
|
|
33
|
+
"autoChain": true,
|
|
34
|
+
"skipped": [
|
|
35
|
+
{
|
|
36
|
+
"agent": "playwright-test-planner",
|
|
37
|
+
"reason": "iOS uses XCUITest — see xcuitest-test-* agents"
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
"agent": "playwright-test-generator",
|
|
41
|
+
"reason": "iOS uses XCUITest"
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
"agent": "playwright-test-healer",
|
|
45
|
+
"reason": "iOS uses XCUITest"
|
|
46
|
+
}
|
|
47
|
+
]
|
|
48
|
+
}
|