@hybridlabor-api/aos 4.12.1 → 4.13.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.
- package/.agents/vendor-manifest.json +6 -0
- package/.claude/agents/reviewer.md +1 -1
- package/.claude/agents/techlead.md +1 -1
- package/.opencode/agents/architect.md +1 -1
- package/.opencode/agents/reviewer.md +1 -1
- package/.opencode/agents/techlead.md +1 -1
- package/README.de.md +10 -9
- package/README.md +10 -9
- package/README.pt.md +10 -9
- package/THIRD_PARTY_NOTICES.md +94 -0
- package/bin/aos-store.mjs +48 -45
- package/installer.js +22 -20
- package/lib/scenario-store-index.json +1 -0
- package/lib/store-shared.mjs +81 -4
- package/lib/store-ui/index.html +14 -5
- package/lib/store-ui/server.mjs +44 -21
- package/package.json +2 -2
- package/scripts/build-plugin-manifest.mjs +33 -10
- package/scripts/build-scenario-store-index.mjs +154 -0
- package/skills/bdbrainstorm/SKILL.md +1 -0
- package/skills/global_config/agent-pipeline/SKILL.md +4 -0
- package/skills/global_config/aos-store/SKILL.md +3 -3
- package/skills/global_config/design-control-loop/SKILL.md +184 -0
- package/skills/global_config/design-control-loop/references/agent-iteration.ts +174 -0
- package/skills/global_config/design-control-loop/references/agent-runner-templates.md +157 -0
- package/skills/global_config/design-control-loop/references/control-loop-taxonomy.md +75 -0
- package/skills/global_config/design-control-loop/references/example-control-loop.md +57 -0
- package/skills/global_config/design-control-loop/references/example-skill.md +171 -0
- package/skills/global_config/design-control-loop/references/memory-template.md +7 -0
- package/skills/global_config/design-control-loop/references/prompt-template.md +58 -0
- package/skills/global_config/design-control-loop/references/response-template.md +103 -0
- package/skills/global_config/design-control-loop/references/skill-template.md +57 -0
- package/skills/global_config/design-control-loop/references/workflow-template.yml +273 -0
|
@@ -64,6 +64,12 @@
|
|
|
64
64
|
"purpose": "Generator/validator pairs for GitHub Actions, Dockerfile, bash scripts and Makefiles, with reference libraries",
|
|
65
65
|
"target_skill": "skills/global_config/{github-actions,dockerfile,bash-script,makefile}-{generator,validator}"
|
|
66
66
|
},
|
|
67
|
+
"humanlayer-skills": {
|
|
68
|
+
"upstream": "https://github.com/humanlayer/skills",
|
|
69
|
+
"pinned_commit": "ca7c8088db69e315a8b2deea43820270457f8f3c",
|
|
70
|
+
"purpose": "Interview-driven generator for recurring agentic control loops in CI (manual, opt-in, not a pipeline node)",
|
|
71
|
+
"target_skill": "design-control-loop"
|
|
72
|
+
},
|
|
67
73
|
"claude-code-templates": {
|
|
68
74
|
"upstream": "https://github.com/davila7/claude-code-templates",
|
|
69
75
|
"pinned_commit": "691832ad9c2506d15a8b752826135f0afa83d197",
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: reviewer
|
|
3
3
|
description: "Adversarial review of build-node output against the plan's stated contract, before Shipping runs its automated gate. Modeled on the `doubt-driven-development` discipline (see `.agents/graph.md`): reads the artifacts and the contract, never the implementer's claim that it's done, never their reasoning — passing the claim biases toward agreement. Prompted adversarially (\"find what is wrong,\" never \"does this look good\"). Classifies every finding by a fixed precedence (contract misread → valid & actionable → valid trade-off → noise). The dispatcher escalates instead of repeating a cycle if a repair round reports the exact same finding ID Reviewer already flagged (a no-progress guard — see `.agents/graph.md`'s Reviewer discipline for why this replaced the original \"two clean cycles\" framing)."
|
|
4
|
-
model:
|
|
4
|
+
model: opus
|
|
5
5
|
---
|
|
6
6
|
Adversarial review of build-node output against the plan's stated contract, before Shipping runs its automated gate. Modeled on the `doubt-driven-development` discipline (see `.agents/graph.md`): reads the artifacts and the contract, never the implementer's claim that it's done, never their reasoning — passing the claim biases toward agreement. Prompted adversarially ("find what is wrong," never "does this look good"). Classifies every finding by a fixed precedence (contract misread → valid & actionable → valid trade-off → noise). The dispatcher escalates instead of repeating a cycle if a repair round reports the exact same finding ID Reviewer already flagged (a no-progress guard — see `.agents/graph.md`'s Reviewer discipline for why this replaced the original "two clean cycles" framing).
|
|
7
7
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: techlead
|
|
3
3
|
description: "Reviews Architect's plan for a capability map (module boundaries, dependency direction, build order) before any build node starts. Approves or rejects the plan back to Architect. Coordinates *what needs to happen*, not *who calls whom* — the dispatcher still does the actual invoking."
|
|
4
|
-
model:
|
|
4
|
+
model: sonnet
|
|
5
5
|
---
|
|
6
6
|
Reviews Architect's plan for a capability map (module boundaries, dependency direction, build order) before any build node starts. Approves or rejects the plan back to Architect. Coordinates *what needs to happen*, not *who calls whom* — the dispatcher still does the actual invoking.
|
|
7
7
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
description: "Turns the user's goal (or `/bdbrainstorm` / `/grill-me` output) into a system plan. Reads existing architecture before proposing changes. Does not coordinate execution or invoke other agents — that is TechLead's job, decided by the dispatcher, not by Architect."
|
|
3
3
|
mode: subagent
|
|
4
|
-
model:
|
|
4
|
+
model: opencode/muse-spark-1.3-contributor-free
|
|
5
5
|
---
|
|
6
6
|
Turns the user's goal (or `/bdbrainstorm` / `/grill-me` output) into a system plan. Reads existing architecture before proposing changes. Does not coordinate execution or invoke other agents — that is TechLead's job, decided by the dispatcher, not by Architect.
|
|
7
7
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
description: "Adversarial review of build-node output against the plan's stated contract, before Shipping runs its automated gate. Modeled on the `doubt-driven-development` discipline (see `.agents/graph.md`): reads the artifacts and the contract, never the implementer's claim that it's done, never their reasoning — passing the claim biases toward agreement. Prompted adversarially (\"find what is wrong,\" never \"does this look good\"). Classifies every finding by a fixed precedence (contract misread → valid & actionable → valid trade-off → noise). The dispatcher escalates instead of repeating a cycle if a repair round reports the exact same finding ID Reviewer already flagged (a no-progress guard — see `.agents/graph.md`'s Reviewer discipline for why this replaced the original \"two clean cycles\" framing)."
|
|
3
3
|
mode: subagent
|
|
4
|
-
model:
|
|
4
|
+
model: opencode/muse-spark-1.3-contributor-free
|
|
5
5
|
---
|
|
6
6
|
Adversarial review of build-node output against the plan's stated contract, before Shipping runs its automated gate. Modeled on the `doubt-driven-development` discipline (see `.agents/graph.md`): reads the artifacts and the contract, never the implementer's claim that it's done, never their reasoning — passing the claim biases toward agreement. Prompted adversarially ("find what is wrong," never "does this look good"). Classifies every finding by a fixed precedence (contract misread → valid & actionable → valid trade-off → noise). The dispatcher escalates instead of repeating a cycle if a repair round reports the exact same finding ID Reviewer already flagged (a no-progress guard — see `.agents/graph.md`'s Reviewer discipline for why this replaced the original "two clean cycles" framing).
|
|
7
7
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
description: "Reviews Architect's plan for a capability map (module boundaries, dependency direction, build order) before any build node starts. Approves or rejects the plan back to Architect. Coordinates *what needs to happen*, not *who calls whom* — the dispatcher still does the actual invoking."
|
|
3
3
|
mode: subagent
|
|
4
|
-
model:
|
|
4
|
+
model: opencode/muse-spark-1.3-contributor-free
|
|
5
5
|
---
|
|
6
6
|
Reviews Architect's plan for a capability map (module boundaries, dependency direction, build order) before any build node starts. Approves or rejects the plan back to Architect. Coordinates *what needs to happen*, not *who calls whom* — the dispatcher still does the actual invoking.
|
|
7
7
|
|
package/README.de.md
CHANGED
|
@@ -11,10 +11,11 @@
|
|
|
11
11
|
[](https://github.com/hybridlabor-api/aos/actions)
|
|
12
12
|
[](LICENSE)
|
|
13
13
|
[](package.json)
|
|
14
|
-
[](#skills)
|
|
15
15
|
[](#mcp-server)
|
|
16
16
|
[](#unterstützte-harnesses)
|
|
17
17
|
[](https://github.com/NVIDIA/SkillSpector)
|
|
18
|
+
[](https://skills.sh/hybridlabor-api/aos)
|
|
18
19
|
|
|
19
20
|
AOS installiert eine kuratierte Skill-Bibliothek, ein Subagent-Verzeichnis, Gate-Hooks und eine ausführbare Multi-Agent-Build-Pipeline in jeden auf deinem Rechner installierten Coding-Agent-Harness.
|
|
20
21
|
|
|
@@ -26,7 +27,7 @@ Entwickelt für Nutzer, die bereits **Claude Code, Google Antigravity, Codex CLI
|
|
|
26
27
|
|
|
27
28
|
Nach der Installation hast du:
|
|
28
29
|
|
|
29
|
-
- **<!-- count:skills -->
|
|
30
|
+
- **<!-- count:skills -->214<!-- /count --> Skills** in sechs Kategorien, von jedem Harness als `<name>/SKILL.md` auffindbar.
|
|
30
31
|
- **<!-- count:agents -->13<!-- /count --> Subagents** (Architect, TechLead, Reviewer, die Godmodes, Security- und Silent-Failure-Reviewer) als natives Agenten-Format jedes Harness kompiliert.
|
|
31
32
|
- **<!-- count:mcps -->21<!-- /count --> MCP-Server** für Creative Software, Betriebssystemsteuerung, Memory und Harness-übergreifende Delegation.
|
|
32
33
|
- **Drei Pipelines** — `/startcycle`, `/startcycle-graph`, `/startcycle-graph-user` — und ein **GO-Gate**, das `git push`, `npm publish`, `npm version` und rekursive `rm` mechanisch blockiert.
|
|
@@ -173,7 +174,7 @@ Das Erreichen von `ready_to_ship` ist kein Versand. [`.claude/hooks/go-gate.mjs`
|
|
|
173
174
|
| Plan Canvas | `aos-plan-canvas open <file>` (skill `plan-canvas`) | Öffnet einen Plan oder HTML-Artefakt in einer lokalen Browser-Canvas, wo du Elemente annotierst, chattest und Änderungen genehmigst oder anforderst. Pläne aus den Pipelines öffnen sich hier standardmäßig. |
|
|
174
175
|
| agenttrail | `aos-trail` (skill `agenttrail`, port 5330) | Live-Board einer Multi-Agent-Build: welche Komponente, welcher Agent oder Harness, was ist fertig, was ist stecken geblieben. Gespeist von den Trail-Relay-Hooks und von `mcsc`. |
|
|
175
176
|
| archify | `aos-archify` (skill `archify`) | Validierte Architektur-, Sequenz-, Datenfluss- und State-Diagramme als eigenständige HTML mit SVG-Export; akzeptiert Mermaid. |
|
|
176
|
-
| AOS Store | `aos store list \| search <q> \| install <name> [--project]`, `aos store ui` (auch `aos-store`, slash command `/aos-store`) | Durchsuche und installiere AOS Core und
|
|
177
|
+
| AOS Store | `aos store list \| search <q> \| install <name> [--project]`, `aos store ui` (auch `aos-store`, slash command `/aos-store`) | Durchsuche und installiere Skills und Agents aus AOS Core, ECC und Scenario (scenario-labs/skills, MIT); benötigte Skills werden mitinstalliert, jede Datei wird per SHA-256 geprüft. Die Web-UI auf `http://127.0.0.1:4322` zeigt, was installiert ist, zeigt die genauen Zielpfade in der Vorschau an und installiert nur nach deiner Bestätigung. Multi-Datei-Skills werden komplett installiert. `list` und `search` lesen einen angehefteten Offline-Index. |
|
|
177
178
|
| Launchpad | `aos-dashboard [--port 7900] [--no-open]` | Eine Seite mit jedem lokalen BDB-Service (memB, Synapse, OpenWiki, AO, Remote, AOS Store): Status, Start/Stop, Logs. Registriert als Autostart-Eintrag. |
|
|
178
179
|
| Doctor | `aos doctor [--json] [--net]` (auch `aos-doctor`) | Überprüft Abhängigkeiten, Skill-Platzierung pro Harness, Daemons, Hooks und Module; beendet sich mit 1, wenn etwas Aufmerksamkeit benötigt. Das erste, das zu laufen ist, wenn etwas nicht funktioniert. |
|
|
179
180
|
| Config | `aos-config show \| propose \| set <key> <value>` | Maschinenebene `~/.agents/aos-config.json`: Workspace-Root, Domänen, Benutzer-ID. |
|
|
@@ -207,7 +208,7 @@ Installiere es durch den AOS Installer mit dem AOS CLI Target: `npx -y @hybridla
|
|
|
207
208
|
npx skills add hybridlabor-api/aos
|
|
208
209
|
```
|
|
209
210
|
|
|
210
|
-
Dies entdeckt alle <!-- count:skills -->
|
|
211
|
+
Dies entdeckt alle <!-- count:skills -->214<!-- /count --> kuratierten Skills und installiert sie in das universelle `~/.agents/skills` Verzeichnis (verwendet von allen Harnesses und dem AOS CLI).
|
|
211
212
|
|
|
212
213
|
---
|
|
213
214
|
|
|
@@ -248,22 +249,22 @@ Der Dispatcher-Graph kompiliert diese Agents, verfügbar als Claude Code Subagen
|
|
|
248
249
|
|
|
249
250
|
### Skills nach Kategorie
|
|
250
251
|
|
|
251
|
-
<!-- count:skills -->
|
|
252
|
+
<!-- count:skills -->214<!-- /count --> kuratierte Skills, von jedem Harness auffindbar:
|
|
252
253
|
|
|
253
|
-
- **bdb-core** (
|
|
254
|
+
- **bdb-core** (31 Skills): Core AOS Infrastruktur, Pipelines, Tools und Utilities — `startcycle`, `startcycle-graph`, `startcycle-graph-user`, `agent-orchestrator`, `agenttrail`, `plan-canvas`, `aos-doctor`, `aos-store`, `bdb-dev-os-skill` und mehr.
|
|
254
255
|
- **design-ui-ux** (19 Skills): Frontend, UI Design, Barrierefreiheit, Tokens, Motion, Anti-Slop — `senior-frontend`, `ui-component`, `ui-review`, `tailwind-patterns`, `shadcn`, `wcag-audit-patterns` und mehr.
|
|
255
256
|
- **engineering-method** (46 Skills): Architektur, Testing, Debugging, CI/CD, Code-Qualität — `software-architecture`, `test-driven-development`, `systematic-debugging`, `ci-pipeline`, `github-actions-generator`, `dockerfile-validator` und mehr.
|
|
256
257
|
- **library** (98 Skills): Language/Framework-Spezifika — TypeScript, Node.js, Python, React, Postgres, Prisma, Next.js, Drizzle ORM, Go und mehr.
|
|
257
258
|
- **media-eventtech** (19 Skills): 3D, Video, Show Control, Spatial Design — `godmode-eventtech`, `synapse-integration-skill`, `threejs-skills`, `blender-expert` und mehr.
|
|
258
259
|
- **engineering-hardware** (1 Skill): PCB und Electrical Design — `godmode-hardware-pcb`.
|
|
259
260
|
|
|
260
|
-
Der vollständige Katalog mit detaillierten Beschreibungen: [docs/skills_table.md](docs/skills_table.md) — Hinweis: Diese Datei ist veraltet und listet 164 von
|
|
261
|
+
Der vollständige Katalog mit detaillierten Beschreibungen: [docs/skills_table.md](docs/skills_table.md) — Hinweis: Diese Datei ist veraltet und listet 164 von 214 Skills auf.
|
|
261
262
|
|
|
262
263
|
---
|
|
263
264
|
|
|
264
265
|
## Skills
|
|
265
266
|
|
|
266
|
-
<!-- count:skills -->
|
|
267
|
+
<!-- count:skills -->214<!-- /count --> Skills, kuratiert aus Open-Source- und proprietären Sammlungen, die die gesamte Software-Entwicklung und Creative-Pipeline abdecken. Jeder Skill ist ein Verzeichnis mit einem `SKILL.md` Frontmatter, das `name`, `description` und eine `category` erklärt: `bdb-core`, `design-ui-ux`, `engineering-method`, `engineering-hardware`, `media-eventtech`, `library`.
|
|
267
268
|
|
|
268
269
|
**Persona Layer:** Die **Godmode** Skills sind spezialisierte Personas, die direkt den Build- und Shipping-Knoten des Dispatcher-Graphs zugeordnet sind:
|
|
269
270
|
|
|
@@ -286,7 +287,7 @@ Der vollständige Katalog mit detaillierten Beschreibungen: [docs/skills_table.m
|
|
|
286
287
|
- **Code Qualität** — `bdb-security-audit`, `systematic-debugging`, `silent-failure-hunter`, `bdbresilience`
|
|
287
288
|
- **Framework Spezialisten** — Vollständige Abdeckung von TypeScript, React, Next.js, Drizzle ORM, Prisma, Python, Go und mehr
|
|
288
289
|
|
|
289
|
-
Der vollständige Katalog mit Beschreibungen und Details: [docs/skills_table.md](docs/skills_table.md) (Hinweis: listet derzeit 164 von
|
|
290
|
+
Der vollständige Katalog mit Beschreibungen und Details: [docs/skills_table.md](docs/skills_table.md) (Hinweis: listet derzeit 164 von 214).
|
|
290
291
|
|
|
291
292
|
Die Bibliothek ist auch durch die `skills` CLI lesbar:
|
|
292
293
|
|
package/README.md
CHANGED
|
@@ -11,10 +11,11 @@
|
|
|
11
11
|
[](https://github.com/hybridlabor-api/aos/actions)
|
|
12
12
|
[](LICENSE)
|
|
13
13
|
[](package.json)
|
|
14
|
-
[](#skills)
|
|
15
15
|
[](#mcp-servers)
|
|
16
16
|
[](#supported-harnesses)
|
|
17
17
|
[](https://github.com/NVIDIA/SkillSpector)
|
|
18
|
+
[](https://skills.sh/hybridlabor-api/aos)
|
|
18
19
|
|
|
19
20
|
AOS installs a curated skill library, a subagent roster, gate hooks and a runnable multi-agent build pipeline into every coding-agent harness on your machine.
|
|
20
21
|
|
|
@@ -26,7 +27,7 @@ Built for people who already run **Claude Code, Google Antigravity, Codex CLI, O
|
|
|
26
27
|
|
|
27
28
|
After install you have:
|
|
28
29
|
|
|
29
|
-
- **<!-- count:skills -->
|
|
30
|
+
- **<!-- count:skills -->214<!-- /count --> skills** in six categories, discoverable by every harness as `<name>/SKILL.md`.
|
|
30
31
|
- **<!-- count:agents -->13<!-- /count --> subagents** (Architect, TechLead, Reviewer, the Godmodes, security and silent-failure reviewers) compiled into each harness's native agent format.
|
|
31
32
|
- **<!-- count:mcps -->21<!-- /count --> MCP servers** for creative software, OS control, memory and cross-harness delegation.
|
|
32
33
|
- **Three pipelines** — `/startcycle`, `/startcycle-graph`, `/startcycle-graph-user` — and a **GO gate** that mechanically blocks `git push`, `npm publish`, `npm version` and recursive `rm`.
|
|
@@ -173,7 +174,7 @@ Reaching `ready_to_ship` is not shipping. [`.claude/hooks/go-gate.mjs`](.claude/
|
|
|
173
174
|
| Plan Canvas | `aos-plan-canvas open <file>` (skill `plan-canvas`) | Opens a plan or HTML artifact in a local browser canvas where you annotate elements, chat, and approve or request changes. Plans from the pipelines open here by default. |
|
|
174
175
|
| agenttrail | `aos-trail` (skill `agenttrail`, port 5330) | Live board of a multi-agent build: which component, which agent or harness, what is done, what is stuck. Fed by the trail-relay hooks and by `mcsc`. |
|
|
175
176
|
| archify | `aos-archify` (skill `archify`) | Validated architecture, sequence, data-flow and state diagrams as standalone HTML with SVG export; accepts Mermaid. |
|
|
176
|
-
| AOS Store | `aos store list \| search <q> \| install <name> [--project]`, `aos store ui` (also `aos-store`, slash command `/aos-store`) | Browse and install AOS Core and
|
|
177
|
+
| AOS Store | `aos store list \| search <q> \| install <name> [--project]`, `aos store ui` (also `aos-store`, slash command `/aos-store`) | Browse and install AOS Core, ECC and Scenario (scenario-labs/skills, MIT) skills and agents; required skills are installed together and every file is SHA-256 verified. The web UI on `http://127.0.0.1:4322` shows what is installed, previews the exact target paths, and installs only after you confirm. Multi-file skills are installed completely. `list` and `search` read a pinned offline index. |
|
|
177
178
|
| Launchpad | `aos-dashboard [--port 7900] [--no-open]` | One page with every local BDB service (memB, Synapse, OpenWiki, AO, Remote, AOS Store): status, start/stop, logs. Registered as an autostart entry. |
|
|
178
179
|
| Doctor | `aos doctor [--json] [--net]` (also `aos-doctor`) | Verifies dependencies, skill placement per harness, daemons, hooks and modules; exits 1 when something needs attention. The first thing to run when anything misbehaves. |
|
|
179
180
|
| Config | `aos-config show \| propose \| set <key> <value>` | Machine-level `~/.agents/aos-config.json`: workspace root, domains, user id. |
|
|
@@ -207,7 +208,7 @@ Install it through the AOS installer with the AOS CLI target: `npx -y @hybridlab
|
|
|
207
208
|
npx skills add hybridlabor-api/aos
|
|
208
209
|
```
|
|
209
210
|
|
|
210
|
-
This discovers all <!-- count:skills -->
|
|
211
|
+
This discovers all <!-- count:skills -->214<!-- /count --> curated skills and installs them into the universal `~/.agents/skills` directory (used by all harnesses and the AOS CLI).
|
|
211
212
|
|
|
212
213
|
---
|
|
213
214
|
|
|
@@ -248,22 +249,22 @@ The dispatcher graph compiles these agents, available as Claude Code subagents a
|
|
|
248
249
|
|
|
249
250
|
### Skills by Category
|
|
250
251
|
|
|
251
|
-
<!-- count:skills -->
|
|
252
|
+
<!-- count:skills -->214<!-- /count --> curated skills, discoverable by every harness:
|
|
252
253
|
|
|
253
|
-
- **bdb-core** (
|
|
254
|
+
- **bdb-core** (31 skills): Core AOS infrastructure, pipelines, tools, and utilities — `startcycle`, `startcycle-graph`, `startcycle-graph-user`, `agent-orchestrator`, `agenttrail`, `plan-canvas`, `aos-doctor`, `aos-store`, `bdb-dev-os-skill`, and more.
|
|
254
255
|
- **design-ui-ux** (19 skills): Frontend, UI design, accessibility, tokens, motion, anti-slop — `senior-frontend`, `ui-component`, `ui-review`, `tailwind-patterns`, `shadcn`, `wcag-audit-patterns`, and more.
|
|
255
256
|
- **engineering-method** (46 skills): Architecture, testing, debugging, CI/CD, code quality — `software-architecture`, `test-driven-development`, `systematic-debugging`, `ci-pipeline`, `github-actions-generator`, `dockerfile-validator`, and more.
|
|
256
257
|
- **library** (98 skills): Language/framework specifics — TypeScript, Node.js, Python, React, Postgres, Prisma, Next.js, Drizzle ORM, Go, and more.
|
|
257
258
|
- **media-eventtech** (19 skills): 3D, video, show control, spatial design — `godmode-eventtech`, `synapse-integration-skill`, `threejs-skills`, `blender-expert`, and more.
|
|
258
259
|
- **engineering-hardware** (1 skill): PCB and electrical design — `godmode-hardware-pcb`.
|
|
259
260
|
|
|
260
|
-
The full catalog with detailed descriptions: [docs/skills_table.md](docs/skills_table.md) — note: this file is out of date and lists 164 of
|
|
261
|
+
The full catalog with detailed descriptions: [docs/skills_table.md](docs/skills_table.md) — note: this file is out of date and lists 164 of 214 skills.
|
|
261
262
|
|
|
262
263
|
---
|
|
263
264
|
|
|
264
265
|
## Skills
|
|
265
266
|
|
|
266
|
-
<!-- count:skills -->
|
|
267
|
+
<!-- count:skills -->214<!-- /count --> skills, curated from open-source and proprietary collections, covering the full software development and creative pipeline. Every skill is a directory with a `SKILL.md` frontmatter declaring `name`, `description`, and one `category`: `bdb-core`, `design-ui-ux`, `engineering-method`, `engineering-hardware`, `media-eventtech`, `library`.
|
|
267
268
|
|
|
268
269
|
**Persona Layer:** The **Godmode** skills are specialized personas that directly map to the build and ship nodes of the dispatcher graph:
|
|
269
270
|
|
|
@@ -286,7 +287,7 @@ The full catalog with detailed descriptions: [docs/skills_table.md](docs/skills_
|
|
|
286
287
|
- **Code Quality** — `bdb-security-audit`, `systematic-debugging`, `silent-failure-hunter`, `bdbresilience`
|
|
287
288
|
- **Framework Specialists** — Full coverage of TypeScript, React, Next.js, Drizzle ORM, Prisma, Python, Go, and more
|
|
288
289
|
|
|
289
|
-
The full catalog with descriptions and details: [docs/skills_table.md](docs/skills_table.md) (note: currently lists 164 of
|
|
290
|
+
The full catalog with descriptions and details: [docs/skills_table.md](docs/skills_table.md) (note: currently lists 164 of 214).
|
|
290
291
|
|
|
291
292
|
The library is also readable by the `skills` CLI:
|
|
292
293
|
|
package/README.pt.md
CHANGED
|
@@ -11,10 +11,11 @@
|
|
|
11
11
|
[](https://github.com/hybridlabor-api/aos/actions)
|
|
12
12
|
[](LICENSE)
|
|
13
13
|
[](package.json)
|
|
14
|
-
[](#skills)
|
|
15
15
|
[](#servidores-mcp)
|
|
16
16
|
[](#harnesses-suportados)
|
|
17
17
|
[](https://github.com/NVIDIA/SkillSpector)
|
|
18
|
+
[](https://skills.sh/hybridlabor-api/aos)
|
|
18
19
|
|
|
19
20
|
AOS instala uma biblioteca de skills curada, um roster de subagentes, hooks de portão e um pipeline multi-agente executável em todos os harnesses de agentes de código da sua máquina.
|
|
20
21
|
|
|
@@ -26,7 +27,7 @@ Construído para pessoas que já executam **Claude Code, Google Antigravity, Cod
|
|
|
26
27
|
|
|
27
28
|
Após a instalação, você tem:
|
|
28
29
|
|
|
29
|
-
- **<!-- count:skills -->
|
|
30
|
+
- **<!-- count:skills -->214<!-- /count --> skills** em seis categorias, descobríveis por cada harness como `<name>/SKILL.md`.
|
|
30
31
|
- **<!-- count:agents -->13<!-- /count --> subagentes** (Architect, TechLead, Reviewer, os Godmodes, revisores de segurança e falhas silenciosas) compilados em cada formato nativo de agente do harness.
|
|
31
32
|
- **<!-- count:mcps -->21<!-- /count --> servidores MCP** para software criativo, controle de SO, memória e delegação entre harnesses.
|
|
32
33
|
- **Três pipelines** — `/startcycle`, `/startcycle-graph`, `/startcycle-graph-user` — e um **portão GO** que bloqueia mecanicamente `git push`, `npm publish`, `npm version` e `rm` recursivo.
|
|
@@ -173,7 +174,7 @@ Alcançar `ready_to_ship` não é enviar. [`.claude/hooks/go-gate.mjs`](.claude/
|
|
|
173
174
|
| Plan Canvas | `aos-plan-canvas open <file>` (skill `plan-canvas`) | Abre um plano ou artefato HTML em um canvas de navegador local onde você anota elementos, conversa e aprova ou solicita mudanças. Planos dos pipelines abrem aqui por padrão. |
|
|
174
175
|
| agenttrail | `aos-trail` (skill `agenttrail`, porta 5330) | Quadro ao vivo de uma compilação multi-agente: qual componente, qual agente ou harness, o que está pronto, o que está preso. Alimentado pelos hooks trail-relay e por `mcsc`. |
|
|
175
176
|
| archify | `aos-archify` (skill `archify`) | Arquitetura validada, sequência, fluxo de dados e diagramas de estado como HTML autossuficiente com exportação SVG; aceita Mermaid. |
|
|
176
|
-
| AOS Store | `aos store list \| search <q> \| install <name> [--project]`, `aos store ui` (também `aos-store`, comando slash `/aos-store`) | Procure e instale skills e agentes AOS Core e
|
|
177
|
+
| AOS Store | `aos store list \| search <q> \| install <name> [--project]`, `aos store ui` (também `aos-store`, comando slash `/aos-store`) | Procure e instale skills e agentes do AOS Core, do ECC e do Scenario (scenario-labs/skills, MIT); as skills necessárias são instaladas juntas e cada arquivo é verificado por SHA-256. A interface web em `http://127.0.0.1:4322` mostra o que está instalado, visualiza o exato caminho de alvo e instala apenas após você confirmar. Skills multi-arquivo são instaladas completamente. `list` e `search` leem um índice fixo offline. |
|
|
177
178
|
| Launchpad | `aos-dashboard [--port 7900] [--no-open]` | Uma página com todos os serviços BDB locais (memB, Synapse, OpenWiki, AO, Remote, AOS Store): status, iniciar/parar, logs. Registrado como entrada de inicialização automática. |
|
|
178
179
|
| Doctor | `aos doctor [--json] [--net]` (também `aos-doctor`) | Verifica dependências, posicionamento de skills por harness, daemons, hooks e módulos; sai com 1 quando algo precisa de atenção. A primeira coisa a executar quando algo se comporta mal. |
|
|
179
180
|
| Config | `aos-config show \| propose \| set <key> <value>` | Nível de máquina `~/.agents/aos-config.json`: raiz do workspace, domínios, id do usuário. |
|
|
@@ -207,7 +208,7 @@ Instale através do instalador AOS com o alvo AOS CLI: `npx -y @hybridlabor-api/
|
|
|
207
208
|
npx skills add hybridlabor-api/aos
|
|
208
209
|
```
|
|
209
210
|
|
|
210
|
-
Isto descobre todas as <!-- count:skills -->
|
|
211
|
+
Isto descobre todas as <!-- count:skills -->214<!-- /count --> skills curadas e as instala no diretório universal `~/.agents/skills` (usado por todos os harnesses e o AOS CLI).
|
|
211
212
|
|
|
212
213
|
---
|
|
213
214
|
|
|
@@ -248,22 +249,22 @@ O grafo do dispatcher compila estes agentes, disponíveis como subagentes Claude
|
|
|
248
249
|
|
|
249
250
|
### Skills por Categoria
|
|
250
251
|
|
|
251
|
-
<!-- count:skills -->
|
|
252
|
+
<!-- count:skills -->214<!-- /count --> skills curadas, descobríveis por todo harness:
|
|
252
253
|
|
|
253
|
-
- **bdb-core** (
|
|
254
|
+
- **bdb-core** (31 skills): Infraestrutura AOS principal, pipelines, ferramentas e utilidades — `startcycle`, `startcycle-graph`, `startcycle-graph-user`, `agent-orchestrator`, `agenttrail`, `plan-canvas`, `aos-doctor`, `aos-store`, `bdb-dev-os-skill` e mais.
|
|
254
255
|
- **design-ui-ux** (19 skills): Frontend, design UI, acessibilidade, tokens, movimento, anti-slop — `senior-frontend`, `ui-component`, `ui-review`, `tailwind-patterns`, `shadcn`, `wcag-audit-patterns` e mais.
|
|
255
256
|
- **engineering-method** (46 skills): Arquitetura, testes, debugging, CI/CD, qualidade de código — `software-architecture`, `test-driven-development`, `systematic-debugging`, `ci-pipeline`, `github-actions-generator`, `dockerfile-validator` e mais.
|
|
256
257
|
- **library** (98 skills): Especificidades de linguagem/framework — TypeScript, Node.js, Python, React, Postgres, Prisma, Next.js, Drizzle ORM, Go e mais.
|
|
257
258
|
- **media-eventtech** (19 skills): 3D, vídeo, controle de shows, design espacial — `godmode-eventtech`, `synapse-integration-skill`, `threejs-skills`, `blender-expert` e mais.
|
|
258
259
|
- **engineering-hardware** (1 skill): Design de PCB e elétrico — `godmode-hardware-pcb`.
|
|
259
260
|
|
|
260
|
-
O catálogo completo com descrições detalhadas: [docs/skills_table.md](docs/skills_table.md) — nota: este arquivo está desatualizado e lista 164 de
|
|
261
|
+
O catálogo completo com descrições detalhadas: [docs/skills_table.md](docs/skills_table.md) — nota: este arquivo está desatualizado e lista 164 de 214 skills.
|
|
261
262
|
|
|
262
263
|
---
|
|
263
264
|
|
|
264
265
|
## Skills
|
|
265
266
|
|
|
266
|
-
<!-- count:skills -->
|
|
267
|
+
<!-- count:skills -->214<!-- /count --> skills, curadas de coleções de código aberto e proprietárias, cobrindo o pipeline completo de desenvolvimento de software e criativo. Cada skill é um diretório com um `SKILL.md` frontmatter declarando `name`, `description` e uma `category`: `bdb-core`, `design-ui-ux`, `engineering-method`, `engineering-hardware`, `media-eventtech`, `library`.
|
|
267
268
|
|
|
268
269
|
**Camada de Persona:** As skills **Godmode** são personas especializadas que mapeiam diretamente para os nós de compilação e envio do grafo do dispatcher:
|
|
269
270
|
|
|
@@ -286,7 +287,7 @@ O catálogo completo com descrições detalhadas: [docs/skills_table.md](docs/sk
|
|
|
286
287
|
- **Qualidade de Código** — `bdb-security-audit`, `systematic-debugging`, `silent-failure-hunter`, `bdbresilience`
|
|
287
288
|
- **Especialistas de Framework** — Cobertura completa de TypeScript, React, Next.js, Drizzle ORM, Prisma, Python, Go e mais
|
|
288
289
|
|
|
289
|
-
O catálogo completo com descrições e detalhes: [docs/skills_table.md](docs/skills_table.md) (nota: atualmente lista 164 de
|
|
290
|
+
O catálogo completo com descrições e detalhes: [docs/skills_table.md](docs/skills_table.md) (nota: atualmente lista 164 de 214).
|
|
290
291
|
|
|
291
292
|
A biblioteca também é legível pela CLI `skills`:
|
|
292
293
|
|
package/THIRD_PARTY_NOTICES.md
CHANGED
|
@@ -413,7 +413,101 @@ store. Reasons are in `docs/handover/` and the branch description for
|
|
|
413
413
|
|
|
414
414
|
---
|
|
415
415
|
|
|
416
|
+
## humanlayer/skills
|
|
417
|
+
|
|
418
|
+
<https://github.com/humanlayer/skills> — MIT. Copyright (c) 2026 HumanLayer.
|
|
419
|
+
|
|
420
|
+
Tracked in `.agents/vendor-manifest.json` at pinned commit
|
|
421
|
+
`ca7c8088db69e315a8b2deea43820270457f8f3c`.
|
|
422
|
+
|
|
423
|
+
One skill is vendored as `skills/global_config/design-control-loop/`
|
|
424
|
+
(`SKILL.md` plus its 10 `references/` files, including the unmodified
|
|
425
|
+
`agent-iteration.ts` and `workflow-template.yml` templates). The upstream
|
|
426
|
+
`.claude-plugin/plugin.json` was not carried over.
|
|
427
|
+
|
|
428
|
+
AOS modifications, all in `SKILL.md` only: `category:`, `source:` and `license:`
|
|
429
|
+
added to the frontmatter; one delimited "AOS notes" section inserted directly
|
|
430
|
+
after the H1. Upstream prose and all `references/` files are byte-identical.
|
|
431
|
+
|
|
432
|
+
```
|
|
433
|
+
MIT License
|
|
434
|
+
|
|
435
|
+
Copyright (c) 2026 HumanLayer
|
|
436
|
+
|
|
437
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
438
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
439
|
+
in the Software without restriction, including without limitation the rights
|
|
440
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
441
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
442
|
+
furnished to do so, subject to the following conditions:
|
|
443
|
+
|
|
444
|
+
The above copyright notice and this permission notice shall be included in all
|
|
445
|
+
copies or substantial portions of the Software.
|
|
446
|
+
|
|
447
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
448
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
449
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
450
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
451
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
452
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
453
|
+
SOFTWARE.
|
|
454
|
+
```
|
|
455
|
+
|
|
456
|
+
---
|
|
457
|
+
|
|
416
458
|
## Note on `mcps/`
|
|
417
459
|
|
|
418
460
|
Sub-repositories vendored under `mcps/` carry their own `LICENSE` files in
|
|
419
461
|
their own directories and are not restated here.
|
|
462
|
+
|
|
463
|
+
---
|
|
464
|
+
|
|
465
|
+
## scenario-labs/skills
|
|
466
|
+
|
|
467
|
+
- **Upstream:** <https://github.com/scenario-labs/skills>
|
|
468
|
+
- **License:** MIT
|
|
469
|
+
- **Copyright:** Copyright (c) 2026 Scenario
|
|
470
|
+
- **Pinned commit:** `5786accd3bb6d79808330230c698898862e8a1d4`
|
|
471
|
+
|
|
472
|
+
### Store index (second AOS Store source)
|
|
473
|
+
|
|
474
|
+
The AOS Store lists a starter set of skills from this project through
|
|
475
|
+
`lib/scenario-store-index.json` (regenerated by
|
|
476
|
+
`scripts/build-scenario-store-index.mjs` from a local clone and the pinned
|
|
477
|
+
commit). The index holds metadata and a per-file SHA-256 list only. The files
|
|
478
|
+
are not vendored: they are downloaded from
|
|
479
|
+
`https://raw.githubusercontent.com/scenario-labs/skills/<pinned commit>/` on
|
|
480
|
+
demand, only after an explicit `--net` or UI confirmation, and each file is
|
|
481
|
+
verified against its SHA-256 before anything is written.
|
|
482
|
+
|
|
483
|
+
Some of these skills contain Python and C# scripts, one of which
|
|
484
|
+
(`scenario-unity-expert`) executes code received through a local channel
|
|
485
|
+
without authentication. The store and its UI mark this before installation.
|
|
486
|
+
|
|
487
|
+
The MIT license covers the software and documentation in that repository. The
|
|
488
|
+
Scenario name and logo are trademarks of their owner and are **not** licensed
|
|
489
|
+
by it; AOS does not use the logo.
|
|
490
|
+
|
|
491
|
+
```
|
|
492
|
+
MIT License
|
|
493
|
+
|
|
494
|
+
Copyright (c) 2026 Scenario
|
|
495
|
+
|
|
496
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
497
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
498
|
+
in the Software without restriction, including without limitation the rights
|
|
499
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
500
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
501
|
+
furnished to do so, subject to the following conditions:
|
|
502
|
+
|
|
503
|
+
The above copyright notice and this permission notice shall be included in all
|
|
504
|
+
copies or substantial portions of the Software.
|
|
505
|
+
|
|
506
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
507
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
508
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
509
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
510
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
511
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
512
|
+
SOFTWARE.
|
|
513
|
+
```
|
package/bin/aos-store.mjs
CHANGED
|
@@ -1,15 +1,13 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
|
|
3
3
|
import { createHash } from 'node:crypto';
|
|
4
|
-
import { mkdirSync,
|
|
5
|
-
import { dirname,
|
|
4
|
+
import { mkdirSync, writeFileSync } from 'node:fs';
|
|
5
|
+
import { dirname, resolve } from 'node:path';
|
|
6
6
|
import { fileURLToPath } from 'node:url';
|
|
7
|
-
import { fetchSkillFiles, fileTargets, localAgents, localSkills, targetsFor as sharedTargetsFor, validateFiles,
|
|
7
|
+
import { fetchSkillFiles, fileTargets, findItem, installPlan, loadSources, localAgents, localSkills, planSkillFiles, planSummary, targetsFor as sharedTargetsFor, validateFiles, writePlan } from '../lib/store-shared.mjs';
|
|
8
8
|
|
|
9
9
|
const ROOT = resolve(dirname(fileURLToPath(import.meta.url)), '..');
|
|
10
|
-
const
|
|
11
|
-
const RAW_BASE = (process.env.AOS_STORE_RAW_BASE || 'https://raw.githubusercontent.com/affaan-m/ECC').replace(/\/+$/, '');
|
|
12
|
-
const index = JSON.parse(readFileSync(INDEX_PATH, 'utf8'));
|
|
10
|
+
const sources = loadSources(ROOT);
|
|
13
11
|
const args = process.argv.slice(2);
|
|
14
12
|
const dryRun = args.includes('--dry-run');
|
|
15
13
|
const project = args.includes('--project');
|
|
@@ -17,21 +15,9 @@ const net = args.includes('--net');
|
|
|
17
15
|
const positional = args.filter((arg) => !arg.startsWith('--'));
|
|
18
16
|
const option = (name) => args.find((arg) => arg === name || arg.startsWith(`${name}=`))?.split('=').slice(1).join('=');
|
|
19
17
|
|
|
20
|
-
function loadIndex() {
|
|
21
|
-
if (!index.pinned_commit || !index.skills || !index.subagents) throw new Error('Invalid AOS store index');
|
|
22
|
-
return index;
|
|
23
|
-
}
|
|
24
|
-
|
|
25
18
|
function allItems(type) {
|
|
26
19
|
const selected = type === 'agents' || type === 'subagents' ? 'subagents' : 'skills';
|
|
27
|
-
return Object.entries(index[selected] || {}).map(([name, item]) => ({ name, item, type: selected }));
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
function findItem(name) {
|
|
31
|
-
for (const type of ['skills', 'subagents']) {
|
|
32
|
-
if (index[type]?.[name]) return { name, item: index[type][name], type };
|
|
33
|
-
}
|
|
34
|
-
return null;
|
|
20
|
+
return sources.flatMap((src) => Object.entries(src.index[selected] || {}).map(([name, item]) => ({ name, item, type: selected, src })));
|
|
35
21
|
}
|
|
36
22
|
|
|
37
23
|
const localSkillNames = () => new Set(localSkills(ROOT).keys());
|
|
@@ -42,15 +28,15 @@ function printItems(items) {
|
|
|
42
28
|
console.log('No store items found.');
|
|
43
29
|
return;
|
|
44
30
|
}
|
|
45
|
-
for (const { name, item, type } of items) {
|
|
31
|
+
for (const { name, item, type, src } of items) {
|
|
46
32
|
const kind = type === 'skills' ? 'skill' : 'agent';
|
|
47
|
-
console.log(`${kind}\t${name}\t${item.category}\t${item.description}`);
|
|
33
|
+
console.log(`${kind}\t${name}\t${item.category}\t${src.label}\t${item.description}`);
|
|
48
34
|
}
|
|
49
35
|
console.log(`\n${items.length} item(s).`);
|
|
50
36
|
}
|
|
51
37
|
|
|
52
|
-
async function download(upstreamPath) {
|
|
53
|
-
const url = `${
|
|
38
|
+
async function download(src, upstreamPath) {
|
|
39
|
+
const url = `${src.raw_base}/${src.pinned_commit}/${upstreamPath}`;
|
|
54
40
|
const response = await fetch(url, { headers: { 'user-agent': 'aos-store' } });
|
|
55
41
|
if (!response.ok) throw new Error(`Download failed (${response.status}): ${url}`);
|
|
56
42
|
return Buffer.from(await response.arrayBuffer());
|
|
@@ -60,42 +46,60 @@ const targetsFor = (type, name) => sharedTargetsFor(type, name, { project });
|
|
|
60
46
|
|
|
61
47
|
async function install(name) {
|
|
62
48
|
if (!/^[A-Za-z0-9_-]+$/.test(name)) throw new Error(`Invalid store name: ${name}`);
|
|
63
|
-
const found = findItem(name);
|
|
49
|
+
const found = findItem(sources, name);
|
|
64
50
|
if (!found) throw new Error(`Store item not found: ${name}`);
|
|
65
|
-
const {
|
|
51
|
+
const { type, src } = found;
|
|
66
52
|
const coreNames = type === 'skills' ? localSkillNames() : localAgentNames();
|
|
67
53
|
if (coreNames.has(name)) {
|
|
68
54
|
console.log(`Skipped ${name}: AOS core already provides it.`);
|
|
69
55
|
return;
|
|
70
56
|
}
|
|
71
|
-
const
|
|
72
|
-
const
|
|
73
|
-
|
|
57
|
+
const plan = installPlan(sources, found).filter((p) => !(p.type === 'skills' && p.name !== name && localSkillNames().has(p.name)));
|
|
58
|
+
for (const p of plan) if (p.item.files?.length > 1) validateFiles(p.item.files);
|
|
59
|
+
const multi = (p) => p.type === 'skills' && p.item.files?.length > 1;
|
|
60
|
+
const summary = planSummary(plan);
|
|
61
|
+
const notes = [];
|
|
62
|
+
if (summary.requires.length) notes.push(`also installs required skill(s): ${summary.requires.join(', ')}`);
|
|
63
|
+
if (summary.execBridge) notes.push(`WARNING: contains a script that executes code received over a local socket or file channel without authentication (${summary.execBridgeFiles.map((f) => `${f.skill}/${f.path}`).join(', ')}); install only if you use this bridge`);
|
|
64
|
+
else if (summary.hasScripts) notes.push(`WARNING: contains ${summary.scriptCount} script file(s); review before use`);
|
|
74
65
|
if (dryRun) {
|
|
75
|
-
for (const
|
|
76
|
-
|
|
77
|
-
|
|
66
|
+
for (const note of notes) console.log(note);
|
|
67
|
+
for (const p of plan) {
|
|
68
|
+
for (const target of targetsFor(p.type, p.name)) {
|
|
69
|
+
if (multi(p)) for (const file of fileTargets(target, p.item.files)) console.log(`[dry-run] write ${file}`);
|
|
70
|
+
else console.log(`[dry-run] write ${target}`);
|
|
71
|
+
}
|
|
78
72
|
}
|
|
79
73
|
return;
|
|
80
74
|
}
|
|
81
75
|
if (!net) {
|
|
82
76
|
throw new Error(`Downloading '${name}' requires internet access to fetch from upstream GitHub. Pass --net to confirm: aos store install ${name} --net`);
|
|
83
77
|
}
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
78
|
+
// All-or-nothing: download, hash-check and path-check every skill in memory before the first write.
|
|
79
|
+
const writes = [];
|
|
80
|
+
for (const p of plan) {
|
|
81
|
+
const pSrc = p.src;
|
|
82
|
+
let files;
|
|
83
|
+
if (multi(p)) {
|
|
84
|
+
files = await fetchSkillFiles(pSrc.raw_base, pSrc.pinned_commit, dirname(p.item.upstream_path), p.item.files);
|
|
85
|
+
} else {
|
|
86
|
+
const content = await download(pSrc, p.item.upstream_path);
|
|
87
|
+
const digest = createHash('sha256').update(content).digest('hex');
|
|
88
|
+
if (digest !== p.item.sha256) throw new Error(`SHA-256 mismatch for ${p.name}: expected ${p.item.sha256}, got ${digest}`);
|
|
89
|
+
files = null;
|
|
90
|
+
for (const target of targetsFor(p.type, p.name)) writes.push({ name: p.name, single: { target, content } });
|
|
89
91
|
}
|
|
90
|
-
|
|
92
|
+
if (files) for (const target of targetsFor(p.type, p.name)) writes.push({ name: p.name, target, plan: planSkillFiles(target, files) });
|
|
91
93
|
}
|
|
92
|
-
const
|
|
93
|
-
const
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
94
|
+
for (const note of notes) console.log(note);
|
|
95
|
+
for (const w of writes) {
|
|
96
|
+
if (w.single) {
|
|
97
|
+
mkdirSync(dirname(w.single.target), { recursive: true });
|
|
98
|
+
writeFileSync(w.single.target, w.single.content);
|
|
99
|
+
console.log(`Installed ${w.name} -> ${w.single.target}`);
|
|
100
|
+
} else {
|
|
101
|
+
console.log(`Installed ${w.name} (${writePlan(w.plan).length} files) -> ${dirname(w.target)}`);
|
|
102
|
+
}
|
|
99
103
|
}
|
|
100
104
|
}
|
|
101
105
|
|
|
@@ -108,7 +112,6 @@ function usage() {
|
|
|
108
112
|
}
|
|
109
113
|
|
|
110
114
|
async function main() {
|
|
111
|
-
loadIndex();
|
|
112
115
|
const command = positional[0] || 'list';
|
|
113
116
|
if (command === 'list') {
|
|
114
117
|
printItems(allItems(option('--type') || 'skills'));
|