argos-harness 0.1.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 (217) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +21 -0
  3. package/assets/agents/auditor.md +140 -0
  4. package/assets/agents/commit-pr-pilot.md +154 -0
  5. package/assets/agents/explorer.md +93 -0
  6. package/assets/agents/implementer.md +117 -0
  7. package/assets/agents/leader.md +149 -0
  8. package/assets/agents/researcher.md +89 -0
  9. package/assets/agents/review-readability.md +87 -0
  10. package/assets/agents/review-reliability.md +100 -0
  11. package/assets/agents/review-resilience.md +87 -0
  12. package/assets/agents/review-risk.md +87 -0
  13. package/assets/agents/reviewer.md +167 -0
  14. package/assets/agents/ticket-audit.md +129 -0
  15. package/assets/hooks/argos-guard-destructive.sh +127 -0
  16. package/assets/hooks/argos-quality-gate.sh +129 -0
  17. package/assets/managed/aterrizaje.md +24 -0
  18. package/assets/managed/formato-respuesta.md +21 -0
  19. package/assets/managed/identidad.md +48 -0
  20. package/assets/managed/operaciones-seguras.md +14 -0
  21. package/assets/managed/orquestacion.md +169 -0
  22. package/assets/output-styles/argos.md +71 -0
  23. package/assets/skills/ai-sdk-5/SKILL.md +230 -0
  24. package/assets/skills/angular/SKILL.md +19 -0
  25. package/assets/skills/angular/references/architecture.md +137 -0
  26. package/assets/skills/angular/references/core.md +197 -0
  27. package/assets/skills/angular/references/forms.md +115 -0
  28. package/assets/skills/angular/references/performance.md +124 -0
  29. package/assets/skills/apollo-client/SKILL.md +61 -0
  30. package/assets/skills/app-blueprint/SKILL.md +45 -0
  31. package/assets/skills/app-blueprint/assets/module-template.md +48 -0
  32. package/assets/skills/app-blueprint/assets/system-template.md +38 -0
  33. package/assets/skills/app-blueprint/references/workflow.md +101 -0
  34. package/assets/skills/app-builder/SKILL.md +43 -0
  35. package/assets/skills/app-builder/phases/0-product.md +58 -0
  36. package/assets/skills/app-builder/phases/1-scaffold.md +33 -0
  37. package/assets/skills/app-builder/phases/10-store.md +40 -0
  38. package/assets/skills/app-builder/phases/2-data.md +34 -0
  39. package/assets/skills/app-builder/phases/3-domain.md +33 -0
  40. package/assets/skills/app-builder/phases/4-ui-nav.md +32 -0
  41. package/assets/skills/app-builder/phases/5-identity.md +30 -0
  42. package/assets/skills/app-builder/phases/6-polish.md +34 -0
  43. package/assets/skills/app-builder/phases/7-brand.md +31 -0
  44. package/assets/skills/app-builder/phases/8-web.md +30 -0
  45. package/assets/skills/app-builder/phases/9-docs.md +31 -0
  46. package/assets/skills/app-ia/SKILL.md +54 -0
  47. package/assets/skills/astro/SKILL.md +39 -0
  48. package/assets/skills/axios/SKILL.md +61 -0
  49. package/assets/skills/branch-pr/SKILL.md +200 -0
  50. package/assets/skills/bullmq/SKILL.md +55 -0
  51. package/assets/skills/chained-pr/SKILL.md +48 -0
  52. package/assets/skills/chained-pr/references/chaining-details.md +99 -0
  53. package/assets/skills/cognitive-doc-design/SKILL.md +81 -0
  54. package/assets/skills/comment-writer/SKILL.md +74 -0
  55. package/assets/skills/dashboard-ia/SKILL.md +54 -0
  56. package/assets/skills/django-drf/SKILL.md +180 -0
  57. package/assets/skills/go-testing/SKILL.md +47 -0
  58. package/assets/skills/go-testing/references/examples.md +89 -0
  59. package/assets/skills/issue-creation/SKILL.md +223 -0
  60. package/assets/skills/jira-epic/SKILL.md +306 -0
  61. package/assets/skills/jira-task/SKILL.md +382 -0
  62. package/assets/skills/judgment-day/SKILL.md +52 -0
  63. package/assets/skills/judgment-day/references/prompts-and-formats.md +98 -0
  64. package/assets/skills/lightsail-deploy/SKILL.md +44 -0
  65. package/assets/skills/lightsail-deploy/references/runbook.md +102 -0
  66. package/assets/skills/loop-back-debug/SKILL.md +102 -0
  67. package/assets/skills/mantine-form/SKILL.md +57 -0
  68. package/assets/skills/mongoose/SKILL.md +66 -0
  69. package/assets/skills/nextjs-15/SKILL.md +144 -0
  70. package/assets/skills/not-boring-mobile/SKILL.md +43 -0
  71. package/assets/skills/not-boring-mobile/references/not-boring-playbook.md +65 -0
  72. package/assets/skills/playwright/SKILL.md +315 -0
  73. package/assets/skills/pr-comments/SKILL.md +93 -0
  74. package/assets/skills/pr-create/SKILL.md +64 -0
  75. package/assets/skills/promo-video/SKILL.md +52 -0
  76. package/assets/skills/promo-video/assets/package.template.json +22 -0
  77. package/assets/skills/promo-video/assets/promo.template.tsx +469 -0
  78. package/assets/skills/promo-video/assets/theme.template.ts +27 -0
  79. package/assets/skills/promo-video/references/pipeline.md +119 -0
  80. package/assets/skills/promo-video-web/SKILL.md +51 -0
  81. package/assets/skills/promo-video-web/assets/browser-promo.template.tsx +385 -0
  82. package/assets/skills/promo-video-web/assets/capture.template.ts +70 -0
  83. package/assets/skills/promo-video-web/assets/package.template.json +26 -0
  84. package/assets/skills/promo-video-web/references/pipeline.md +84 -0
  85. package/assets/skills/pytest/SKILL.md +180 -0
  86. package/assets/skills/react-19/SKILL.md +118 -0
  87. package/assets/skills/react-hook-form/SKILL.md +59 -0
  88. package/assets/skills/react-router/SKILL.md +60 -0
  89. package/assets/skills/redux-toolkit/SKILL.md +60 -0
  90. package/assets/skills/review-diff/SKILL.md +101 -0
  91. package/assets/skills/ship-docs/SKILL.md +45 -0
  92. package/assets/skills/ship-docs/references/ship-docs-playbook.md +31 -0
  93. package/assets/skills/skill-creator/SKILL.md +97 -0
  94. package/assets/skills/skill-creator/assets/SKILL-TEMPLATE.md +68 -0
  95. package/assets/skills/skill-creator/references/skill-style-guide.md +79 -0
  96. package/assets/skills/skill-improver/SKILL.md +50 -0
  97. package/assets/skills/skill-improver/references/skill-style-guide.md +79 -0
  98. package/assets/skills/socketio/SKILL.md +58 -0
  99. package/assets/skills/spec-bootstrap/SKILL.md +62 -0
  100. package/assets/skills/store-ship/SKILL.md +52 -0
  101. package/assets/skills/store-ship/assets/android-supply.template.md +22 -0
  102. package/assets/skills/store-ship/assets/eas.template.json +32 -0
  103. package/assets/skills/store-ship/assets/maestro-flow.template.yaml +27 -0
  104. package/assets/skills/store-ship/assets/store.config.template.json +28 -0
  105. package/assets/skills/store-ship/references/pipeline.md +198 -0
  106. package/assets/skills/stripe/SKILL.md +83 -0
  107. package/assets/skills/tailwind-4/SKILL.md +193 -0
  108. package/assets/skills/tamagui/SKILL.md +60 -0
  109. package/assets/skills/tanstack-query/SKILL.md +58 -0
  110. package/assets/skills/ticket-intake/SKILL.md +55 -0
  111. package/assets/skills/typescript/SKILL.md +134 -0
  112. package/assets/skills/verify-before-done/SKILL.md +111 -0
  113. package/assets/skills/webapp-rebuilder/SKILL.md +48 -0
  114. package/assets/skills/webapp-rebuilder/assets/charter-template.md +46 -0
  115. package/assets/skills/webapp-rebuilder/references/workflow.md +47 -0
  116. package/assets/skills/winston-logging/SKILL.md +61 -0
  117. package/assets/skills/work-unit-commits/SKILL.md +84 -0
  118. package/assets/skills/zod-4/SKILL.md +210 -0
  119. package/assets/skills/zustand-5/SKILL.md +216 -0
  120. package/bin/argos.js +6 -0
  121. package/dist/commands/adopt.d.ts +35 -0
  122. package/dist/commands/adopt.d.ts.map +1 -0
  123. package/dist/commands/adopt.js +347 -0
  124. package/dist/commands/adopt.js.map +1 -0
  125. package/dist/commands/doctor.d.ts +20 -0
  126. package/dist/commands/doctor.d.ts.map +1 -0
  127. package/dist/commands/doctor.js +478 -0
  128. package/dist/commands/doctor.js.map +1 -0
  129. package/dist/commands/init.d.ts +32 -0
  130. package/dist/commands/init.d.ts.map +1 -0
  131. package/dist/commands/init.js +358 -0
  132. package/dist/commands/init.js.map +1 -0
  133. package/dist/commands/remove.d.ts +62 -0
  134. package/dist/commands/remove.d.ts.map +1 -0
  135. package/dist/commands/remove.js +487 -0
  136. package/dist/commands/remove.js.map +1 -0
  137. package/dist/commands/workspace.d.ts +73 -0
  138. package/dist/commands/workspace.d.ts.map +1 -0
  139. package/dist/commands/workspace.js +354 -0
  140. package/dist/commands/workspace.js.map +1 -0
  141. package/dist/index.d.ts +2 -0
  142. package/dist/index.d.ts.map +1 -0
  143. package/dist/index.js +24 -0
  144. package/dist/index.js.map +1 -0
  145. package/dist/lib/assets.d.ts +29 -0
  146. package/dist/lib/assets.d.ts.map +1 -0
  147. package/dist/lib/assets.js +57 -0
  148. package/dist/lib/assets.js.map +1 -0
  149. package/dist/lib/atomic-write.d.ts +17 -0
  150. package/dist/lib/atomic-write.d.ts.map +1 -0
  151. package/dist/lib/atomic-write.js +41 -0
  152. package/dist/lib/atomic-write.js.map +1 -0
  153. package/dist/lib/backup.d.ts +11 -0
  154. package/dist/lib/backup.d.ts.map +1 -0
  155. package/dist/lib/backup.js +42 -0
  156. package/dist/lib/backup.js.map +1 -0
  157. package/dist/lib/config.d.ts +36 -0
  158. package/dist/lib/config.d.ts.map +1 -0
  159. package/dist/lib/config.js +52 -0
  160. package/dist/lib/config.js.map +1 -0
  161. package/dist/lib/detect.d.ts +58 -0
  162. package/dist/lib/detect.d.ts.map +1 -0
  163. package/dist/lib/detect.js +330 -0
  164. package/dist/lib/detect.js.map +1 -0
  165. package/dist/lib/ficha.d.ts +10 -0
  166. package/dist/lib/ficha.d.ts.map +1 -0
  167. package/dist/lib/ficha.js +38 -0
  168. package/dist/lib/ficha.js.map +1 -0
  169. package/dist/lib/git.d.ts +27 -0
  170. package/dist/lib/git.d.ts.map +1 -0
  171. package/dist/lib/git.js +79 -0
  172. package/dist/lib/git.js.map +1 -0
  173. package/dist/lib/managed-files.d.ts +35 -0
  174. package/dist/lib/managed-files.d.ts.map +1 -0
  175. package/dist/lib/managed-files.js +97 -0
  176. package/dist/lib/managed-files.js.map +1 -0
  177. package/dist/lib/markers.d.ts +64 -0
  178. package/dist/lib/markers.d.ts.map +1 -0
  179. package/dist/lib/markers.js +157 -0
  180. package/dist/lib/markers.js.map +1 -0
  181. package/dist/lib/navori-import.d.ts +42 -0
  182. package/dist/lib/navori-import.d.ts.map +1 -0
  183. package/dist/lib/navori-import.js +65 -0
  184. package/dist/lib/navori-import.js.map +1 -0
  185. package/dist/lib/openclaw-agents.d.ts +53 -0
  186. package/dist/lib/openclaw-agents.d.ts.map +1 -0
  187. package/dist/lib/openclaw-agents.js +118 -0
  188. package/dist/lib/openclaw-agents.js.map +1 -0
  189. package/dist/lib/package-root.d.ts +11 -0
  190. package/dist/lib/package-root.d.ts.map +1 -0
  191. package/dist/lib/package-root.js +23 -0
  192. package/dist/lib/package-root.js.map +1 -0
  193. package/dist/lib/paths.d.ts +11 -0
  194. package/dist/lib/paths.d.ts.map +1 -0
  195. package/dist/lib/paths.js +16 -0
  196. package/dist/lib/paths.js.map +1 -0
  197. package/dist/lib/settings-merge.d.ts +125 -0
  198. package/dist/lib/settings-merge.d.ts.map +1 -0
  199. package/dist/lib/settings-merge.js +373 -0
  200. package/dist/lib/settings-merge.js.map +1 -0
  201. package/dist/lib/version.d.ts +3 -0
  202. package/dist/lib/version.d.ts.map +1 -0
  203. package/dist/lib/version.js +13 -0
  204. package/dist/lib/version.js.map +1 -0
  205. package/dist/lib/which.d.ts +8 -0
  206. package/dist/lib/which.d.ts.map +1 -0
  207. package/dist/lib/which.js +30 -0
  208. package/dist/lib/which.js.map +1 -0
  209. package/dist/lib/workspaces.d.ts +133 -0
  210. package/dist/lib/workspaces.d.ts.map +1 -0
  211. package/dist/lib/workspaces.js +241 -0
  212. package/dist/lib/workspaces.js.map +1 -0
  213. package/dist/lib/zod-messages.d.ts +4 -0
  214. package/dist/lib/zod-messages.d.ts.map +1 -0
  215. package/dist/lib/zod-messages.js +28 -0
  216. package/dist/lib/zod-messages.js.map +1 -0
  217. package/package.json +44 -0
