agentic-team 0.0.0-stage → 6.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (121) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +189 -2
  3. package/bin/build-template.js +208 -0
  4. package/bin/index.js +1334 -0
  5. package/bin/platforms.js +510 -0
  6. package/package.json +41 -4
  7. package/template/.claude-plugin/plugin.json +10 -0
  8. package/template/.orchestra/README.md +391 -0
  9. package/template/.orchestra/blueprints/README.md +87 -0
  10. package/template/.orchestra/blueprints/api-only.md +46 -0
  11. package/template/.orchestra/blueprints/component-crud-resource.md +25 -0
  12. package/template/.orchestra/blueprints/saas-starter.md +69 -0
  13. package/template/.orchestra/config.yml +293 -0
  14. package/template/.orchestra/roles/orchestrator.md +105 -0
  15. package/template/.orchestra/roles/product-manager.md +439 -0
  16. package/template/.orchestra/scripts/compact-diff.awk +45 -0
  17. package/template/.orchestra/scripts/context.mjs +373 -0
  18. package/template/.orchestra/stacks/README.md +81 -0
  19. package/template/.orchestra/stacks/_lib/common.sh +3095 -0
  20. package/template/.orchestra/stacks/_repo/setup.sh +1113 -0
  21. package/template/.orchestra/stacks/backend-hono/claude/commands/endpoint.md +13 -0
  22. package/template/.orchestra/stacks/backend-hono/claude/skills/api-endpoint/SKILL.md +111 -0
  23. package/template/.orchestra/stacks/backend-hono/claude/skills/testing/SKILL.md +75 -0
  24. package/template/.orchestra/stacks/backend-hono/setup.sh +5945 -0
  25. package/template/.orchestra/stacks/backend-hono/stack.md +195 -0
  26. package/template/.orchestra/stacks/mobile-android-native/claude/commands/component.md +13 -0
  27. package/template/.orchestra/stacks/mobile-android-native/claude/skills/design-component/SKILL.md +58 -0
  28. package/template/.orchestra/stacks/mobile-android-native/setup.sh +607 -0
  29. package/template/.orchestra/stacks/mobile-android-native/stack.md +138 -0
  30. package/template/.orchestra/stacks/mobile-expo/claude/commands/component.md +12 -0
  31. package/template/.orchestra/stacks/mobile-expo/claude/skills/design-component/SKILL.md +92 -0
  32. package/template/.orchestra/stacks/mobile-expo/setup.sh +470 -0
  33. package/template/.orchestra/stacks/mobile-expo/stack.md +141 -0
  34. package/template/.orchestra/stacks/mobile-ios-native/claude/commands/component.md +12 -0
  35. package/template/.orchestra/stacks/mobile-ios-native/claude/skills/design-component/SKILL.md +58 -0
  36. package/template/.orchestra/stacks/mobile-ios-native/setup.sh +468 -0
  37. package/template/.orchestra/stacks/mobile-ios-native/stack.md +130 -0
  38. package/template/.orchestra/stacks/web-nextjs/claude/commands/component.md +12 -0
  39. package/template/.orchestra/stacks/web-nextjs/claude/skills/design-component/SKILL.md +100 -0
  40. package/template/.orchestra/stacks/web-nextjs/claude/skills/design-tokens/SKILL.md +61 -0
  41. package/template/.orchestra/stacks/web-nextjs/setup.sh +128 -0
  42. package/template/.orchestra/stacks/web-nextjs/stack.md +170 -0
  43. package/template/.orchestra/stacks/web-vite-react/claude/commands/component.md +12 -0
  44. package/template/.orchestra/stacks/web-vite-react/claude/skills/design-component/SKILL.md +100 -0
  45. package/template/.orchestra/stacks/web-vite-react/claude/skills/design-tokens/SKILL.md +61 -0
  46. package/template/.orchestra/stacks/web-vite-react/setup.sh +185 -0
  47. package/template/.orchestra/stacks/web-vite-react/stack.md +177 -0
  48. package/template/.orchestra/trackers/github.sh +467 -0
  49. package/template/CLAUDE.md +54 -0
  50. package/template/agents/architect.md +83 -0
  51. package/template/agents/engineer-high.md +17 -0
  52. package/template/agents/engineer-low.md +17 -0
  53. package/template/agents/engineer-max.md +17 -0
  54. package/template/agents/engineer-medium.md +17 -0
  55. package/template/agents/engineer-xhigh.md +17 -0
  56. package/template/agents/lead.md +925 -0
  57. package/template/agents/milestone-reviewer.md +65 -0
  58. package/template/agents/orchestrator.md +105 -0
  59. package/template/agents/product-manager.md +439 -0
  60. package/template/agents/re-reviewer.md +25 -0
  61. package/template/agents/reviewer.md +303 -0
  62. package/template/agents/scaffolder.md +206 -0
  63. package/template/agents/tracker.md +202 -0
  64. package/template/commands/blueprint.md +23 -0
  65. package/template/commands/create-role.md +64 -0
  66. package/template/commands/export.md +45 -0
  67. package/template/commands/help.md +56 -0
  68. package/template/commands/hotfix.md +14 -0
  69. package/template/commands/orchestrator.md +12 -0
  70. package/template/commands/pm.md +18 -0
  71. package/template/commands/rewind.md +63 -0
  72. package/template/commands/setup.md +15 -0
  73. package/template/commands/start.md +29 -0
  74. package/template/commands/status.md +11 -0
  75. package/template/commands/sync.md +76 -0
  76. package/template/commands/verifier.md +53 -0
  77. package/template/hooks/audit-context.sh +166 -0
  78. package/template/hooks/enforce-role.sh +193 -0
  79. package/template/hooks/protect-system-files.sh +123 -0
  80. package/template/hooks/review-rounds.sh +172 -0
  81. package/template/rules/acceptance-check.orchestra.md +11 -0
  82. package/template/rules/analytics-kpi.orchestra.md +56 -0
  83. package/template/rules/code-standards.orchestra.md +35 -0
  84. package/template/rules/comments.orchestra.md +77 -0
  85. package/template/rules/commit-format.orchestra.md +20 -0
  86. package/template/rules/dependency-upgrade.orchestra.md +112 -0
  87. package/template/rules/design-parity.orchestra.md +181 -0
  88. package/template/rules/observability.orchestra.md +121 -0
  89. package/template/rules/performance.orchestra.md +190 -0
  90. package/template/rules/phase-limits.orchestra.md +3 -0
  91. package/template/rules/pull-request.orchestra.md +218 -0
  92. package/template/rules/role-boundaries.orchestra.md +132 -0
  93. package/template/rules/security.orchestra.md +106 -0
  94. package/template/rules/stuck-detection.orchestra.md +25 -0
  95. package/template/rules/testing-standards.orchestra.md +219 -0
  96. package/template/rules/tracker-authority.orchestra.md +198 -0
  97. package/template/rules/verification-gate.orchestra.md +56 -0
  98. package/template/skills/accessibility/SKILL.md +31 -0
  99. package/template/skills/android-testing/SKILL.md +112 -0
  100. package/template/skills/architecture/SKILL.md +175 -0
  101. package/template/skills/auth-setup/SKILL.md +105 -0
  102. package/template/skills/best-practices/SKILL.md +29 -0
  103. package/template/skills/code-optimizer/SKILL.md +27 -0
  104. package/template/skills/core-web-vitals/SKILL.md +32 -0
  105. package/template/skills/crud-api/SKILL.md +32 -0
  106. package/template/skills/debug/SKILL.md +28 -0
  107. package/template/skills/deployment/SKILL.md +104 -0
  108. package/template/skills/error-handling/SKILL.md +154 -0
  109. package/template/skills/frontend-design/SKILL.md +30 -0
  110. package/template/skills/fullstack-infrastructure/SKILL.md +108 -0
  111. package/template/skills/ios-testing/SKILL.md +100 -0
  112. package/template/skills/mobile-testing/SKILL.md +102 -0
  113. package/template/skills/observability/SKILL.md +91 -0
  114. package/template/skills/project-structure/SKILL.md +114 -0
  115. package/template/skills/push-notifications/SKILL.md +146 -0
  116. package/template/skills/react-best-practices/SKILL.md +31 -0
  117. package/template/skills/realtime/SKILL.md +146 -0
  118. package/template/skills/review/SKILL.md +82 -0
  119. package/template/skills/testing/SKILL.md +45 -0
  120. package/template/skills/web-quality-audit/SKILL.md +47 -0
  121. package/template/skills/web-testing/SKILL.md +120 -0
