@intentsolutionsio/tonone 0.9.7

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 (330) hide show
  1. package/.claude-plugin/CLAUDE.md +11 -0
  2. package/.claude-plugin/marketplace.json +2178 -0
  3. package/.claude-plugin/plugin.json +135 -0
  4. package/LICENSE +21 -0
  5. package/README.md +462 -0
  6. package/agents/apex.md +247 -0
  7. package/agents/atlas.md +181 -0
  8. package/agents/cortex.md +173 -0
  9. package/agents/crest.md +130 -0
  10. package/agents/draft.md +190 -0
  11. package/agents/echo.md +146 -0
  12. package/agents/flux.md +145 -0
  13. package/agents/forge.md +121 -0
  14. package/agents/form.md +244 -0
  15. package/agents/helm.md +180 -0
  16. package/agents/lens.md +145 -0
  17. package/agents/lumen.md +139 -0
  18. package/agents/pave.md +169 -0
  19. package/agents/pitch.md +177 -0
  20. package/agents/prism.md +181 -0
  21. package/agents/proof.md +205 -0
  22. package/agents/relay.md +147 -0
  23. package/agents/spine.md +207 -0
  24. package/agents/surge.md +127 -0
  25. package/agents/touch.md +185 -0
  26. package/agents/vigil.md +165 -0
  27. package/agents/volt.md +184 -0
  28. package/agents/warden.md +172 -0
  29. package/package.json +48 -0
  30. package/skills/apex/SKILL.md +32 -0
  31. package/skills/apex-plan/.claude-plugin/plugin.json +16 -0
  32. package/skills/apex-plan/SKILL.md +59 -0
  33. package/skills/apex-recon/.claude-plugin/plugin.json +16 -0
  34. package/skills/apex-recon/SKILL.md +91 -0
  35. package/skills/apex-review/.claude-plugin/plugin.json +16 -0
  36. package/skills/apex-review/SKILL.md +53 -0
  37. package/skills/apex-status/.claude-plugin/plugin.json +16 -0
  38. package/skills/apex-status/SKILL.md +42 -0
  39. package/skills/apex-takeover/.claude-plugin/plugin.json +16 -0
  40. package/skills/apex-takeover/SKILL.md +50 -0
  41. package/skills/atlas/SKILL.md +34 -0
  42. package/skills/atlas-adr/.claude-plugin/plugin.json +16 -0
  43. package/skills/atlas-adr/SKILL.md +147 -0
  44. package/skills/atlas-changelog/.claude-plugin/plugin.json +16 -0
  45. package/skills/atlas-changelog/SKILL.md +156 -0
  46. package/skills/atlas-map/.claude-plugin/plugin.json +16 -0
  47. package/skills/atlas-map/SKILL.md +183 -0
  48. package/skills/atlas-onboard/.claude-plugin/plugin.json +16 -0
  49. package/skills/atlas-onboard/SKILL.md +138 -0
  50. package/skills/atlas-present/.claude-plugin/plugin.json +16 -0
  51. package/skills/atlas-present/SKILL.md +214 -0
  52. package/skills/atlas-recon/.claude-plugin/plugin.json +16 -0
  53. package/skills/atlas-recon/SKILL.md +101 -0
  54. package/skills/atlas-report/.claude-plugin/plugin.json +16 -0
  55. package/skills/atlas-report/SKILL.md +304 -0
  56. package/skills/cortex/SKILL.md +32 -0
  57. package/skills/cortex-eval/.claude-plugin/plugin.json +16 -0
  58. package/skills/cortex-eval/SKILL.md +143 -0
  59. package/skills/cortex-integrate/.claude-plugin/plugin.json +16 -0
  60. package/skills/cortex-integrate/SKILL.md +218 -0
  61. package/skills/cortex-model/.claude-plugin/plugin.json +16 -0
  62. package/skills/cortex-model/SKILL.md +138 -0
  63. package/skills/cortex-prompt/.claude-plugin/plugin.json +16 -0
  64. package/skills/cortex-prompt/SKILL.md +246 -0
  65. package/skills/cortex-recon/.claude-plugin/plugin.json +16 -0
  66. package/skills/cortex-recon/SKILL.md +156 -0
  67. package/skills/crest/SKILL.md +32 -0
  68. package/skills/crest-compete/.claude-plugin/plugin.json +16 -0
  69. package/skills/crest-compete/SKILL.md +158 -0
  70. package/skills/crest-narrative/.claude-plugin/plugin.json +16 -0
  71. package/skills/crest-narrative/SKILL.md +124 -0
  72. package/skills/crest-okr/.claude-plugin/plugin.json +16 -0
  73. package/skills/crest-okr/SKILL.md +119 -0
  74. package/skills/crest-recon/.claude-plugin/plugin.json +16 -0
  75. package/skills/crest-recon/SKILL.md +91 -0
  76. package/skills/crest-roadmap/.claude-plugin/plugin.json +16 -0
  77. package/skills/crest-roadmap/SKILL.md +129 -0
  78. package/skills/draft/SKILL.md +34 -0
  79. package/skills/draft-flow/.claude-plugin/plugin.json +16 -0
  80. package/skills/draft-flow/SKILL.md +93 -0
  81. package/skills/draft-ia/.claude-plugin/plugin.json +16 -0
  82. package/skills/draft-ia/SKILL.md +204 -0
  83. package/skills/draft-landing/.claude-plugin/plugin.json +16 -0
  84. package/skills/draft-landing/SKILL.md +60 -0
  85. package/skills/draft-patterns/.claude-plugin/plugin.json +16 -0
  86. package/skills/draft-patterns/SKILL.md +55 -0
  87. package/skills/draft-recon/.claude-plugin/plugin.json +16 -0
  88. package/skills/draft-recon/SKILL.md +108 -0
  89. package/skills/draft-review/.claude-plugin/plugin.json +16 -0
  90. package/skills/draft-review/SKILL.md +131 -0
  91. package/skills/draft-wireframe/.claude-plugin/plugin.json +16 -0
  92. package/skills/draft-wireframe/SKILL.md +167 -0
  93. package/skills/echo/SKILL.md +32 -0
  94. package/skills/echo-feedback/.claude-plugin/plugin.json +16 -0
  95. package/skills/echo-feedback/SKILL.md +129 -0
  96. package/skills/echo-interview/.claude-plugin/plugin.json +16 -0
  97. package/skills/echo-interview/SKILL.md +189 -0
  98. package/skills/echo-jobs/.claude-plugin/plugin.json +16 -0
  99. package/skills/echo-jobs/SKILL.md +193 -0
  100. package/skills/echo-recon/.claude-plugin/plugin.json +16 -0
  101. package/skills/echo-recon/SKILL.md +96 -0
  102. package/skills/echo-segment/.claude-plugin/plugin.json +16 -0
  103. package/skills/echo-segment/SKILL.md +105 -0
  104. package/skills/flux/SKILL.md +33 -0
  105. package/skills/flux-health/.claude-plugin/plugin.json +16 -0
  106. package/skills/flux-health/SKILL.md +97 -0
  107. package/skills/flux-migrate/.claude-plugin/plugin.json +16 -0
  108. package/skills/flux-migrate/SKILL.md +176 -0
  109. package/skills/flux-pipeline/.claude-plugin/plugin.json +16 -0
  110. package/skills/flux-pipeline/SKILL.md +86 -0
  111. package/skills/flux-query/.claude-plugin/plugin.json +16 -0
  112. package/skills/flux-query/SKILL.md +87 -0
  113. package/skills/flux-recon/.claude-plugin/plugin.json +16 -0
  114. package/skills/flux-recon/SKILL.md +101 -0
  115. package/skills/flux-schema/.claude-plugin/plugin.json +16 -0
  116. package/skills/flux-schema/SKILL.md +125 -0
  117. package/skills/forge/SKILL.md +33 -0
  118. package/skills/forge-audit/.claude-plugin/plugin.json +16 -0
  119. package/skills/forge-audit/SKILL.md +117 -0
  120. package/skills/forge-cost/.claude-plugin/plugin.json +16 -0
  121. package/skills/forge-cost/SKILL.md +144 -0
  122. package/skills/forge-diagnose/.claude-plugin/plugin.json +16 -0
  123. package/skills/forge-diagnose/SKILL.md +122 -0
  124. package/skills/forge-infra/.claude-plugin/plugin.json +16 -0
  125. package/skills/forge-infra/SKILL.md +169 -0
  126. package/skills/forge-network/.claude-plugin/plugin.json +16 -0
  127. package/skills/forge-network/SKILL.md +106 -0
  128. package/skills/forge-recon/.claude-plugin/plugin.json +16 -0
  129. package/skills/forge-recon/SKILL.md +143 -0
  130. package/skills/form/SKILL.md +40 -0
  131. package/skills/form-audit/.claude-plugin/plugin.json +16 -0
  132. package/skills/form-audit/SKILL.md +290 -0
  133. package/skills/form-brand/.claude-plugin/plugin.json +16 -0
  134. package/skills/form-brand/SKILL.md +214 -0
  135. package/skills/form-component/.claude-plugin/plugin.json +16 -0
  136. package/skills/form-component/SKILL.md +336 -0
  137. package/skills/form-deck/.claude-plugin/plugin.json +16 -0
  138. package/skills/form-deck/SKILL.md +263 -0
  139. package/skills/form-email/.claude-plugin/plugin.json +16 -0
  140. package/skills/form-email/SKILL.md +304 -0
  141. package/skills/form-exam/.claude-plugin/plugin.json +16 -0
  142. package/skills/form-exam/SKILL.md +103 -0
  143. package/skills/form-logo/.claude-plugin/plugin.json +16 -0
  144. package/skills/form-logo/SKILL.md +231 -0
  145. package/skills/form-mobile/.claude-plugin/plugin.json +16 -0
  146. package/skills/form-mobile/SKILL.md +276 -0
  147. package/skills/form-palette/.claude-plugin/plugin.json +16 -0
  148. package/skills/form-palette/SKILL.md +68 -0
  149. package/skills/form-social/.claude-plugin/plugin.json +16 -0
  150. package/skills/form-social/SKILL.md +272 -0
  151. package/skills/form-style/.claude-plugin/plugin.json +16 -0
  152. package/skills/form-style/SKILL.md +63 -0
  153. package/skills/form-tokens/.claude-plugin/plugin.json +16 -0
  154. package/skills/form-tokens/SKILL.md +760 -0
  155. package/skills/form-web/.claude-plugin/plugin.json +16 -0
  156. package/skills/form-web/SKILL.md +254 -0
  157. package/skills/helm/SKILL.md +32 -0
  158. package/skills/helm-arbiter/.claude-plugin/plugin.json +16 -0
  159. package/skills/helm-arbiter/SKILL.md +104 -0
  160. package/skills/helm-brief/.claude-plugin/plugin.json +16 -0
  161. package/skills/helm-brief/SKILL.md +105 -0
  162. package/skills/helm-handoff/.claude-plugin/plugin.json +16 -0
  163. package/skills/helm-handoff/SKILL.md +102 -0
  164. package/skills/helm-plan/.claude-plugin/plugin.json +16 -0
  165. package/skills/helm-plan/SKILL.md +73 -0
  166. package/skills/helm-recon/.claude-plugin/plugin.json +16 -0
  167. package/skills/helm-recon/SKILL.md +99 -0
  168. package/skills/lens/SKILL.md +33 -0
  169. package/skills/lens-audit/.claude-plugin/plugin.json +16 -0
  170. package/skills/lens-audit/SKILL.md +101 -0
  171. package/skills/lens-chart/.claude-plugin/plugin.json +16 -0
  172. package/skills/lens-chart/SKILL.md +59 -0
  173. package/skills/lens-dashboard/.claude-plugin/plugin.json +16 -0
  174. package/skills/lens-dashboard/SKILL.md +212 -0
  175. package/skills/lens-metrics/.claude-plugin/plugin.json +16 -0
  176. package/skills/lens-metrics/SKILL.md +298 -0
  177. package/skills/lens-recon/.claude-plugin/plugin.json +16 -0
  178. package/skills/lens-recon/SKILL.md +106 -0
  179. package/skills/lens-report/.claude-plugin/plugin.json +16 -0
  180. package/skills/lens-report/SKILL.md +158 -0
  181. package/skills/lumen/SKILL.md +32 -0
  182. package/skills/lumen-abtest/.claude-plugin/plugin.json +16 -0
  183. package/skills/lumen-abtest/SKILL.md +217 -0
  184. package/skills/lumen-funnel/.claude-plugin/plugin.json +16 -0
  185. package/skills/lumen-funnel/SKILL.md +108 -0
  186. package/skills/lumen-instrument/.claude-plugin/plugin.json +16 -0
  187. package/skills/lumen-instrument/SKILL.md +130 -0
  188. package/skills/lumen-metrics/.claude-plugin/plugin.json +16 -0
  189. package/skills/lumen-metrics/SKILL.md +189 -0
  190. package/skills/lumen-recon/.claude-plugin/plugin.json +16 -0
  191. package/skills/lumen-recon/SKILL.md +108 -0
  192. package/skills/pave/SKILL.md +32 -0
  193. package/skills/pave-audit/.claude-plugin/plugin.json +16 -0
  194. package/skills/pave-audit/SKILL.md +109 -0
  195. package/skills/pave-catalog/.claude-plugin/plugin.json +16 -0
  196. package/skills/pave-catalog/SKILL.md +202 -0
  197. package/skills/pave-env/.claude-plugin/plugin.json +16 -0
  198. package/skills/pave-env/SKILL.md +102 -0
  199. package/skills/pave-golden/.claude-plugin/plugin.json +16 -0
  200. package/skills/pave-golden/SKILL.md +173 -0
  201. package/skills/pave-recon/.claude-plugin/plugin.json +16 -0
  202. package/skills/pave-recon/SKILL.md +118 -0
  203. package/skills/pitch/SKILL.md +33 -0
  204. package/skills/pitch-copy/.claude-plugin/plugin.json +16 -0
  205. package/skills/pitch-copy/SKILL.md +133 -0
  206. package/skills/pitch-landing/.claude-plugin/plugin.json +16 -0
  207. package/skills/pitch-landing/SKILL.md +62 -0
  208. package/skills/pitch-launch/.claude-plugin/plugin.json +16 -0
  209. package/skills/pitch-launch/SKILL.md +222 -0
  210. package/skills/pitch-message/.claude-plugin/plugin.json +16 -0
  211. package/skills/pitch-message/SKILL.md +98 -0
  212. package/skills/pitch-position/.claude-plugin/plugin.json +16 -0
  213. package/skills/pitch-position/SKILL.md +195 -0
  214. package/skills/pitch-recon/.claude-plugin/plugin.json +16 -0
  215. package/skills/pitch-recon/SKILL.md +102 -0
  216. package/skills/prism/SKILL.md +34 -0
  217. package/skills/prism-audit/.claude-plugin/plugin.json +16 -0
  218. package/skills/prism-audit/SKILL.md +129 -0
  219. package/skills/prism-chart/.claude-plugin/plugin.json +16 -0
  220. package/skills/prism-chart/SKILL.md +56 -0
  221. package/skills/prism-component/.claude-plugin/plugin.json +16 -0
  222. package/skills/prism-component/SKILL.md +270 -0
  223. package/skills/prism-dashboard/.claude-plugin/plugin.json +16 -0
  224. package/skills/prism-dashboard/SKILL.md +108 -0
  225. package/skills/prism-recon/.claude-plugin/plugin.json +16 -0
  226. package/skills/prism-recon/SKILL.md +109 -0
  227. package/skills/prism-stack/.claude-plugin/plugin.json +16 -0
  228. package/skills/prism-stack/SKILL.md +58 -0
  229. package/skills/prism-ui/.claude-plugin/plugin.json +16 -0
  230. package/skills/prism-ui/SKILL.md +247 -0
  231. package/skills/proof/SKILL.md +33 -0
  232. package/skills/proof-api/.claude-plugin/plugin.json +16 -0
  233. package/skills/proof-api/SKILL.md +86 -0
  234. package/skills/proof-audit/.claude-plugin/plugin.json +16 -0
  235. package/skills/proof-audit/SKILL.md +97 -0
  236. package/skills/proof-design/.claude-plugin/plugin.json +16 -0
  237. package/skills/proof-design/SKILL.md +133 -0
  238. package/skills/proof-e2e/.claude-plugin/plugin.json +16 -0
  239. package/skills/proof-e2e/SKILL.md +309 -0
  240. package/skills/proof-recon/.claude-plugin/plugin.json +16 -0
  241. package/skills/proof-recon/SKILL.md +98 -0
  242. package/skills/proof-strategy/.claude-plugin/plugin.json +16 -0
  243. package/skills/proof-strategy/SKILL.md +150 -0
  244. package/skills/relay/SKILL.md +33 -0
  245. package/skills/relay-audit/.claude-plugin/plugin.json +16 -0
  246. package/skills/relay-audit/SKILL.md +101 -0
  247. package/skills/relay-deploy/.claude-plugin/plugin.json +16 -0
  248. package/skills/relay-deploy/SKILL.md +404 -0
  249. package/skills/relay-docker/.claude-plugin/plugin.json +16 -0
  250. package/skills/relay-docker/SKILL.md +73 -0
  251. package/skills/relay-pipeline/.claude-plugin/plugin.json +16 -0
  252. package/skills/relay-pipeline/SKILL.md +267 -0
  253. package/skills/relay-recon/.claude-plugin/plugin.json +16 -0
  254. package/skills/relay-recon/SKILL.md +108 -0
  255. package/skills/relay-ship/.claude-plugin/plugin.json +16 -0
  256. package/skills/relay-ship/SKILL.md +253 -0
  257. package/skills/spine/SKILL.md +33 -0
  258. package/skills/spine-api/.claude-plugin/plugin.json +16 -0
  259. package/skills/spine-api/SKILL.md +184 -0
  260. package/skills/spine-design/.claude-plugin/plugin.json +16 -0
  261. package/skills/spine-design/SKILL.md +193 -0
  262. package/skills/spine-perf/.claude-plugin/plugin.json +16 -0
  263. package/skills/spine-perf/SKILL.md +120 -0
  264. package/skills/spine-recon/.claude-plugin/plugin.json +16 -0
  265. package/skills/spine-recon/SKILL.md +130 -0
  266. package/skills/spine-review/.claude-plugin/plugin.json +16 -0
  267. package/skills/spine-review/SKILL.md +122 -0
  268. package/skills/spine-service/.claude-plugin/plugin.json +16 -0
  269. package/skills/spine-service/SKILL.md +77 -0
  270. package/skills/surge/SKILL.md +33 -0
  271. package/skills/surge-activation/.claude-plugin/plugin.json +16 -0
  272. package/skills/surge-activation/SKILL.md +130 -0
  273. package/skills/surge-experiment/.claude-plugin/plugin.json +16 -0
  274. package/skills/surge-experiment/SKILL.md +134 -0
  275. package/skills/surge-landing/.claude-plugin/plugin.json +16 -0
  276. package/skills/surge-landing/SKILL.md +65 -0
  277. package/skills/surge-plg/.claude-plugin/plugin.json +16 -0
  278. package/skills/surge-plg/SKILL.md +243 -0
  279. package/skills/surge-recon/.claude-plugin/plugin.json +16 -0
  280. package/skills/surge-recon/SKILL.md +109 -0
  281. package/skills/surge-retention/.claude-plugin/plugin.json +16 -0
  282. package/skills/surge-retention/SKILL.md +222 -0
  283. package/skills/tonone-onboard/.claude-plugin/plugin.json +17 -0
  284. package/skills/tonone-onboard/SKILL.md +158 -0
  285. package/skills/touch/SKILL.md +33 -0
  286. package/skills/touch-app/.claude-plugin/plugin.json +16 -0
  287. package/skills/touch-app/SKILL.md +335 -0
  288. package/skills/touch-audit/.claude-plugin/plugin.json +16 -0
  289. package/skills/touch-audit/SKILL.md +190 -0
  290. package/skills/touch-feature/.claude-plugin/plugin.json +16 -0
  291. package/skills/touch-feature/SKILL.md +242 -0
  292. package/skills/touch-recon/.claude-plugin/plugin.json +16 -0
  293. package/skills/touch-recon/SKILL.md +194 -0
  294. package/skills/touch-release/.claude-plugin/plugin.json +16 -0
  295. package/skills/touch-release/SKILL.md +216 -0
  296. package/skills/touch-ui/.claude-plugin/plugin.json +16 -0
  297. package/skills/touch-ui/SKILL.md +58 -0
  298. package/skills/vigil/SKILL.md +32 -0
  299. package/skills/vigil-alert/.claude-plugin/plugin.json +16 -0
  300. package/skills/vigil-alert/SKILL.md +291 -0
  301. package/skills/vigil-check/.claude-plugin/plugin.json +16 -0
  302. package/skills/vigil-check/SKILL.md +108 -0
  303. package/skills/vigil-incident/.claude-plugin/plugin.json +16 -0
  304. package/skills/vigil-incident/SKILL.md +152 -0
  305. package/skills/vigil-instrument/.claude-plugin/plugin.json +16 -0
  306. package/skills/vigil-instrument/SKILL.md +324 -0
  307. package/skills/vigil-recon/.claude-plugin/plugin.json +16 -0
  308. package/skills/vigil-recon/SKILL.md +114 -0
  309. package/skills/volt/SKILL.md +32 -0
  310. package/skills/volt-driver/.claude-plugin/plugin.json +16 -0
  311. package/skills/volt-driver/SKILL.md +112 -0
  312. package/skills/volt-firmware/.claude-plugin/plugin.json +16 -0
  313. package/skills/volt-firmware/SKILL.md +271 -0
  314. package/skills/volt-ota/.claude-plugin/plugin.json +16 -0
  315. package/skills/volt-ota/SKILL.md +312 -0
  316. package/skills/volt-power/.claude-plugin/plugin.json +16 -0
  317. package/skills/volt-power/SKILL.md +112 -0
  318. package/skills/volt-recon/.claude-plugin/plugin.json +16 -0
  319. package/skills/volt-recon/SKILL.md +100 -0
  320. package/skills/warden/SKILL.md +32 -0
  321. package/skills/warden-audit/.claude-plugin/plugin.json +16 -0
  322. package/skills/warden-audit/SKILL.md +103 -0
  323. package/skills/warden-harden/.claude-plugin/plugin.json +16 -0
  324. package/skills/warden-harden/SKILL.md +245 -0
  325. package/skills/warden-iam/.claude-plugin/plugin.json +16 -0
  326. package/skills/warden-iam/SKILL.md +102 -0
  327. package/skills/warden-recon/.claude-plugin/plugin.json +16 -0
  328. package/skills/warden-recon/SKILL.md +115 -0
  329. package/skills/warden-threat/.claude-plugin/plugin.json +16 -0
  330. package/skills/warden-threat/SKILL.md +155 -0