@@ -0,0 +1,97 @@
1
+ ---
2
+ name: skill-creator
3
+ description: Create LLM-first skills with valid frontmatter. Trigger: new skills, agent instructions, documenting AI usage patterns.
4
+ ---
5
+
6
+ ## Activation Contract
7
+
8
+ Create a skill when:
9
+ - A pattern is used repeatedly and AI needs guidance
10
+ - Project-specific conventions differ from generic best practices
11
+ - Complex workflows need step-by-step instructions
12
+ - Decision trees help AI choose the right approach
13
+
14
+ Do not create a skill when the pattern is trivial, one-off, or better served by normal documentation.
15
+
16
+ ## Hard Rules
17
+
18
+ - When working in this repo, first follow `docs/skill-style-guide.md` as the normative source before creating or updating skills.
19
+ - Use `references/skill-style-guide.md` as the bundled local copy of that guide when `docs/skill-style-guide.md` is unavailable.
20
+ - If neither guide is available, use the compact inline rules below.
21
+ - A skill is a runtime instruction contract for an LLM, not human documentation.
22
+ - Do not add a `Keywords` section; preserve essential trigger words in `description`.
23
+ - References must point to local files.
24
+ - Keep the skill body concise: target 180–450 tokens, recommended max 700, hard max 1000.
25
+
26
+ ## Decision Gates
27
+
28
+ | Need | Action |
29
+ |------|--------|
30
+ | Code templates, schemas, fixtures, generated examples | Put them in `assets/` |
31
+ | Conceptual detail, edge cases, existing docs | Put local links in `references/` |
32
+ | Long explanation in `SKILL.md` | Move it to a supporting file |
33
+ | Multiple meaningful paths | Add a compact decision table |
34
+
35
+ ## Execution Steps
36
+
37
+ 1. Check whether `docs/skill-style-guide.md` exists; if it does, apply it before the bundled local copy or inline fallback rules.
38
+ 2. If the repo guide is unavailable, read `references/skill-style-guide.md` and apply it before the inline fallback rules.
39
+ 3. Confirm the skill does not already exist and the pattern is reusable.
40
+ 4. Create or update `assets/skills/{skill-name}/SKILL.md` using this required structure:
41
+
42
+ ```
43
+ assets/skills/{skill-name}/
44
+ ├── SKILL.md # Required - main skill file
45
+ ├── assets/ # Optional - templates, schemas, examples
46
+ │ ├── template.py
47
+ │ └── schema.json
48
+ └── references/ # Optional - links to local docs
49
+ └── docs.md # Points to docs/developer-guide/*.mdx
50
+ ```
51
+ 5. Use this frontmatter shape:
52
+
53
+ ```markdown
54
+ ---
55
+ name: {skill-name}
56
+ description: "Trigger: {essential trigger words users or agents will say}. {What this skill does}."
57
+ ---
58
+ ```
59
+ 6. Write sections in this order: Activation Contract, Hard Rules, Decision Gates, Execution Steps, Output Contract, References.
60
+ 7. There is no per-repo registration step: skills live once in the global motor (`packages/cli/assets/skills/`) and Argos detects them dynamically. Do not add a registration entry in any repo's `AGENTS.md`.
61
+
62
+ ## Inline Fallback Rules
63
+
64
+ - `description` MUST be one physical line, quoted, YAML-safe, and include essential trigger words first.
65
+ - `description` SHOULD be <=160 chars and MUST be <=250 chars.
66
+ - Frontmatter MUST include exactly `name` and `description` — no other fields.
67
+ - Use imperative instructions, not tutorials or background prose.
68
+ - Put supporting material in `assets/` or `references/`, not the main skill body.
69
+
70
+ Good:
71
+
72
+ ```yaml
73
+ description: "Trigger: Jira task, ticket, issue, task creation. Create Jira tasks in the team format."
74
+ ```
75
+
76
+ Bad:
77
+
78
+ ```yaml
79
+ description: >
80
+ Create Jira tasks in the team format.
81
+ Trigger: Jira task, ticket, issue, or task creation.
82
+ Keywords: jira, task
83
+ ```
84
+
85
+ ## Output Contract
86
+
87
+ Return:
88
+ - Files created or modified.
89
+ - Whether the repo style guide or inline fallback rules were used.
90
+ - Any supporting files added under `assets/` or `references/`.
91
+
92
+ ## References
93
+
94
+ - `docs/skill-style-guide.md` — normative LLM-first skill style guide for this repo.
95
+ - `references/skill-style-guide.md` — bundled local copy for the global skill when the repo doc is unavailable.
96
+
97
+ _Adapted from a skill originally authored by gentleman-programming._
@@ -0,0 +1,68 @@
1
+ ---
2
+ name: {skill-name}
3
+ description: "Trigger: {essential trigger words users or agents will say}. {What this skill does}."
4
+ ---
5
+
6
+ ## Activation Contract
7
+
8
+ Use this skill when:
9
+ - {Condition 1}
10
+ - {Condition 2}
11
+ - {Condition 3}
12
+
13
+ ---
14
+
15
+ ## Hard Rules
16
+
17
+ {The MOST important rules - what AI MUST follow}
18
+
19
+ ### Pattern 1: {Name}
20
+
21
+ ```{language}
22
+ {code example}
23
+ ```
24
+
25
+ ### Pattern 2: {Name}
26
+
27
+ ```{language}
28
+ {code example}
29
+ ```
30
+
31
+ ---
32
+
33
+ ## Decision Gates
34
+
35
+ ```
36
+ {Question 1}? → {Action A}
37
+ {Question 2}? → {Action B}
38
+ Otherwise → {Default action}
39
+ ```
40
+
41
+ ---
42
+
43
+ ## Execution Steps
44
+
45
+ ### Example 1: {Description}
46
+
47
+ ```{language}
48
+ {minimal, focused example}
49
+ ```
50
+
51
+ ### Example 2: {Description}
52
+
53
+ ```{language}
54
+ {minimal, focused example}
55
+ ```
56
+
57
+ ---
58
+
59
+ ## Output Contract
60
+
61
+ {What this skill returns when it finishes: files touched, decisions made, anything flagged for human review.}
62
+
63
+ ---
64
+
65
+ ## References
66
+
67
+ - **Templates**: See [assets/](assets/) for {description of templates}
68
+ - **Documentation**: See [references/](references/) for local developer guide links
@@ -0,0 +1,79 @@
1
+ # LLM-first Skill Style Guide
2
+
3
+ Use this guide when creating or refactoring skills in this repo. A skill is a **runtime instruction contract for an LLM**, not human-facing documentation: it tells the model when to activate, what rules are non-negotiable, how to decide, what to do, and what to return.
4
+
5
+ ## Required Structure
6
+
7
+ Every `SKILL.md` MUST use this order unless a section is truly irrelevant:
8
+
9
+ 1. **Frontmatter** — complete metadata for skill discovery.
10
+ 2. **Activation Contract** — exact situations that load the skill.
11
+ 3. **Hard Rules** — constraints the LLM MUST NOT violate.
12
+ 4. **Decision Gates** — short tables or bullets for branching choices.
13
+ 5. **Execution Steps** — ordered operational workflow.
14
+ 6. **Output Contract** — required final format or artifacts.
15
+ 7. **References** — local files only; supporting detail lives outside the skill.
16
+
17
+ `## Compact Rules` is not required. Argos loads the full `SKILL.md` as the source of truth.
18
+
19
+ ## Frontmatter Rules
20
+
21
+ - `description` MUST be one physical line, YAML-safe, and quoted.
22
+ - Put trigger words first: `"Trigger: ... . {What the skill does}."`
23
+ - `description` SHOULD be <=160 chars and MUST be <=250 chars.
24
+ - Frontmatter has exactly two fields: `name` and `description`. Do not add `license`, `metadata`, `type`, or any other field.
25
+ - Do NOT add a `Keywords` section; discovery uses frontmatter.
26
+
27
+ ## Body Budget
28
+
29
+ - Target **180–450 tokens** for the skill body.
30
+ - Recommended maximum: **700 tokens**.
31
+ - Hard maximum: **1000 tokens**. Move examples, schemas, and background into `assets/` or `references/`.
32
+
33
+ ## Writing Rules
34
+
35
+ ### DO
36
+
37
+ - Write imperative runtime instructions: "Load X", "Check Y", "Return Z".
38
+ - Lead with the activation trigger and hard constraints.
39
+ - Use compact tables for decision gates.
40
+ - Keep examples minimal and executable.
41
+ - Link to local supporting files for details.
42
+
43
+ ### DON'T
44
+
45
+ - Explain history, motivation, or tutorial background.
46
+ - Duplicate long docs inside the skill.
47
+ - Add generic advice the LLM cannot execute.
48
+ - Use external URLs as primary references.
49
+ - Hide critical rules below examples.
50
+
51
+ ## Supporting Files
52
+
53
+ - Use `assets/` for templates, schemas, fixtures, or generated examples.
54
+ - Use `references/` for local docs that explain concepts or edge cases.
55
+ - Keep references stable and relative to the skill directory when possible.
56
+
57
+ ## Registry Behavior
58
+
59
+ - Argos indexes the skills automatically by reading the directories under `assets/skills/` — no manual refresh command is needed.
60
+ - Discovery reads `name`, `description` trigger text, and the exact `SKILL.md` path.
61
+ - Delegators pass matching paths to subagents, and subagents read the full skill before work.
62
+ - Use `skill-improver` to audit and refactor existing skills against this guide.
63
+
64
+ ## Quality Gates
65
+
66
+ - Frontmatter is complete, quoted, single-line, and trigger-preserving.
67
+ - Required sections exist in the expected order.
68
+ - Hard rules are testable or observable.
69
+ - Decision gates cover meaningful forks only.
70
+ - Output contract tells the LLM exactly what to return.
71
+ - References point to local files.
72
+
73
+ ## Refactor Checklist
74
+
75
+ - [ ] Move explanatory prose to local references.
76
+ - [ ] Collapse repeated rules into one hard rule.
77
+ - [ ] Replace prose branches with a decision table.
78
+ - [ ] Trim examples to the smallest useful case.
79
+ - [ ] Recheck description length and trigger words.
@@ -0,0 +1,50 @@
1
+ ---
2
+ name: skill-improver
3
+ description: Audit and upgrade existing LLM-first skills. Trigger: improve skills, audit skills, refactor skills, skill quality.
4
+ ---
5
+
6
+ ## Activation Contract
7
+
8
+ Use this skill when asked to audit, refactor, normalize, or improve existing `SKILL.md` files. Use `skill-creator` instead when creating a brand-new skill from a reusable pattern.
9
+
10
+ ## Hard Rules
11
+
12
+ - Treat `docs/skill-style-guide.md` as the normative style contract when it exists.
13
+ - Use `references/skill-style-guide.md` as the bundled local copy when `docs/skill-style-guide.md` is unavailable.
14
+ - Treat `SKILL.md` as the source of truth; preserve author intent, critical rules, activation semantics, and output requirements.
15
+ - Default to audit-only. Modify files only when the user explicitly asks to apply improvements.
16
+ - Never delete meaningful content silently; move long explanation, examples, templates, or schemas into local `references/` or `assets/`.
17
+ - Do not invent triggers, policies, or domain rules. Mark ambiguous cases for human review.
18
+
19
+ ## Decision Gates
20
+
21
+ | Situation | Action |
22
+ | --- | --- |
23
+ | Missing or invalid frontmatter | Fix `name` and quoted one-line `description` — the only two allowed fields |
24
+ | Skill reads like tutorial docs | Convert to runtime instructions and move background to `references/` |
25
+ | Body exceeds budget | Preserve rules, move examples/background to supporting files |
26
+ | Branching logic hidden in prose | Convert to a compact decision table |
27
+ | Rules conflict or intent is unclear | Report the issue; do not rewrite that rule automatically |
28
+
29
+ ## Execution Steps
30
+
31
+ 1. Read `docs/skill-style-guide.md`; if unavailable, read `references/skill-style-guide.md`; if neither exists, enforce the core LLM-first structure: frontmatter, Activation Contract, Hard Rules, Decision Gates, Execution Steps, Output Contract, References.
32
+ 2. Scan the skill directories under `assets/skills/` for `*/SKILL.md` to select skills to audit.
33
+ 3. For each selected skill, audit frontmatter, trigger clarity, section order, body budget, actionability, decision gates, output contract, and local references.
34
+ 4. Return an audit report grouped by skill with severity and exact proposed changes.
35
+ 5. In apply mode, edit only safe issues, preserve content, and create supporting files when needed. There is no per-repo registration or refresh step to run afterward: skills live once in the global motor and Argos detects them dynamically.
36
+
37
+ ## Output Contract
38
+
39
+ Return:
40
+ - Skills audited and paths used.
41
+ - Issues found, grouped by severity.
42
+ - Files changed, if apply mode was requested.
43
+ - Ambiguities that need human review.
44
+
45
+ ## References
46
+
47
+ - `docs/skill-style-guide.md` — normative LLM-first skill style guide for this repo.
48
+ - `references/skill-style-guide.md` — bundled local copy for the global skill when the repo doc is unavailable.
49
+
50
+ _Adapted from a skill originally authored by gentleman-programming._
@@ -0,0 +1,79 @@
1
+ # LLM-first Skill Style Guide
2
+
3
+ Use this guide when creating or refactoring skills in this repo. A skill is a **runtime instruction contract for an LLM**, not human-facing documentation: it tells the model when to activate, what rules are non-negotiable, how to decide, what to do, and what to return.
4
+
5
+ ## Required Structure
6
+
7
+ Every `SKILL.md` MUST use this order unless a section is truly irrelevant:
8
+
9
+ 1. **Frontmatter** — complete metadata for skill discovery.
10
+ 2. **Activation Contract** — exact situations that load the skill.
11
+ 3. **Hard Rules** — constraints the LLM MUST NOT violate.
12
+ 4. **Decision Gates** — short tables or bullets for branching choices.
13
+ 5. **Execution Steps** — ordered operational workflow.
14
+ 6. **Output Contract** — required final format or artifacts.
15
+ 7. **References** — local files only; supporting detail lives outside the skill.
16
+
17
+ `## Compact Rules` is not required. Argos loads the full `SKILL.md` as the source of truth.
18
+
19
+ ## Frontmatter Rules
20
+
21
+ - `description` MUST be one physical line, YAML-safe, and quoted.
22
+ - Put trigger words first: `"Trigger: ... . {What the skill does}."`
23
+ - `description` SHOULD be <=160 chars and MUST be <=250 chars.
24
+ - Frontmatter has exactly two fields: `name` and `description`. Do not add `license`, `metadata`, `type`, or any other field.
25
+ - Do NOT add a `Keywords` section; discovery uses frontmatter.
26
+
27
+ ## Body Budget
28
+
29
+ - Target **180–450 tokens** for the skill body.
30
+ - Recommended maximum: **700 tokens**.
31
+ - Hard maximum: **1000 tokens**. Move examples, schemas, and background into `assets/` or `references/`.
32
+
33
+ ## Writing Rules
34
+
35
+ ### DO
36
+
37
+ - Write imperative runtime instructions: "Load X", "Check Y", "Return Z".
38
+ - Lead with the activation trigger and hard constraints.
39
+ - Use compact tables for decision gates.
40
+ - Keep examples minimal and executable.
41
+ - Link to local supporting files for details.
42
+
43
+ ### DON'T
44
+
45
+ - Explain history, motivation, or tutorial background.
46
+ - Duplicate long docs inside the skill.
47
+ - Add generic advice the LLM cannot execute.
48
+ - Use external URLs as primary references.
49
+ - Hide critical rules below examples.
50
+
51
+ ## Supporting Files
52
+
53
+ - Use `assets/` for templates, schemas, fixtures, or generated examples.
54
+ - Use `references/` for local docs that explain concepts or edge cases.
55
+ - Keep references stable and relative to the skill directory when possible.
56
+
57
+ ## Registry Behavior
58
+
59
+ - Argos indexes the skills automatically by reading the directories under `assets/skills/` — no manual refresh command is needed.
60
+ - Discovery reads `name`, `description` trigger text, and the exact `SKILL.md` path.
61
+ - Delegators pass matching paths to subagents, and subagents read the full skill before work.
62
+ - Use `skill-improver` to audit and refactor existing skills against this guide.
63
+
64
+ ## Quality Gates
65
+
66
+ - Frontmatter is complete, quoted, single-line, and trigger-preserving.
67
+ - Required sections exist in the expected order.
68
+ - Hard rules are testable or observable.
69
+ - Decision gates cover meaningful forks only.
70
+ - Output contract tells the LLM exactly what to return.
71
+ - References point to local files.
72
+
73
+ ## Refactor Checklist
74
+
75
+ - [ ] Move explanatory prose to local references.
76
+ - [ ] Collapse repeated rules into one hard rule.
77
+ - [ ] Replace prose branches with a decision table.
78
+ - [ ] Trim examples to the smallest useful case.
79
+ - [ ] Recheck description length and trigger words.
@@ -0,0 +1,58 @@
1
+ ---
2
+ name: socketio
3
+ description: Patrones de Socket.IO en un servicio Node — namespaces, rooms, auth en el handshake, eventos tipados, cleanup. Trigger: al tocar realtime, gateways o handlers de socket.
4
+ ---
5
+
6
+ # Socket.IO — convenciones del servicio
7
+
8
+ ## Cuándo usar este skill
9
+
10
+ Al agregar o tocar realtime: un namespace, un evento, autenticación de conexión, o broadcast a un room. Socket.IO sobre el HTTP server de Express. La regla base: el handler de socket es una capa de transporte, no de negocio — delega al mismo service/controller que usan las rutas HTTP.
11
+
12
+ ## El patrón
13
+
14
+ ```ts
15
+ io.of('/sessions').use(authSocket).on('connection', (socket) => {
16
+ socket.join(`session:${socket.data.sessionId}`);
17
+
18
+ socket.on('message:send', async (dto, ack) => {
19
+ try {
20
+ const saved = await messageService.create(socket.data.userId, dto);
21
+ io.to(`session:${socket.data.sessionId}`).emit('message:new', saved); // room de socket.data, no del payload
22
+ ack?.({ ok: true, id: saved._id });
23
+ } catch (err) {
24
+ ack?.({ ok: false, error: toClientError(err) });
25
+ }
26
+ });
27
+
28
+ socket.on('disconnect', () => { /* cleanup timers/subscriptions */ });
29
+ });
30
+ ```
31
+
32
+ `authSocket` valida el token en `socket.handshake.auth.token` y rellena `socket.data` (userId/sessionId). Nunca confíes en un id que venga en el payload del evento sin cruzarlo contra `socket.data`.
33
+
34
+ ## Gotchas que muerden
35
+
36
+ - **Rooms, no broadcast global.** `io.emit` manda a todos los conectados; usa `io.to(room)` / `socket.to(room)` para no filtrar datos entre sesiones/tenants.
37
+ - **`socket.emit` vs `io.to(...).emit`.** `socket.emit` responde solo al emisor; para incluirte y al resto del room usa `io.to(room)`, para excluirte usa `socket.to(room)`.
38
+ - **Listeners colgados.** Toda suscripción/intervalo creado en `connection` se limpia en `disconnect`, o se filtra memoria.
39
+ - **Errores.** Un throw dentro de un handler no llega al cliente: reporta vía el callback `ack` o un evento `error:*`, nunca dejes la promesa sin catch.
40
+ - **Auth en el handshake**, no por evento — rechaza en el middleware `.use()` antes de `connection`.
41
+ - **Tipa el `Server`/`Socket`** con las 4 interfaces (`Server<ClientToServerEvents, ServerToClientEvents, InterServerEvents, SocketData>`): autocompletado y type-check de payloads y acks. `socket.data` se tipa vía `SocketData`, no `any`.
42
+ - **Multi-instancia ⇒ adapter (Redis) + sticky sessions.** Sin adapter, `io.to(room)` solo alcanza a los sockets de **este** proceso (broadcasts perdidos al escalar); sin sticky, el long-polling da "Session ID unknown".
43
+ - **Acks que esperan respuesta usan timeout**: `socket.timeout(ms).emitWithAck(...)`. Sin timeout, un ack ausente cuelga/leakea.
44
+
45
+ ## Reglas duras
46
+
47
+ 1. El handler delega al service; nada de queries ni lógica de negocio inline.
48
+ 2. Identidad desde `socket.data` (poblado en auth), nunca desde el payload.
49
+ 3. Emite a un room específico; `io.emit` global solo para health/system.
50
+ 4. Cada `on(...)` con efectos secundarios tiene su cleanup en `disconnect`.
51
+ 5. Errores al cliente vía `ack`/evento `error`, con el mismo `ApiError` mapeado que HTTP.
52
+
53
+ ## Antes de declarar listo
54
+
55
+ - Los eventos nuevos validan su input igual que un endpoint HTTP.
56
+ - Ningún `io.emit` global salvo señales de sistema; el resto va por room.
57
+ - Auth resuelta en el middleware del namespace, no dentro de los handlers.
58
+ - El quality gate del repo (`qualityGate.fast` en `argos.config.json`) en verde.
@@ -0,0 +1,62 @@
1
+ ---
2
+ name: spec-bootstrap
3
+ description: Scaffoldea un spec SDD completo (requirements/design/tasks) con EARS y trazabilidad R<n>↔test. Trigger: arrancar una feature de alcance real, spec SDD, requirements/design/tasks, EARS, antes de escribir código.
4
+ ---
5
+
6
+ # spec-bootstrap — arranque de un spec SDD
7
+
8
+ ## Cuándo usar este skill
9
+
10
+ Al iniciar trabajo SDD-scope (feature nueva completa, cambios en auth/seguridad/datos sensibles, scope > ~2 días — ver el bloque **Spec Driven Development** en `CLAUDE.md`). No lo uses para bugfixes, ajustes de UI o refactors aislados: esos van directo.
11
+
12
+ Produce `requirements.md`, `design.md` y `tasks.md` en el directorio de specs del repo (definido en la ficha del repo — CLAUDE.md — o en `argos.config.json`), listos para que el orquestador los descomponga. El scaffolding lo hace el agente principal (o el `researcher`), no un subagente que nestee.
13
+
14
+ ## Orden
15
+
16
+ 1. **requirements.md primero.** Sin requisitos claros no hay diseño. Deriva del ticket/pedido; cada requisito es EARS con id `R<n>`.
17
+ 2. **design.md** — cómo cumplir esos `R<n>`: componentes afectados, contratos, decisiones y trade-offs. Referencia los `R<n>` que cada decisión satisface.
18
+ 3. **tasks.md** — lotes de 1-3 tasks; cada task lista los `R<n>` que cubre y su(s) test(s).
19
+
20
+ ## Plantillas
21
+
22
+ `requirements.md`:
23
+ ```md
24
+ # <Feature> — Requirements
25
+
26
+ ## Contexto
27
+ <1-2 líneas: qué problema resuelve y para quién.>
28
+
29
+ ## Requisitos (EARS)
30
+ - **R1** — El sistema DEBE <acción observable>.
31
+ - **R2** — CUANDO <evento>, el sistema DEBE <acción>.
32
+ - **R3** — SI <condición no deseada> ENTONCES el sistema DEBE <acción de contención>.
33
+ ```
34
+
35
+ `design.md`:
36
+ ```md
37
+ # <Feature> — Design
38
+
39
+ ## Enfoque
40
+ <Arquitectura elegida y por qué. Trade-offs descartados.>
41
+
42
+ ## Componentes
43
+ - <archivo/módulo> — <responsabilidad> — cubre R<n>.
44
+
45
+ ## Decisiones
46
+ - <decisión no obvia> — <razón>.
47
+ ```
48
+
49
+ `tasks.md`:
50
+ ```md
51
+ # <Feature> — Tasks
52
+
53
+ - [ ] **T1** (R1, R2) — <qué se implementa> · test: <archivo>::<caso> con `// Covers: R1, R2`
54
+ - [ ] **T2** (R3) — <qué se implementa> · test: <archivo>::<caso> con `// Covers: R3`
55
+ ```
56
+
57
+ ## Reglas duras
58
+
59
+ - **Cero placeholders sin resolver.** No dejes `<...>` en el spec final; si no sabes un dato, es una pregunta al usuario, no un hueco.
60
+ - **Todo `R<n>` termina en ≥1 task y ≥1 test.** Un requisito sin task ni test no es trazable → no entra al spec.
61
+ - **El tracking vive en `tasks.md`, no en herramientas de tareas efímeras/externas.** Ver el bloque SDD.
62
+ - **Self-review antes de cerrar el scaffolding:** ¿cada `R<n>` es una sola acción testeable? ¿cada task apunta a `R<n>` reales? ¿el design cubre todos los `R<n>`? Si algo falla, corrígelo antes de pasar el spec a quien coordine la feature.
@@ -0,0 +1,52 @@
1
+ ---
2
+ name: store-ship
3
+ description: Trigger: store deploy, publish app, App Store, Play Store, eas submit, store metadata, store screenshots, subir a tiendas, publicar app. Automate store submission for Expo apps: EAS build/submit, metadata as code, Maestro screenshots.
4
+ ---
5
+
6
+ # Store Ship
7
+
8
+ ## Activation Contract
9
+
10
+ Activate when an Expo/React Native app must be built, prepared, or submitted to the App Store / Play Store: metadata, screenshots, builds, or the whole pipeline. Also the Phase 10 executor of `app-builder`.
11
+
12
+ ## Hard Rules
13
+
14
+ - All store artifacts live in the repo under `store/` — metadata and screenshots are code, never console-only state.
15
+ - Derive ALL copy (title, subtitle, description, keywords) from `docs/product-definition.md`; never invent product claims. Respect limits: iOS subtitle/keywords 30/100 chars, Play title/short/full 30/80/4000 chars.
16
+ - Never store credentials in the repo: Apple App Store Connect API key and Play service-account JSON go in env/EAS secrets; `store/` must be committable. Maestro flows must never hardcode credentials either, even local seed ones — inject with `${VAR}` and `maestro test -e KEY=value`, with the run command in the flow header comment. Same rule for the `store.config.json` demo password: inject→push→revert→verify, never committed — `references/pipeline.md` §6.
17
+ - Do not claim full automation of one-time console steps (App Privacy questionnaire, content rating, first Play AAB upload) — surface them as a manual checklist instead.
18
+ - Screenshots come from real app runs (Maestro on simulator/emulator with seeded demo data), not mockups.
19
+
20
+ ## Decision Gates
21
+
22
+ | Situation | Route |
23
+ |---|---|
24
+ | Expo managed app | EAS: `eas build` + `eas submit` + `eas metadata` (iOS) |
25
+ | Bare RN / non-Expo | fastlane (`deliver`/`supply`/`snapshot`) — same `store/` layout |
26
+ | Play metadata (eas metadata is iOS-only) | fastlane `supply` structure in `store/android/`, uploaded via fastlane or console paste |
27
+ | First-ever Play submission | Manual AAB upload in Play Console (Google requirement), then `eas submit` for updates |
28
+ | Tablet screenshots | Only if `supportsTablet` (iPad) / tablet layouts exist (Play) |
29
+ | EAS submit queue busy / need local, queue-free iOS upload | `xcrun altool --upload-app`, Transporter, or `fastlane pilot upload` with the team's own ASC API key — see "Queue-free local submission" in `references/pipeline.md` §6 |
30
+
31
+ ## Execution Steps
32
+
33
+ 1. Read `references/pipeline.md`; check prereqs incl. EAS env vars (Phase 8).
34
+ 2. Scaffold `store/` and `eas.json` from `assets/` templates; fill submit profiles.
35
+ 3. Author metadata from the product definition: `store/store.config.json` (iOS) + `store/android/` supply tree; push once for text fields (no screenshots/password yet).
36
+ 4. One-time ASC manual fixes for API-created apps: 1.0 version, primary language, copyright, pricing, content rights — pipeline §4.
37
+ 5. Screenshots: seed demo data, write Maestro flows from `assets/maestro-flow.template.yaml`, run the device matrix, output to `store/screenshots/{platform}/{device}/`.
38
+ 6. Build + submit: `eas build --profile production`, `eas submit` (queue) or the queue-free local path; verify TestFlight / Play internal track.
39
+ 7. Final metadata push: real screenshots + demo password inject → push → revert → `rg`-verify — pipeline §6.
40
+ 8. Print the manual-steps checklist and persist the run outcome (engram or decision log).
41
+
42
+ ## Output Contract
43
+
44
+ Return: files created under `store/`, commands run with results, screenshot inventory per device, the final metadata push result, and the remaining manual checklist. Never report "submitted" without the `eas submit` output.
45
+
46
+ ## References
47
+
48
+ - `references/pipeline.md` — full runbook: prereqs, eas.json profiles, metadata fields/limits, device matrix, seeding, troubleshooting.
49
+ - `assets/eas.template.json` — build+submit profiles.
50
+ - `assets/store.config.template.json` — iOS metadata as code.
51
+ - `assets/maestro-flow.template.yaml` — screenshot flow pattern.
52
+ - `assets/android-supply.template.md` — Play metadata tree.
@@ -0,0 +1,22 @@
1
+ # Play supply tree template
2
+
3
+ `eas metadata` is iOS-only. Keep Play metadata in the fastlane `supply` layout so it
4
+ uploads with fastlane when available and stays diff-able either way:
5
+
6
+ ```
7
+ store/android/metadata/
8
+ └── es-MX/ # primary locale = app UI language
9
+ ├── title.txt # max 30 chars
10
+ ├── short_description.txt # max 80 chars — the search-result hook
11
+ ├── full_description.txt # max 4000 chars — derive from product definition
12
+ ├── video.txt # optional YouTube URL, else empty
13
+ └── images/
14
+ ├── icon.png # 512x512
15
+ ├── featureGraphic.png # 1024x500 — required for store listing
16
+ ├── phoneScreenshots/ # 2–8, ≥1080px wide, from the Maestro run
17
+ ├── sevenInchScreenshots/ # only if tablet UI exists
18
+ └── tenInchScreenshots/ # only if tablet UI exists
19
+ ```
20
+
21
+ Upload: `fastlane supply --metadata_path store/android/metadata --skip_upload_apk true --skip_upload_aab true`
22
+ (first release: paste manually in Play Console; the repo copy remains the source of truth).
@@ -0,0 +1,32 @@
1
+ {
2
+ "cli": {
3
+ "version": ">= 13.0.0",
4
+ "appVersionSource": "remote"
5
+ },
6
+ "build": {
7
+ "development": {
8
+ "developmentClient": true,
9
+ "distribution": "internal",
10
+ "environment": "development"
11
+ },
12
+ "preview": {
13
+ "distribution": "internal",
14
+ "channel": "preview",
15
+ "environment": "preview"
16
+ },
17
+ "production": {
18
+ "autoIncrement": true,
19
+ "channel": "production",
20
+ "environment": "production"
21
+ }
22
+ },
23
+ "submit": {
24
+ "production": {
25
+ "ios": {},
26
+ "android": {
27
+ "serviceAccountKeyPath": "../secrets/play-service-account.json",
28
+ "track": "internal"
29
+ }
30
+ }
31
+ }
32
+ }
@@ -0,0 +1,27 @@
1
+ # Screenshot flow — one per screenshot set. Run against a seeded demo account
2
+ # on the device matrix in references/pipeline.md (never Expo Go).
3
+ # Never hardcode credentials, even local seed ones — inject via -e:
4
+ # maestro test store/flows/screenshots.yaml -e DEMO_PASSWORD=your-local-seed-password
5
+ appId: com.example.app
6
+ ---
7
+ - launchApp:
8
+ clearState: true
9
+ # Launch-transition chrome can still be on screen right after launchApp —
10
+ # wait before the app is considered ready, and again before any screenshot.
11
+ - waitForAnimationToEnd
12
+ - assertVisible: "LOGIN_SCREEN_MARKER"
13
+ - tapOn: "EMAIL_FIELD_HINT"
14
+ - inputText: "demo@example.com"
15
+ - tapOn: "PASSWORD_FIELD_HINT"
16
+ - inputText: "${DEMO_PASSWORD}"
17
+ - tapOn: "LOGIN_CTA"
18
+ - waitForAnimationToEnd
19
+ # 1 — signature screen first: it becomes the store card image
20
+ - takeScreenshot: store/screenshots/tmp/01-signature
21
+ # 2..N — core loop, then differentiators
22
+ - tapOn: "TAB_2"
23
+ - waitForAnimationToEnd
24
+ - takeScreenshot: store/screenshots/tmp/02-core-loop
25
+ - tapOn: "TAB_3"
26
+ - waitForAnimationToEnd
27
+ - takeScreenshot: store/screenshots/tmp/03-differentiator
@@ -0,0 +1,28 @@
1
+ {
2
+ "configVersion": 0,
3
+ "apple": {
4
+ "info": {
5
+ "es-MX": {
6
+ "title": "APP_NAME_MAX_30",
7
+ "subtitle": "VALUE_PROMISE_MAX_30",
8
+ "description": "FULL_DESCRIPTION_MAX_4000\n\nDerive from docs/product-definition.md: core promise first, then features as user benefits.",
9
+ "keywords": ["domain", "nouns", "users", "search", "max-100-chars-total"],
10
+ "promoText": "PROMO_MAX_170_EDITABLE_WITHOUT_NEW_BUILD",
11
+ "marketingUrl": "https://example.com",
12
+ "supportUrl": "https://example.com/support",
13
+ "privacyPolicyUrl": "https://example.com/privacy"
14
+ }
15
+ },
16
+ "categories": ["PRIMARY_CATEGORY"],
17
+ "review": {
18
+ "firstName": "REVIEWER_CONTACT_FIRST",
19
+ "lastName": "REVIEWER_CONTACT_LAST",
20
+ "email": "contact@example.com",
21
+ "phone": "+521234567890",
22
+ "demoUsername": "demo@example.com",
23
+ "demoPassword": "SET_VIA_SECRET_BEFORE_PUSH",
24
+ "demoRequired": true,
25
+ "notes": "Accounts are admin-created; use the demo login above."
26
+ }
27
+ }
28
+ }