@@ -0,0 +1,138 @@
1
+ # Mobile — Native Android (Kotlin)
2
+
3
+ ## Who you are
4
+
5
+ You are a **senior native Android engineer**. Not a web developer writing
6
+ Kotlin. You know the lifecycle, you know configuration changes will happen,
7
+ and you know process death is a normal event your app must survive.
8
+
9
+ You treat leaked coroutines, blocked main threads, and state that dies on
10
+ rotation as bugs you catch yourself.
11
+
12
+ SOLID, KISS, YAGNI. No overengineering: no use-case class that forwards one
13
+ call, no DI module for a single object.
14
+
15
+ ## Structure
16
+
17
+ ```
18
+ app/ # features, screens, navigation
19
+ └── src/{main,test,androidTest}/kotlin/
20
+ designsystem/ # the UI kit. no business logic. ever.
21
+ └── src/{main,test}/kotlin/
22
+ ├── Tokens.kt
23
+ └── button/
24
+ └── Button.kt
25
+ gradle/libs.versions.toml # every dependency version, one file
26
+ ```
27
+
28
+ `designsystem` is a separate Gradle module so the boundary is enforced by
29
+ the build, not by discipline. It cannot import from `app`.
30
+
31
+ Every component gets its own package, mirroring the web, Expo, and iOS
32
+ stacks — one mental model across the repo.
33
+
34
+ ## Versions are explicit here
35
+
36
+ Unlike the npm stacks, dependency versions live in
37
+ `gradle/libs.versions.toml` and are written out in full. Gradle has no safe
38
+ `@latest`: dynamic versions (`1.+`) destroy build reproducibility and fail
39
+ in ways that are painful to debug.
40
+
41
+ The version catalog is exactly what Dependabot updates, so upgrades still
42
+ arrive as reviewable PRs — the mechanism differs from npm, the outcome does
43
+ not.
44
+
45
+ ## Order of work
46
+
47
+ Tokens before composables. Extract every axis from the design source —
48
+ color, spacing, typography, radii, elevation, motion — into `Tokens.kt` and
49
+ the Compose theme. Composables reference the theme, never a raw `Color(0xFF…)`
50
+ or a bare `16.dp`.
51
+
52
+ A composable with a hardcoded color or dimension is a bug.
53
+
54
+ ## No ready-made components
55
+
56
+ The kit is built from `androidx.compose.foundation` — `Box`, `Row`,
57
+ `Text`, `Modifier.clickable`, `LazyColumn`. Material3 components are not
58
+ used; we do not inherit someone else's design language.
59
+
60
+ Foundation is the substrate, not a UI kit. Wrapping it in our own
61
+ components is the job.
62
+
63
+ ## Kotlin rules
64
+
65
+ - Immutable by default. `val` unless mutation is required.
66
+ - Null safety is a design tool. `!!` outside tests is a defect.
67
+ - Structured concurrency: every coroutine has an owning scope. No
68
+ `GlobalScope`.
69
+ - Main thread does no I/O and no parsing. Ever.
70
+ - Sealed types for state that has a fixed set of shapes.
71
+
72
+ ## Compose
73
+
74
+ - Small composables. State hoisted to the lowest owner that can hold it.
75
+ - Survive configuration change and process death — `rememberSaveable` or a
76
+ `ViewModel` with `SavedStateHandle`, not bare `remember`.
77
+ - `LazyColumn` for lists, with stable keys. A `Column` over server data
78
+ will jank.
79
+ - No side effects in composition. Use the effect APIs.
80
+
81
+ ## Memory — the JVM collects, and still leaks
82
+
83
+ The collector frees what nothing references. What leaks on Android is a
84
+ reference held past its lifetime, and the usual holder is a `Context`:
85
+
86
+ - A `ViewModel`, a singleton or a companion object never holds an
87
+ `Activity`, a `View`, a `Fragment`, or a `Context` that is not the
88
+ application's. It outlives them; they cannot be freed.
89
+ - A `Flow` is collected inside `repeatOnLifecycle` or `collectAsStateWithLifecycle`,
90
+ never from a scope that survives the screen. Structured concurrency — the
91
+ rule above — is what ends the coroutine when the owner goes.
92
+ - Listeners registered on a system service, a sensor, a broadcast — are
93
+ unregistered in the matching lifecycle callback. Registration without the
94
+ pair is a leak.
95
+ - In composition, allocation is the recomposition cost. An object built in
96
+ a composable body is rebuilt every recomposition; `remember` it. A lambda
97
+ that captures unstable state recomposes its caller. Nothing is created
98
+ inside a `LazyColumn` item that could be created once outside it.
99
+ - **LeakCanary is in the debug build.** It watches destroyed activities,
100
+ fragments, view models and views, and reports a retained one with the
101
+ chain that holds it — so a leak shows up while the screen is being built,
102
+ not in a crash report. A LeakCanary notification is a defect to fix, not
103
+ to dismiss.
104
+
105
+ ## Testing
106
+
107
+ Coverage target is effectively total. The deciding rule:
108
+
109
+ > If one of our functions calls into a third-party library, that function
110
+ > has a test. When Dependabot bumps the library and behavior changes, the
111
+ > test must fail.
112
+
113
+ - JUnit for logic, Compose UI tests for behavior.
114
+ - Paparazzi for screenshot tests — they run on the JVM, so no emulator is
115
+ needed in CI.
116
+ - Screenshots catch visual drift only. Behavior needs its own tests.
117
+ - Test light and dark, and the largest font scale.
118
+
119
+ ## Accessibility
120
+
121
+ Structural. Content descriptions on anything meaningful, `null` on anything
122
+ purely decorative — a described decoration is noise to a TalkBack user.
123
+ Minimum touch target 48×48dp. Layout survives the largest font scale.
124
+ TalkBack order must be sensible, not just complete.
125
+
126
+ ## Tooling
127
+
128
+ Gradle Kotlin DSL — everything is text and reviewable. Verification runs
129
+ through `./gradlew`, not npm; `.orchestra/config.yml` reflects that.
130
+
131
+ ## Toolchain
132
+
133
+ Gradle (`brew install gradle`), the Android SDK, and `ANDROID_HOME` set.
134
+ The scaffold assembles and tests as generated — `./verify.sh` runs compile,
135
+ test, and lint. Verified against a real build.
136
+
137
+ Note: AGP 9 has built-in Kotlin support. Do **not** add the
138
+ `org.jetbrains.kotlin.android` plugin — it fails the build.
@@ -0,0 +1,12 @@
1
+ Scaffold a new design system component.
2
+
3
+ Usage: `/web:component {Name}`
4
+
5
+ 1. Load the `design-component` skill and follow it exactly.
6
+ 2. Confirm every value the component needs has a token. If one is missing,
7
+ add it to `src/design/tokens.css` first — do not hardcode.
8
+ 3. Create `src/design/{Name}/` with the component, types, tests, fixture,
9
+ and `index.ts`.
10
+ 4. Export it from `src/design/index.ts`.
11
+ 5. Run `npm run typecheck && npm test && npm run lint`.
12
+ 6. Report the a11y checklist with each item explicitly checked or flagged.
@@ -0,0 +1,92 @@
1
+ ---
2
+ name: design-component
3
+ description: "Author a component in the design system — folder layout, API shape, tests, fixture, a11y. Use when adding or changing anything under src/design/."
4
+ ---
5
+
6
+ # Authoring a design system component
7
+
8
+ ## Folder
9
+
10
+ ```
11
+ src/design/{Name}/
12
+ ├── {Name}.tsx # the component, nothing else
13
+ ├── {Name}.test.tsx # interaction tests + one snapshot
14
+ ├── types.ts # props and any type this component owns
15
+ └── index.ts # public exports
16
+ ```
17
+
18
+ Then add the component to `src/design/index.ts`.
19
+
20
+ ## Before writing
21
+
22
+ 1. Does a token exist for every value you are about to use? If not, add the
23
+ token first. Never hardcode a color, radius, spacing, or duration.
24
+ 2. Are you using the right primitive? `Pressable` over `TouchableOpacity`,
25
+ `FlatList` over a mapped array. A `View` with an onPress is a defect.
26
+ 3. Does this component need to know anything about the product? If yes, it
27
+ does not belong in `src/design/`.
28
+
29
+ ## API
30
+
31
+ - `forwardRef` to the root element
32
+ - merge `className` in, do not overwrite the caller's
33
+ - spread remaining props onto the root
34
+ - variants and sizes are unions (`"primary" | "danger"`), never independent
35
+ booleans that can contradict each other
36
+ - no default that hides a required decision
37
+
38
+ ## Tests
39
+
40
+ Interaction first, snapshot second.
41
+
42
+ React Native Testing Library 14 — verified working shape. `render` is
43
+ **async** and queries come from `screen`, not from render's return value:
44
+
45
+ ```tsx
46
+ import { render, screen, userEvent } from "@testing-library/react-native";
47
+ import { Button } from "./Button";
48
+
49
+ test("fires onPress when pressed", async () => {
50
+ const user = userEvent.setup();
51
+ const onPress = jest.fn();
52
+ await render(<Button onPress={onPress} />);
53
+
54
+ await user.press(screen.getByRole("button"));
55
+
56
+ expect(onPress).toHaveBeenCalledTimes(1);
57
+ });
58
+
59
+ test("does not fire when disabled", async () => {
60
+ const user = userEvent.setup();
61
+ const onPress = jest.fn();
62
+ await render(<Button onPress={onPress} disabled />);
63
+
64
+ await user.press(screen.getByRole("button"));
65
+
66
+ expect(onPress).not.toHaveBeenCalled();
67
+ });
68
+ ```
69
+
70
+ `const { getByRole } = render(...)` does not work in v14 — render returns a
71
+ promise, and destructuring it silently yields undefined queries.
72
+
73
+ Also cover: accessibilityState for disabled/selected, and one snapshot per
74
+ component for markup drift.
75
+
76
+ If the component wraps a third-party library, test *our* wrapper. A
77
+ Dependabot bump that changes the library's behavior has to turn this suite
78
+ red — that is the entire reason the suite exists.
79
+
80
+ ## Accessibility checklist
81
+
82
+ - [ ] `accessibilityRole` set correctly
83
+ - [ ] `accessibilityLabel` present and meaningful
84
+ - [ ] `accessibilityState` reflects disabled/selected/checked
85
+ - [ ] touch target at least 44x44pt
86
+ - [ ] layout survives the largest system font scale
87
+ - [ ] contrast holds in both themes
88
+
89
+ ## Done means
90
+
91
+ Component, types, tests, barrel export, and the a11y checklist — all of
92
+ it. Verified on both iOS and Android; one platform is half an answer.