@@ -0,0 +1,335 @@
1
+ ---
2
+ name: touch-app
3
+ description: Produce a complete mobile app architecture design — platform choice, navigation structure, state management, data layer, key screens. Use when asked to "build a mobile app", "new app", "create iOS/Android app", "app architecture", or "cross-platform app".
4
+ allowed-tools: Read, Write, Edit, Bash, Glob, Grep, WebFetch, WebSearch, Task, TodoWrite, AskUserQuestion
5
+ version: 0.6.4
6
+ author: tonone-ai <hello@tonone.ai>
7
+ license: MIT
8
+ tags: ["ai-agency", "tonone"]
9
+ compatibility: "Designed for Claude Code"
10
+ ---
11
+
12
+ # Mobile App Architecture Design
13
+
14
+ You are Touch — the mobile engineer on the Engineering Team.
15
+
16
+ Follow the output format defined in docs/output-kit.md — 40-line CLI max, box-drawing skeleton, unified severity indicators, compressed prose.
17
+
18
+ Given a product description, produce the mobile app architecture. Make the platform choice and every major architectural decision. Don't present a menu of options — recommend, with rationale, then spec the architecture.
19
+
20
+ ## Step 0: Context Scan
21
+
22
+ Check for existing project signals before recommending from scratch:
23
+
24
+ ```bash
25
+ ls -la *.xcodeproj *.xcworkspace android/ ios/ 2>/dev/null
26
+ cat package.json 2>/dev/null | grep -E '"react-native"|"expo"|"flutter"'
27
+ cat pubspec.yaml 2>/dev/null | head -10
28
+ ls -la fastlane/ .github/workflows/ eas.json 2>/dev/null
29
+ ```
30
+
31
+ If a project exists, note what's already decided and build the architecture spec around it.
32
+
33
+ ## Step 1: Read the Product
34
+
35
+ Extract from the product description:
36
+
37
+ - Who is the primary user? (consumer, B2B, enterprise)
38
+ - What's the target market geography? (US/EU vs global vs emerging markets)
39
+ - What's the team's tech background? (JS, Swift, Kotlin, Dart)
40
+ - Does the app need deep platform APIs? (camera, health, AR, hardware)
41
+ - What's the timeline and team size?
42
+
43
+ ## Step 2: Produce the Architecture
44
+
45
+ Output the full architecture spec in this structure:
46
+
47
+ ---
48
+
49
+ ## Mobile App Architecture: [Product Name]
50
+
51
+ ### Platform Decision
52
+
53
+ **Recommended platform:** [iOS-first / Android-first / React Native (Expo) / Flutter]
54
+
55
+ **Rationale:** [2–3 sentences. Specific to this product's users, team, and timeline. Not generic pros/cons.]
56
+
57
+ **Expansion plan:** [When/what triggers adding the second platform — e.g., "Add Android after 500 iOS MAU and positive retention signal"]
58
+
59
+ **What this rules out:** [e.g., "Native Android until platform 2 — accept the tradeoff now, revisit at Series A"]
60
+
61
+ ---
62
+
63
+ ### Design Intelligence (via uiux)
64
+
65
+ After the platform decision is made, query platform-specific UI rules:
66
+
67
+ ```bash
68
+ python3 -m touch_agent.uiux search --domain app-interface --query "{chosen_platform}" --limit 5
69
+ python3 -m touch_agent.uiux search --domain stacks --query "{chosen_framework}" --limit 3
70
+ ```
71
+
72
+ Use results to:
73
+
74
+ - Validate platform choice against UI convention requirements (iOS vs Android)
75
+ - Apply framework-specific architecture patterns from stack guidelines
76
+ - Set performance budgets using platform-specific touch target and animation rules
77
+
78
+ ---
79
+
80
+ ### Architecture Pattern
81
+
82
+ **Pattern:** [MVVM / MVVM + service layer / MVVM + domain layer]
83
+
84
+ **Rationale:** [Why this complexity level fits this product. Flag if Clean Architecture is premature.]
85
+
86
+ **Layer breakdown:**
87
+
88
+ | Layer | Responsibility | Examples |
89
+ | --------- | ------------------------------------- | -------------------------- |
90
+ | View | Render state, emit user actions | Screens, components |
91
+ | ViewModel | Hold UI state, coordinate services | `[Feature]ViewModel` |
92
+ | Service | Data fetching, caching, platform APIs | `AuthService`, `APIClient` |
93
+ | Model | Plain data types, no logic | `User`, `Post`, `Order` |
94
+
95
+ _(Add Domain layer only if warranted — describe when the product warrants it)_
96
+
97
+ ---
98
+
99
+ ### Navigation Structure
100
+
101
+ **Pattern:** [Stack + Tabs / Stack only / Drawer + Stack]
102
+
103
+ **Auth gate:** Unauthenticated users see [Login/Onboarding], authenticated users enter [Home/Main Tab].
104
+
105
+ **Navigation map:**
106
+
107
+ ```
108
+ Root
109
+ ├── AuthStack (unauthenticated)
110
+ │ ├── OnboardingScreen
111
+ │ ├── LoginScreen
112
+ │ └── SignupScreen
113
+ └── MainTabs (authenticated)
114
+ ├── Tab 1: [Name] → [ScreenName]
115
+ │ └── [ChildScreen] (pushed)
116
+ ├── Tab 2: [Name] → [ScreenName]
117
+ │ └── [ChildScreen] (pushed)
118
+ └── Tab 3: [Name] → [ScreenName]
119
+ ```
120
+
121
+ **Deep link scheme:** `[appname]://[path]`
122
+
123
+ **Universal links domain:** `[domain]/app/[path]` (configure from day one — retrofitting is painful)
124
+
125
+ **Navigation library:** [React Navigation v7 / SwiftUI NavigationStack / Jetpack Compose NavHost / GoRouter]
126
+
127
+ ---
128
+
129
+ ### State Management
130
+
131
+ **Approach:** [chosen library/pattern + scope — global vs per-screen]
132
+
133
+ **What lives in global state:** [auth status, user profile, app-wide settings — keep this list short]
134
+
135
+ **What lives in local ViewModel state:** [everything else — screen-level data, loading states, form state]
136
+
137
+ **Server state:** [TanStack Query / SWR / custom cache layer] — handles fetch, cache, background refresh, and offline
138
+
139
+ **Rationale:** [Why this split. Flag if global state is being overused.]
140
+
141
+ ---
142
+
143
+ ### Data Layer
144
+
145
+ **API client:**
146
+
147
+ - Base URL: environment-variable driven (dev / staging / prod)
148
+ - Auth: [JWT Bearer / OAuth2 / API key] — injected via interceptor
149
+ - Retry: exponential backoff on 5xx, max 3 attempts
150
+ - Timeout: 10s request, 30s for uploads
151
+ - Error normalization: all errors convert to typed error model before hitting ViewModel
152
+
153
+ **Caching strategy:**
154
+
155
+ - [GET /resource] → cache [TTL] — show stale while revalidating
156
+ - [POST/PUT/DELETE] → optimistic update, rollback on failure
157
+ - Offline read: serve cache, show "last updated [time]" banner
158
+ - Offline write: queue mutations, replay on reconnect
159
+
160
+ **Local storage:**
161
+
162
+ - Secure (tokens, keys): [Keychain (iOS) / EncryptedSharedPreferences (Android) / Expo SecureStore]
163
+ - App data (cache, preferences): [SQLite via Drizzle/Expo SQLite / AsyncStorage / UserDefaults / Room]
164
+
165
+ ---
166
+
167
+ ### Key Screens
168
+
169
+ For each primary screen, specify:
170
+
171
+ #### [Screen Name]
172
+
173
+ **Purpose:** [one sentence]
174
+ **ViewModel state:**
175
+
176
+ ```
177
+ loading: boolean
178
+ data: [Type] | null
179
+ error: string | null
180
+ ```
181
+
182
+ **Primary actions:** [list of user actions this screen handles]
183
+ **API calls:** `[METHOD] /endpoint`
184
+ **Offline behavior:** [show cache / block / not applicable]
185
+
186
+ _(Repeat for each key screen — typically 4–8 screens for an MVP)_
187
+
188
+ ---
189
+
190
+ ### Auth Flow
191
+
192
+ **Method:** [Email/password + JWT / OAuth (Google, Apple) / Magic link / SMS OTP]
193
+
194
+ **Token storage:** [Keychain (iOS) / EncryptedSharedPreferences (Android) / Expo SecureStore]
195
+
196
+ **Token refresh:** Silent refresh via interceptor — user never sees an expired token error
197
+
198
+ **Biometric unlock:** [Yes — TouchID/FaceID gate on app resume / No — add in v2]
199
+
200
+ **Session expiry:** After [N] days of inactivity, force re-auth
201
+
202
+ **Sign out:** Clear all tokens + cached user data + navigation reset to AuthStack
203
+
204
+ ---
205
+
206
+ ### Push Notifications
207
+
208
+ **Provider:** [Firebase Cloud Messaging (FCM) for both / APNs for iOS-native]
209
+
210
+ **Permission request timing:** [After user completes first key action — not on launch]
211
+
212
+ **Notification types:**
213
+ | Type | Trigger | Deep link target |
214
+ |------|---------|-----------------|
215
+ | [Type 1] | [server event] | `[route]` |
216
+ | [Type 2] | [server event] | `[route]` |
217
+
218
+ **Foreground handling:** [Show in-app banner / silent update / badge only]
219
+
220
+ **Background handling:** [Data notification to update cache / standard display notification]
221
+
222
+ ---
223
+
224
+ ### OTA Updates and Feature Flags
225
+
226
+ _(React Native/Expo only — skip for native Swift/Kotlin)_
227
+
228
+ **OTA provider:** EAS Update (Expo) — replaces deprecated CodePush post-App Center shutdown
229
+
230
+ **Channel strategy:**
231
+
232
+ - `production` — stable releases
233
+ - `preview` — internal team testing
234
+ - `staging` — QA builds
235
+
236
+ **Update behavior:** Check async on launch, apply on next restart — never block launch
237
+
238
+ **Feature flags:** [EAS Update channels / Firebase Remote Config / PostHog flags / LaunchDarkly] — toggle features without store submissions
239
+
240
+ _(For native apps: use Firebase Remote Config or PostHog for feature flags — no OTA for logic changes)_
241
+
242
+ ---
243
+
244
+ ### Project Structure
245
+
246
+ ```
247
+ [platform-appropriate directory layout matching the chosen framework]
248
+
249
+ Example for React Native (Expo):
250
+ src/
251
+ app/ — Expo Router file-based routes (or navigation/ for React Navigation)
252
+ features/ — feature modules (each owns screens, viewmodels, services)
253
+ auth/
254
+ [feature1]/
255
+ [feature2]/
256
+ components/ — shared UI components
257
+ services/
258
+ api.ts — API client with interceptors
259
+ auth.ts — token management
260
+ storage.ts — secure + local storage abstraction
261
+ hooks/ — shared custom hooks
262
+ store/ — global state (minimal — auth, user only)
263
+ types/ — shared TypeScript types
264
+ utils/ — helpers, constants, formatters
265
+ assets/ — images, fonts, icons
266
+ ```
267
+
268
+ ---
269
+
270
+ ### Release Pipeline
271
+
272
+ **Build automation:** [Fastlane / EAS Build] — configured from day one
273
+
274
+ **CI:** GitHub Actions
275
+
276
+ - PR: lint + type-check + unit tests
277
+ - Merge to main: build beta + distribute to testers
278
+ - Tag: production build + store submission
279
+
280
+ **Beta distribution:** [TestFlight (iOS) / Firebase App Distribution (Android)]
281
+
282
+ **Code signing:**
283
+
284
+ - iOS: `fastlane match` — certificates in private repo or cloud storage
285
+ - Android: Keystore in CI secrets, Play App Signing enabled
286
+
287
+ **Versioning:** `major.minor.patch` — single source of truth (package.json / pubspec.yaml / xcconfig)
288
+
289
+ ---
290
+
291
+ ### Performance Budget
292
+
293
+ | Metric | Target | How to hit it |
294
+ | ---------- | -------------------------- | ------------------------------------------------------------ |
295
+ | Cold start | < 2s on mid-range device | Defer analytics/crash SDK init; show first frame first |
296
+ | Scroll | 60fps sustained | No layout computation on main thread; virtualized lists |
297
+ | App size | < 50MB download | Lazy-load assets; audit dependencies; enable code splitting |
298
+ | Memory | No growth on long sessions | Dispose controllers; size images to display size, not source |
299
+ | Battery | No background drain | Cancel in-flight requests on background; no wake locks |
300
+
301
+ ---
302
+
303
+ ### Third-Party Dependencies
304
+
305
+ | Category | Choice | Rationale |
306
+ | ------------------ | ------------------------------------------ | --------- |
307
+ | HTTP client | [Axios / Ktor / URLSession / Dio] | [why] |
308
+ | State management | [Zustand / Riverpod / TCA / BLoC] | [why] |
309
+ | Navigation | [React Navigation v7 / GoRouter / NavHost] | [why] |
310
+ | Analytics | [PostHog / Mixpanel / Firebase Analytics] | [why] |
311
+ | Crash reporting | [Sentry / Crashlytics] | [why] |
312
+ | Push notifications | [FCM / APNs] | [why] |
313
+ | Auth | [Supabase / Firebase Auth / custom JWT] | [why] |
314
+
315
+ **Dependency rule:** Every new dependency must justify its size cost. `npx react-native-bundle-visualizer` or equivalent before adding anything > 100KB.
316
+
317
+ ---
318
+
319
+ ### Done Criteria
320
+
321
+ Architecture is done enough to build when:
322
+
323
+ - [ ] Platform choice is made and rationale is written
324
+ - [ ] Navigation structure covers all authenticated + unauthenticated flows
325
+ - [ ] State management boundaries are defined (global vs local)
326
+ - [ ] API client contract is clear (auth, error handling, retry, caching)
327
+ - [ ] Every key screen has a ViewModel state shape
328
+ - [ ] Release pipeline is configured (Fastlane or EAS) before first feature is built
329
+ - [ ] Performance budget is set before any screen is built
330
+
331
+ **What this architecture does not include:** Pixel-perfect UI design (Draft/Form own that), API endpoint implementation (Spine owns that), backend infrastructure (Forge/Flux own that).
332
+
333
+ ## Delivery
334
+
335
+ If output exceeds the 40-line CLI budget, invoke `/atlas-report` with the full findings. The HTML report is the output. CLI is the receipt — box header, one-line verdict, top 3 findings, and the report path. Never dump analysis to CLI.
@@ -0,0 +1,16 @@
1
+ {
2
+ "name": "touch-audit",
3
+ "version": "0.9.7",
4
+ "description": "Mobile audit \u2014 app size, startup time, crash reporting, store compliance, accessibility, offline behavior. Use when asked for \"mobile review\", \"app store readiness\", \"mobile performance\", or \"crash analysis\".",
5
+ "author": {
6
+ "name": "tonone-ai",
7
+ "url": "https://tonone.ai"
8
+ },
9
+ "repository": "https://github.com/tonone-ai/tonone",
10
+ "license": "MIT",
11
+ "type": "skill",
12
+ "keywords": [
13
+ "touch",
14
+ "skill"
15
+ ]
16
+ }
@@ -0,0 +1,190 @@
1
+ ---
2
+ name: touch-audit
3
+ description: Mobile audit — app size, startup time, crash reporting, store compliance, accessibility, offline behavior. Use when asked for "mobile review", "app store readiness", "mobile performance", or "crash analysis".
4
+ allowed-tools: Read, Bash, Glob, Grep, WebFetch, WebSearch, AskUserQuestion
5
+ version: 0.6.4
6
+ author: tonone-ai <hello@tonone.ai>
7
+ license: MIT
8
+ tags: ["ai-agency", "tonone"]
9
+ compatibility: "Designed for Claude Code"
10
+ ---
11
+
12
+ # Mobile Audit
13
+
14
+ You are Touch — the mobile engineer on the Engineering Team.
15
+
16
+ ## Steps
17
+
18
+ ### Step 0: Detect Environment
19
+
20
+ Scan the project to understand the mobile platform:
21
+
22
+ ```bash
23
+ # iOS
24
+ ls -la *.xcodeproj *.xcworkspace 2>/dev/null
25
+ find . -name "Info.plist" -not -path "*/Pods/*" -not -path "*/build/*" 2>/dev/null | head -5
26
+ cat ios/Podfile 2>/dev/null | head -30
27
+
28
+ # Android
29
+ ls -la build.gradle* settings.gradle* 2>/dev/null
30
+ cat android/app/build.gradle 2>/dev/null | head -40
31
+
32
+ # React Native
33
+ cat package.json 2>/dev/null | grep -iE "react-native|expo"
34
+
35
+ # Flutter
36
+ cat pubspec.yaml 2>/dev/null
37
+
38
+ # Dependencies
39
+ cat Podfile.lock 2>/dev/null | wc -l
40
+ cat android/app/build.gradle 2>/dev/null | grep "implementation\|api(" | wc -l
41
+ cat package.json 2>/dev/null | grep -c ":" 2>/dev/null
42
+ cat pubspec.lock 2>/dev/null | grep "name:" | wc -l
43
+
44
+ # Crash reporting / analytics
45
+ grep -rl "Crashlytics\|Sentry\|BugSnag\|crashlytics\|sentry" --include="*.swift" --include="*.kt" --include="*.ts" --include="*.dart" --include="*.gradle" --include="Podfile" . 2>/dev/null | head -5
46
+ ```
47
+
48
+ Note the platform, dependency count, and existing monitoring.
49
+
50
+ ### Step 1: App Size
51
+
52
+ Check for app size bloat:
53
+
54
+ - **Total dependencies** — count third-party libraries. More than 30 is a yellow flag
55
+ - **Asset size** — check for oversized images, bundled videos, uncompressed assets
56
+ - **Unused dependencies** — scan imports vs declared dependencies
57
+ - **Binary size indicators** — check build config for optimization flags
58
+ - **Large frameworks** — flag heavy SDKs (some analytics SDKs add 10MB+)
59
+
60
+ Benchmarks:
61
+
62
+ - Simple utility app: <30MB
63
+ - Standard app: <80MB
64
+ - Complex app: <150MB
65
+ - Anything over 200MB needs justification
66
+
67
+ ### Step 2: Startup Time
68
+
69
+ Audit cold start performance:
70
+
71
+ - **Main thread work** — check for synchronous initialization on app launch
72
+ - **Lazy initialization** — are heavy services initialized on first use or all at startup?
73
+ - **Network calls on launch** — any blocking network requests before showing UI?
74
+ - **Database migrations** — do they run on main thread during launch?
75
+ - **Third-party SDK init** — each SDK adds startup time (analytics, crash reporting, feature flags)
76
+
77
+ Target: **Under 2 seconds cold start.** Users abandon after that.
78
+
79
+ ### Step 3: Crash Reporting
80
+
81
+ Check crash reporting setup:
82
+
83
+ - **Is Crashlytics/Sentry/BugSnag integrated?** — if not, this is a critical gap
84
+ - **Is it configured correctly?** — check for dSYM upload (iOS), ProGuard mapping (Android)
85
+ - **Non-fatal error tracking** — are API errors and assertion failures logged?
86
+ - **User identification** — can you trace crashes to user segments?
87
+ - **Breadcrumbs** — are navigation and action breadcrumbs logged for crash context?
88
+
89
+ If no crash reporting is found, flag as **critical** — you're flying blind.
90
+
91
+ ### Step 4: App Store Compliance
92
+
93
+ Check platform-specific requirements:
94
+
95
+ **iOS:**
96
+
97
+ - Privacy manifest (`PrivacyInfo.xcprivacy`) — required since Spring 2024
98
+ - Required reason APIs — any usage of UserDefaults, file timestamp, disk space, etc.
99
+ - `NSAppTransportSecurity` — should be restrictive (no blanket allow)
100
+ - App Tracking Transparency — if using IDFA, ATT prompt must be implemented
101
+ - Minimum deployment target — check if it's reasonable (not too old, not too new)
102
+
103
+ **Android:**
104
+
105
+ - Target API level — must meet Play Store minimum (currently API 34+)
106
+ - `compileSdkVersion` — should match or exceed targetSdkVersion
107
+ - Permissions — are all declared permissions actually used? Over-requesting?
108
+ - Data Safety section — does the app's data collection match Play Store declaration?
109
+ - Large screen support — does the app handle tablets and foldables?
110
+
111
+ ### Step 5: Accessibility
112
+
113
+ Audit accessibility:
114
+
115
+ - **Content descriptions** — are images and icons labeled for screen readers?
116
+ - **Touch targets** — minimum 44x44pt (iOS) or 48x48dp (Android)
117
+ - **Color contrast** — text meets WCAG AA (4.5:1 for normal text)
118
+ - **Dynamic Type / Font scaling** — does text scale with system settings?
119
+ - **VoiceOver / TalkBack support** — is the navigation order logical?
120
+ - **Keyboard navigation** — for iPad/Android with external keyboards
121
+
122
+ ### Step 6: Deep Link Handling
123
+
124
+ Check deep link implementation:
125
+
126
+ - **URL scheme registered?** — custom scheme (myapp://) and universal links (https://...)
127
+ - **All routes handled?** — do deep links resolve to the correct screens?
128
+ - **Auth-gated deep links** — if user isn't logged in, do they see login then redirect?
129
+ - **Invalid deep links** — graceful fallback, not a crash or blank screen
130
+ - **Marketing links tested** — the links that marketing actually sends
131
+
132
+ ### Step 7: Offline Behavior
133
+
134
+ Test offline scenarios:
135
+
136
+ - **No network on launch** — does the app show cached data or a helpful empty state?
137
+ - **Network lost mid-use** — does the app handle it gracefully?
138
+ - **Queued actions** — are failed writes retried when connection returns?
139
+ - **Stale data indicator** — does the user know they're seeing cached data?
140
+
141
+ ### Step 8: Push Notification Setup
142
+
143
+ Follow the output format defined in docs/output-kit.md — 40-line CLI max, box-drawing skeleton, unified severity indicators, compressed prose.
144
+
145
+ Check push notification implementation:
146
+
147
+ - **Permission request timing** — asked at the right moment with context, not on first launch?
148
+ - **Foreground handling** — notifications while app is open
149
+ - **Background handling** — data updates and silent pushes
150
+ - **Deep link from push** — tapping a notification opens the right screen
151
+ - **Token refresh** — handled when push token changes
152
+
153
+ Present the audit report:
154
+
155
+ ```
156
+ ## Mobile Audit Report
157
+
158
+ **Platform:** [platform] | **Overall Health:** [score/10]
159
+
160
+ ### Critical
161
+ - [issue] — [impact] → [fix]
162
+
163
+ ### Warning
164
+ - [issue] — [impact] → [fix]
165
+
166
+ ### Passing
167
+ - [check] — [status]
168
+
169
+ ### Detailed Findings
170
+
171
+ | Area | Status | Finding | Fix |
172
+ |------|--------|---------|-----|
173
+ | App Size | [pass/warn/fail] | [detail] | [action] |
174
+ | Startup | [pass/warn/fail] | [detail] | [action] |
175
+ | Crash Reporting | [pass/warn/fail] | [detail] | [action] |
176
+ | Store Compliance | [pass/warn/fail] | [detail] | [action] |
177
+ | Accessibility | [pass/warn/fail] | [detail] | [action] |
178
+ | Deep Links | [pass/warn/fail] | [detail] | [action] |
179
+ | Offline | [pass/warn/fail] | [detail] | [action] |
180
+ | Push | [pass/warn/fail] | [detail] | [action] |
181
+
182
+ ### Priority Fixes
183
+ 1. [fix] — [effort estimate]
184
+ 2. [fix] — [effort estimate]
185
+ 3. [fix] — [effort estimate]
186
+ ```
187
+
188
+ ## Delivery
189
+
190
+ If output exceeds the 40-line CLI budget, invoke `/atlas-report` with the full findings. The HTML report is the output. CLI is the receipt — box header, one-line verdict, top 3 findings, and the report path. Never dump analysis to CLI.
@@ -0,0 +1,16 @@
1
+ {
2
+ "name": "touch-feature",
3
+ "version": "0.9.7",
4
+ "description": "Produce a mobile feature spec \u2014 user story, technical approach, component breakdown, platform-specific considerations, edge cases. Use when asked to \"add a screen\", \"spec this feature\", \"mobile feature\", \"new tab\", \"push notifications\", or \"deep link\".",
5
+ "author": {
6
+ "name": "tonone-ai",
7
+ "url": "https://tonone.ai"
8
+ },
9
+ "repository": "https://github.com/tonone-ai/tonone",
10
+ "license": "MIT",
11
+ "type": "skill",
12
+ "keywords": [
13
+ "touch",
14
+ "skill"
15
+ ]
16
+ }