@agents-inc/cli 0.71.0 → 0.73.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/CHANGELOG.md +25 -0
- package/README.md +172 -23
- package/dist/{chunk-V5L532ZH.js → chunk-3K6FSET7.js} +6 -6
- package/dist/{chunk-HWVRHPXR.js → chunk-3REVX6S5.js} +11 -11
- package/dist/chunk-3REVX6S5.js.map +1 -0
- package/dist/{chunk-CADG5WWP.js → chunk-3VNQPCOE.js} +2511 -2688
- package/dist/chunk-3VNQPCOE.js.map +1 -0
- package/dist/{chunk-KANNRFY7.js → chunk-4KLUOFP6.js} +6 -7
- package/dist/chunk-4KLUOFP6.js.map +1 -0
- package/dist/{chunk-FCF4WQEI.js → chunk-6JRQPSKV.js} +2 -2
- package/dist/chunk-6JRQPSKV.js.map +1 -0
- package/dist/{chunk-ZYUASJUN.js → chunk-BH4LN7XV.js} +8 -6
- package/dist/chunk-BH4LN7XV.js.map +1 -0
- package/dist/{chunk-6YMW4HMX.js → chunk-DNPJ5GUK.js} +6 -6
- package/dist/chunk-DNPJ5GUK.js.map +1 -0
- package/dist/chunk-E74Q7GUE.js +5132 -0
- package/dist/chunk-E74Q7GUE.js.map +1 -0
- package/dist/{chunk-XYRVAEI6.js → chunk-EMWP363L.js} +8 -10
- package/dist/chunk-EMWP363L.js.map +1 -0
- package/dist/chunk-EMX7PA2I.js +39 -0
- package/dist/chunk-EMX7PA2I.js.map +1 -0
- package/dist/{chunk-KSAGOKWT.js → chunk-G23HPF6K.js} +3 -3
- package/dist/chunk-GDUOOT3J.js +689 -0
- package/dist/chunk-GDUOOT3J.js.map +1 -0
- package/dist/{chunk-X4RIMJNY.js → chunk-GSFZDUV2.js} +4 -4
- package/dist/chunk-GSFZDUV2.js.map +1 -0
- package/dist/{chunk-XB3TYSPL.js → chunk-H4ETXZVL.js} +6 -6
- package/dist/{chunk-XMZNHLV3.js → chunk-JHMECCBN.js} +4 -5
- package/dist/chunk-JHMECCBN.js.map +1 -0
- package/dist/{chunk-UDAHHJIM.js → chunk-K7WYMQQB.js} +18 -20
- package/dist/chunk-K7WYMQQB.js.map +1 -0
- package/dist/{chunk-AX6MMYAZ.js → chunk-KE2EAVFQ.js} +4 -4
- package/dist/{chunk-CKPJTMNC.js → chunk-KSMT5FVM.js} +4 -4
- package/dist/chunk-KSMT5FVM.js.map +1 -0
- package/dist/{chunk-KWB3B2HS.js → chunk-NKKYTCBH.js} +109 -86
- package/dist/chunk-NKKYTCBH.js.map +1 -0
- package/dist/{chunk-52THXN5G.js → chunk-NUJHWYCR.js} +2 -2
- package/dist/{chunk-QOJAZI72.js → chunk-OLWGGD4G.js} +20 -15
- package/dist/chunk-OLWGGD4G.js.map +1 -0
- package/dist/{chunk-UQM5YPPJ.js → chunk-PNZCVOCE.js} +5 -5
- package/dist/chunk-PNZCVOCE.js.map +1 -0
- package/dist/chunk-SRIH4U5Y.js +159 -0
- package/dist/chunk-SRIH4U5Y.js.map +1 -0
- package/dist/{chunk-6BXKF5GP.js → chunk-T7QY777F.js} +2 -2
- package/dist/{chunk-DHBRWGRZ.js → chunk-TNSVPZHP.js} +20 -2
- package/dist/chunk-TNSVPZHP.js.map +1 -0
- package/dist/{chunk-J2D6OBIX.js → chunk-V5HR77EY.js} +117 -13
- package/dist/chunk-V5HR77EY.js.map +1 -0
- package/dist/{chunk-R3AR4VLZ.js → chunk-WJL4KU5V.js} +70 -240
- package/dist/chunk-WJL4KU5V.js.map +1 -0
- package/dist/{chunk-VUUGWE6G.js → chunk-Y47CLMWE.js} +2 -2
- package/dist/{chunk-2VT2DMD7.js → chunk-Y4VUU5BT.js} +12 -14
- package/dist/chunk-Y4VUU5BT.js.map +1 -0
- package/dist/{chunk-L6MTIQ2U.js → chunk-ZBLSWJFM.js} +2 -2
- package/dist/chunk-ZBLSWJFM.js.map +1 -0
- package/dist/commands/build/marketplace.js +4 -3
- package/dist/commands/build/marketplace.js.map +1 -1
- package/dist/commands/build/plugins.js +9 -8
- package/dist/commands/build/plugins.js.map +1 -1
- package/dist/commands/build/stack.js +9 -8
- package/dist/commands/build/stack.js.map +1 -1
- package/dist/commands/compile.js +14 -10
- package/dist/commands/compile.js.map +1 -1
- package/dist/commands/config/index.js +9 -8
- package/dist/commands/config/index.js.map +1 -1
- package/dist/commands/config/path.js +8 -7
- package/dist/commands/config/path.js.map +1 -1
- package/dist/commands/config/show.js +9 -8
- package/dist/commands/diff.js +8 -7
- package/dist/commands/diff.js.map +1 -1
- package/dist/commands/doctor.js +13 -14
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/edit.js +33 -35
- package/dist/commands/edit.js.map +1 -1
- package/dist/commands/eject.js +15 -13
- package/dist/commands/eject.js.map +1 -1
- package/dist/commands/import/skill.js +8 -7
- package/dist/commands/import/skill.js.map +1 -1
- package/dist/commands/info.js +12 -11
- package/dist/commands/info.js.map +1 -1
- package/dist/commands/init.js +28 -27
- package/dist/commands/list.js +8 -7
- package/dist/commands/list.js.map +1 -1
- package/dist/commands/new/agent.js +9 -8
- package/dist/commands/new/agent.js.map +1 -1
- package/dist/commands/new/marketplace.js +12 -15
- package/dist/commands/new/marketplace.js.map +1 -1
- package/dist/commands/new/skill.js +9 -8
- package/dist/commands/outdated.js +8 -7
- package/dist/commands/outdated.js.map +1 -1
- package/dist/commands/search.js +9 -10
- package/dist/commands/search.js.map +1 -1
- package/dist/commands/uninstall.js +8 -7
- package/dist/commands/uninstall.js.map +1 -1
- package/dist/commands/update.js +10 -10
- package/dist/commands/update.js.map +1 -1
- package/dist/commands/validate.js +16 -18
- package/dist/commands/validate.js.map +1 -1
- package/dist/components/wizard/category-grid.js +2 -2
- package/dist/components/wizard/category-grid.test.js +17 -66
- package/dist/components/wizard/category-grid.test.js.map +1 -1
- package/dist/components/wizard/domain-selection.js +10 -9
- package/dist/components/wizard/search-modal.test.js.map +1 -1
- package/dist/components/wizard/source-grid.js +4 -4
- package/dist/components/wizard/source-grid.test.js +22 -20
- package/dist/components/wizard/source-grid.test.js.map +1 -1
- package/dist/components/wizard/stack-selection.js +9 -8
- package/dist/components/wizard/step-agents.js +10 -9
- package/dist/components/wizard/step-agents.test.js +15 -14
- package/dist/components/wizard/step-agents.test.js.map +1 -1
- package/dist/components/wizard/step-build.js +11 -10
- package/dist/components/wizard/step-build.test.js +17 -16
- package/dist/components/wizard/step-build.test.js.map +1 -1
- package/dist/components/wizard/step-confirm.js +5 -4
- package/dist/components/wizard/step-confirm.test.js +11 -10
- package/dist/components/wizard/step-confirm.test.js.map +1 -1
- package/dist/components/wizard/step-settings.js +9 -8
- package/dist/components/wizard/step-settings.test.js +12 -11
- package/dist/components/wizard/step-settings.test.js.map +1 -1
- package/dist/components/wizard/step-sources.js +14 -13
- package/dist/components/wizard/step-sources.test.js +19 -18
- package/dist/components/wizard/step-sources.test.js.map +1 -1
- package/dist/components/wizard/step-stack.js +12 -11
- package/dist/components/wizard/step-stack.test.js +16 -15
- package/dist/components/wizard/step-stack.test.js.map +1 -1
- package/dist/components/wizard/wizard-layout.js +9 -8
- package/dist/components/wizard/wizard.js +26 -25
- package/dist/config-exports.js +1 -1
- package/dist/hooks/init.js +28 -27
- package/dist/hooks/init.js.map +1 -1
- package/dist/{loader-CMSC3RAO.js → loader-XQ3WBTVP.js} +4 -3
- package/dist/source-loader-F4PGP6LH.js +18 -0
- package/dist/source-manager-QCIO4XZK.js +20 -0
- package/dist/stores/wizard-store.js +8 -7
- package/dist/stores/wizard-store.test.js +34 -33
- package/dist/stores/wizard-store.test.js.map +1 -1
- package/package.json +2 -1
- package/src/schemas/custom-metadata.schema.json +81 -0
- package/src/schemas/metadata.schema.json +127 -41
- package/src/schemas/stacks.schema.json +3 -45
- package/dist/chunk-2VT2DMD7.js.map +0 -1
- package/dist/chunk-6YMW4HMX.js.map +0 -1
- package/dist/chunk-BKL3DF2Q.js +0 -45
- package/dist/chunk-BKL3DF2Q.js.map +0 -1
- package/dist/chunk-CADG5WWP.js.map +0 -1
- package/dist/chunk-CKPJTMNC.js.map +0 -1
- package/dist/chunk-DA3WIZ4C.js +0 -253
- package/dist/chunk-DA3WIZ4C.js.map +0 -1
- package/dist/chunk-DHBRWGRZ.js.map +0 -1
- package/dist/chunk-FCF4WQEI.js.map +0 -1
- package/dist/chunk-HWVRHPXR.js.map +0 -1
- package/dist/chunk-J2D6OBIX.js.map +0 -1
- package/dist/chunk-KANNRFY7.js.map +0 -1
- package/dist/chunk-KWB3B2HS.js.map +0 -1
- package/dist/chunk-L6MTIQ2U.js.map +0 -1
- package/dist/chunk-QOJAZI72.js.map +0 -1
- package/dist/chunk-R3AR4VLZ.js.map +0 -1
- package/dist/chunk-T4EXUIBY.js +0 -19
- package/dist/chunk-T4EXUIBY.js.map +0 -1
- package/dist/chunk-UDAHHJIM.js.map +0 -1
- package/dist/chunk-UQM5YPPJ.js.map +0 -1
- package/dist/chunk-X4RIMJNY.js.map +0 -1
- package/dist/chunk-XMZNHLV3.js.map +0 -1
- package/dist/chunk-XYRVAEI6.js.map +0 -1
- package/dist/chunk-ZYUASJUN.js.map +0 -1
- package/dist/source-loader-3MZ2MBOF.js +0 -17
- package/dist/source-manager-NEH6QXE5.js +0 -19
- package/dist/stores/matrix-store.js +0 -15
- package/dist/stores/matrix-store.js.map +0 -1
- package/dist/stores/matrix-store.test.js +0 -127
- package/dist/stores/matrix-store.test.js.map +0 -1
- /package/dist/{chunk-V5L532ZH.js.map → chunk-3K6FSET7.js.map} +0 -0
- /package/dist/{chunk-KSAGOKWT.js.map → chunk-G23HPF6K.js.map} +0 -0
- /package/dist/{chunk-XB3TYSPL.js.map → chunk-H4ETXZVL.js.map} +0 -0
- /package/dist/{chunk-AX6MMYAZ.js.map → chunk-KE2EAVFQ.js.map} +0 -0
- /package/dist/{chunk-52THXN5G.js.map → chunk-NUJHWYCR.js.map} +0 -0
- /package/dist/{chunk-6BXKF5GP.js.map → chunk-T7QY777F.js.map} +0 -0
- /package/dist/{chunk-VUUGWE6G.js.map → chunk-Y47CLMWE.js.map} +0 -0
- /package/dist/{loader-CMSC3RAO.js.map → loader-XQ3WBTVP.js.map} +0 -0
- /package/dist/{source-loader-3MZ2MBOF.js.map → source-loader-F4PGP6LH.js.map} +0 -0
- /package/dist/{source-manager-NEH6QXE5.js.map → source-manager-QCIO4XZK.js.map} +0 -0
package/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,31 @@ Each release has detailed notes in its own file under [`changelogs/`](./changelo
|
|
|
7
7
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
|
|
8
8
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
9
9
|
|
|
10
|
+
## [0.73.0] - 2026-03-12
|
|
11
|
+
|
|
12
|
+
**Matrix extraction, schema hardening, setup removal**
|
|
13
|
+
|
|
14
|
+
- Extract matrix-provider and skill-resolution from matrix-store/matrix-loader
|
|
15
|
+
- Remove extensible schema infrastructure — generated enums replace runtime extension
|
|
16
|
+
- Remove unused SetupPair/requiresSetup/providesSetupFor infrastructure
|
|
17
|
+
- Add strict and custom metadata JSON schema variants
|
|
18
|
+
|
|
19
|
+
See [changelogs/0.73.0.md](./changelogs/0.73.0.md) for full details.
|
|
20
|
+
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
## [0.72.0] - 2026-03-12
|
|
24
|
+
|
|
25
|
+
**Generated source types codegen**
|
|
26
|
+
|
|
27
|
+
- Codegen script replaces manually-maintained type unions with generated source of truth
|
|
28
|
+
- Strict slug validation at parse boundaries via Zod enum schemas
|
|
29
|
+
- Orphan categories removed, default configuration cleaned up
|
|
30
|
+
|
|
31
|
+
See [changelogs/0.72.0.md](./changelogs/0.72.0.md) for full details.
|
|
32
|
+
|
|
33
|
+
---
|
|
34
|
+
|
|
10
35
|
## [0.71.0] - 2026-03-11
|
|
11
36
|
|
|
12
37
|
**Reusable SelectList component, Dashboard and GlobalConfigPrompt UX overhaul**
|
package/README.md
CHANGED
|
@@ -1,40 +1,189 @@
|
|
|
1
|
-
|
|
1
|
+
<p align="center">
|
|
2
|
+
<img alt="Agents Inc" src="./assets/logo.svg" width="300">
|
|
3
|
+
</p>
|
|
2
4
|
|
|
3
|
-
|
|
5
|
+
# Agents Inc
|
|
4
6
|
|
|
5
|
-
|
|
7
|
+
An agent composition framework that builds stacks and compiles specialized subagents for [Claude Code](https://docs.anthropic.com/en/docs/claude-code). Manage your subagents and skills with code via a unified CLI.
|
|
6
8
|
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
9
|
+
[](https://www.npmjs.com/package/@agents-inc/cli)
|
|
10
|
+
[](https://www.typescriptlang.org/)
|
|
11
|
+
[](./LICENSE)
|
|
12
|
+
[](https://nodejs.org/)
|
|
13
|
+
|
|
14
|
+
<!-- TODO: Add animated GIF of the full init wizard flow (stack selection -> skill grid -> agent config -> done).
|
|
15
|
+
This is the hero image. It should show the complete happy path in ~15-20 seconds.
|
|
16
|
+
<p align="center">
|
|
17
|
+
<img src="./assets/init-wizard.gif" alt="Agents Inc init wizard" width="700">
|
|
18
|
+
</p>
|
|
19
|
+
-->
|
|
20
|
+
|
|
21
|
+
## Overview
|
|
22
|
+
|
|
23
|
+
Agents Inc comprises two parts:
|
|
24
|
+
|
|
25
|
+
- **[Marketplace](https://github.com/agents-inc/skills):** 87+ atomic, best-practice skills spanning web, API, CLI, infra, and meta domains
|
|
26
|
+
- **CLI:** installs, ejects, creates, compiles, and updates skills and subagents
|
|
11
27
|
|
|
12
|
-
|
|
28
|
+
Skills are composed into 18+ domain-specific subagents through templates and modular agent partials, all validated against strict Zod schemas. Everything is ejectable so there's endless customisation with no lock-in.
|
|
29
|
+
|
|
30
|
+
## How It Works
|
|
31
|
+
|
|
32
|
+
Each subagent is composed from modular partials (role, workflow, output format) plus a set of atomic skills. The CLI manages the full lifecycle:
|
|
33
|
+
|
|
34
|
+
- **Install:** pull skills from the public marketplace, your own, or a local directory either as plugins or directly as source files
|
|
35
|
+
- **Compose:** map skills to subagents, configure preloaded vs dynamic loading
|
|
36
|
+
- **Compile:** resolve skill mappings, Liquid templates, and agent partials into `.claude/agents/`
|
|
37
|
+
- **Eject:** take progressive ownership of any layer (partials, templates, skills, subagents)
|
|
38
|
+
- **Update:** pull upstream skill changes without losing local customizations
|
|
39
|
+
|
|
40
|
+
## Getting Started
|
|
13
41
|
|
|
14
42
|
```bash
|
|
15
|
-
|
|
43
|
+
npx @agents-inc/cli init
|
|
16
44
|
```
|
|
17
45
|
|
|
18
|
-
|
|
46
|
+
Requires Node 18+ and [Claude Code](https://docs.anthropic.com/en/docs/claude-code).
|
|
47
|
+
|
|
48
|
+
The wizard has three steps:
|
|
49
|
+
|
|
50
|
+
**1. Pick a stack or start from scratch** (or create your own in your custom marketplace):
|
|
51
|
+
|
|
52
|
+
| Stack | Technologies |
|
|
53
|
+
| ------------------ | ------------------------------------------------------------------ |
|
|
54
|
+
| `nextjs-fullstack` | Next.js + React + Hono + Drizzle + PostHog + Zustand + React Query |
|
|
55
|
+
| `angular-stack` | Angular 19 + Signals + NgRx SignalStore + Hono + Drizzle |
|
|
56
|
+
| `vue-stack` | Vue 3 Composition API + Pinia + Hono + Drizzle |
|
|
57
|
+
| `nuxt-stack` | Nuxt + Vue 3 full-stack + Pinia + Hono + Drizzle |
|
|
58
|
+
| `remix-stack` | Remix + React + Hono + Drizzle |
|
|
59
|
+
| `solidjs-stack` | SolidJS + Hono + Drizzle |
|
|
60
|
+
|
|
61
|
+
**2. Customize skills.** Add or remove from the interactive grid.
|
|
62
|
+
|
|
63
|
+
**3. Select subagents.** Choose which role-based subagents to include.
|
|
64
|
+
|
|
65
|
+
**4. Compile.** After init, use `agentsinc edit` to change selections and `agentsinc compile` to rebuild.
|
|
66
|
+
|
|
67
|
+
## Skills
|
|
68
|
+
|
|
69
|
+
87+ skills organized by category:
|
|
70
|
+
|
|
71
|
+
**Web:** `React` `Vue` `Angular` `SolidJS` `Next.js` `Remix` `Nuxt` `SCSS Modules` `CVA` `Zustand` `Pinia` `NgRx SignalStore` `Jotai` `React Query` `SWR` `tRPC` `GraphQL` `React Hook Form` `Zod` `shadcn/ui` `Radix UI` `TanStack Table` `Vitest` `Playwright` `Cypress` `MSW` `Framer Motion` `Storybook` `Accessibility`
|
|
72
|
+
|
|
73
|
+
**API:** `Hono` `Express` `Fastify` `Drizzle` `Prisma` `Better Auth` `PostHog` `Resend` `Axiom + Pino + Sentry` `GitHub Actions`
|
|
74
|
+
|
|
75
|
+
**Mobile:** `React Native` `Expo`
|
|
76
|
+
|
|
77
|
+
**CLI:** `Commander` `oclif + Ink`
|
|
19
78
|
|
|
20
|
-
|
|
21
|
-
- `metadata.yaml` -- Skill metadata (category, author, description, custom: true)
|
|
79
|
+
**Infra:** `Turborepo` `Tooling` `Env config`
|
|
22
80
|
|
|
23
|
-
|
|
81
|
+
**Meta:** `Code reviewing` `Research methodology` `Investigation requirements` `Anti-over-engineering` `Context management`
|
|
24
82
|
|
|
25
|
-
|
|
83
|
+
## Subagents
|
|
84
|
+
|
|
85
|
+
17 roles across 7 categories:
|
|
86
|
+
|
|
87
|
+
| Category | Subagents |
|
|
88
|
+
| ---------------- | ------------------------------------------------------------------ |
|
|
89
|
+
| Developers | `web-developer` `api-developer` `cli-developer` `web-architecture` |
|
|
90
|
+
| Reviewers | `web-reviewer` `api-reviewer` `cli-reviewer` |
|
|
91
|
+
| Testers | `web-tester` `cli-tester` |
|
|
92
|
+
| Researchers | `web-researcher` `api-researcher` |
|
|
93
|
+
| Planning | `web-pm` |
|
|
94
|
+
| Pattern Analysis | `pattern-scout` `web-pattern-critique` |
|
|
95
|
+
| Documentation | `documentor` |
|
|
96
|
+
| Meta | `skill-summoner` `agent-summoner` |
|
|
97
|
+
|
|
98
|
+
## Commands
|
|
99
|
+
|
|
100
|
+
### Primary
|
|
101
|
+
|
|
102
|
+
| Command | Description |
|
|
103
|
+
| --------- | --------------------------------------------------------------------------- |
|
|
104
|
+
| `init` | Interactive setup wizard: pick a stack, customize skills, compile subagents |
|
|
105
|
+
| `edit` | Modify skill selection in the interactive wizard |
|
|
106
|
+
| `compile` | Recompile subagents after changes |
|
|
107
|
+
| `update` | Pull latest skills from source |
|
|
108
|
+
|
|
109
|
+
### Customization
|
|
110
|
+
|
|
111
|
+
| Command | Description |
|
|
112
|
+
| -------------- | ----------------------------------------------------------------------------------------------------------------- |
|
|
113
|
+
| `eject <type>` | Export for customization (`agent-partials`, `templates`, `skills`, `all`) |
|
|
114
|
+
| `new skill` | Scaffold a custom skill  |
|
|
115
|
+
| `new agent` | Scaffold a custom agent  |
|
|
116
|
+
| `import skill` | Import a skill from an external GitHub repository  |
|
|
117
|
+
| `search` | Search skills across sources  |
|
|
118
|
+
|
|
119
|
+
### Diagnostics
|
|
120
|
+
|
|
121
|
+
| Command | Description |
|
|
122
|
+
| ----------- | ------------------------------------------------------------------------------------------------------------ |
|
|
123
|
+
| `doctor` | Diagnose setup issues |
|
|
124
|
+
| `diff` | Show changes between local and source skills  |
|
|
125
|
+
| `outdated` | Check for skill updates |
|
|
126
|
+
| `validate` | Validate config and skill structure |
|
|
127
|
+
| `info` | Show project configuration details |
|
|
128
|
+
| `uninstall` | Remove Agents Inc from your project |
|
|
129
|
+
|
|
130
|
+
Run `agentsinc --help` for full usage.
|
|
131
|
+
|
|
132
|
+
## Customization
|
|
133
|
+
|
|
134
|
+
Progressive layers from config to full extension:
|
|
135
|
+
|
|
136
|
+
| Layer | How |
|
|
137
|
+
| --------------- | ---------------------------------------------------------------------------------------------- |
|
|
138
|
+
| Edit config | `.claude-src/config.yaml`; skill-to-subagent mappings, preloaded/dynamic |
|
|
139
|
+
| Wizard | `agentsinc edit`; add/remove skills interactively |
|
|
140
|
+
| Eject partials | `agentsinc eject agent-partials`; customize agent partials such as intro, workflow, and output |
|
|
141
|
+
| Eject templates | `agentsinc eject templates`; modify Liquid templates |
|
|
142
|
+
| Eject skills | `agentsinc eject skills`; fork skills for local editing |
|
|
143
|
+
| Custom skills | `agentsinc new skill`; scaffold with proper metadata |
|
|
144
|
+
| Custom agents | `agentsinc new agent`; scaffold agent files |
|
|
145
|
+
| Custom sources | Point to a private repo or local directory as a skill source |
|
|
146
|
+
| Plugins | Package skills/subagents as Claude Code plugins for distribution |
|
|
147
|
+
|
|
148
|
+
Templates apply globally across all subagents; partials apply to specific roles. Put shared conventions in a template for consistency, and role-specific behaviour in partials.
|
|
149
|
+
|
|
150
|
+
Import skills from any GitHub repository:
|
|
26
151
|
|
|
27
152
|
```bash
|
|
28
|
-
|
|
29
|
-
agentsinc
|
|
153
|
+
agentsinc import skill github:your-org/skills --list
|
|
154
|
+
agentsinc import skill github:your-org/skills --skill react-best-practices
|
|
155
|
+
agentsinc import skill github:your-org/skills --all
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
## Tech Stack
|
|
159
|
+
|
|
160
|
+
| Component | Technology |
|
|
161
|
+
| ------------ | ------------------------------------- |
|
|
162
|
+
| Commands | oclif |
|
|
163
|
+
| Terminal UI | Ink + React |
|
|
164
|
+
| Wizard state | Zustand |
|
|
165
|
+
| Validation | Zod (30+ schemas at parse boundaries) |
|
|
166
|
+
| Compilation | LiquidJS |
|
|
167
|
+
| Testing | Vitest |
|
|
30
168
|
|
|
31
|
-
|
|
32
|
-
|
|
169
|
+
```
|
|
170
|
+
src/cli/
|
|
171
|
+
commands/ # oclif command definitions
|
|
172
|
+
components/ # Ink/React terminal UI components
|
|
173
|
+
lib/ # Core logic (compiler, loader, resolver, schemas)
|
|
174
|
+
stores/ # Zustand state management
|
|
175
|
+
utils/ # Shared utilities
|
|
176
|
+
src/agents/ # Subagent definitions (18 roles)
|
|
177
|
+
config/ # Skills matrix, stacks, default mappings
|
|
33
178
|
```
|
|
34
179
|
|
|
35
|
-
|
|
180
|
+
See [docs/reference/architecture.md](./docs/reference/architecture.md) for the full reference.
|
|
181
|
+
|
|
182
|
+
## Links
|
|
183
|
+
|
|
184
|
+
- [Plugin Marketplace](https://github.com/agents-inc/skills): browse and discover skills
|
|
185
|
+
- [Architecture Reference](./docs/reference/architecture.md): full system documentation
|
|
186
|
+
|
|
187
|
+
## License
|
|
36
188
|
|
|
37
|
-
|
|
38
|
-
and stacks from `config/stacks.ts`.
|
|
39
|
-
Custom categories are discovered from skill `metadata.yaml` files with `custom: true`.
|
|
40
|
-
Custom skills appear alongside built-in ones in the wizard. No manual registration needed.
|
|
189
|
+
MIT
|
|
@@ -2,21 +2,21 @@
|
|
|
2
2
|
import {
|
|
3
3
|
FEATURE_FLAGS
|
|
4
4
|
} from "./chunk-HGTC76BX.js";
|
|
5
|
-
import {
|
|
6
|
-
SourceGrid
|
|
7
|
-
} from "./chunk-6YMW4HMX.js";
|
|
8
5
|
import {
|
|
9
6
|
useMeasuredHeight
|
|
10
7
|
} from "./chunk-K77I4XGL.js";
|
|
11
8
|
import {
|
|
12
9
|
SelectionCard
|
|
13
10
|
} from "./chunk-MWGDG4QN.js";
|
|
11
|
+
import {
|
|
12
|
+
SourceGrid
|
|
13
|
+
} from "./chunk-DNPJ5GUK.js";
|
|
14
14
|
import {
|
|
15
15
|
ViewTitle
|
|
16
16
|
} from "./chunk-AQYAVLZK.js";
|
|
17
17
|
import {
|
|
18
18
|
useWizardStore
|
|
19
|
-
} from "./chunk-
|
|
19
|
+
} from "./chunk-OLWGGD4G.js";
|
|
20
20
|
import {
|
|
21
21
|
HOTKEY_SET_ALL_LOCAL,
|
|
22
22
|
HOTKEY_SET_ALL_PLUGIN,
|
|
@@ -27,7 +27,7 @@ import {
|
|
|
27
27
|
import {
|
|
28
28
|
resolveAllSources,
|
|
29
29
|
searchExtraSources
|
|
30
|
-
} from "./chunk-
|
|
30
|
+
} from "./chunk-3VNQPCOE.js";
|
|
31
31
|
import {
|
|
32
32
|
CLI_COLORS,
|
|
33
33
|
DEFAULT_BRANDING
|
|
@@ -181,4 +181,4 @@ var StepSources = ({ projectDir, onContinue, onBack }) => {
|
|
|
181
181
|
export {
|
|
182
182
|
StepSources
|
|
183
183
|
};
|
|
184
|
-
//# sourceMappingURL=chunk-
|
|
184
|
+
//# sourceMappingURL=chunk-3K6FSET7.js.map
|
|
@@ -4,7 +4,7 @@ import {
|
|
|
4
4
|
} from "./chunk-K77I4XGL.js";
|
|
5
5
|
import {
|
|
6
6
|
getDomainDisplayName
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-BH4LN7XV.js";
|
|
8
8
|
import {
|
|
9
9
|
useRowScroll
|
|
10
10
|
} from "./chunk-XMLCXRTS.js";
|
|
@@ -13,13 +13,14 @@ import {
|
|
|
13
13
|
} from "./chunk-AQYAVLZK.js";
|
|
14
14
|
import {
|
|
15
15
|
useWizardStore
|
|
16
|
-
} from "./chunk-
|
|
16
|
+
} from "./chunk-OLWGGD4G.js";
|
|
17
17
|
import {
|
|
18
|
+
isAgentName,
|
|
18
19
|
typedKeys
|
|
19
|
-
} from "./chunk-
|
|
20
|
+
} from "./chunk-EMX7PA2I.js";
|
|
20
21
|
import {
|
|
21
|
-
|
|
22
|
-
} from "./chunk-
|
|
22
|
+
matrix
|
|
23
|
+
} from "./chunk-E74Q7GUE.js";
|
|
23
24
|
import {
|
|
24
25
|
CLI_COLORS,
|
|
25
26
|
UI_SYMBOLS
|
|
@@ -110,9 +111,9 @@ var BUILT_IN_AGENT_IDS = new Set(
|
|
|
110
111
|
function agentIdToLabel(id) {
|
|
111
112
|
return id.split("-").map((w) => w.charAt(0).toUpperCase() + w.slice(1)).join(" ");
|
|
112
113
|
}
|
|
113
|
-
function buildAgentGroups(
|
|
114
|
+
function buildAgentGroups(matrix2) {
|
|
114
115
|
const customAgentIds = [];
|
|
115
|
-
for (const stack of
|
|
116
|
+
for (const stack of matrix2.suggestedStacks) {
|
|
116
117
|
for (const agentName of typedKeys(stack.skills)) {
|
|
117
118
|
if (!BUILT_IN_AGENT_IDS.has(agentName) && !customAgentIds.includes(agentName)) {
|
|
118
119
|
customAgentIds.push(agentName);
|
|
@@ -122,7 +123,7 @@ function buildAgentGroups(matrix) {
|
|
|
122
123
|
if (customAgentIds.length === 0) return BUILT_IN_AGENT_GROUPS;
|
|
123
124
|
const customGroupMap = /* @__PURE__ */ new Map();
|
|
124
125
|
for (const agentId of customAgentIds) {
|
|
125
|
-
const explicitDomain =
|
|
126
|
+
const explicitDomain = isAgentName(agentId) ? matrix2.agentDefinedDomains?.[agentId] : void 0;
|
|
126
127
|
const domainKey = explicitDomain ?? (agentId.split("-")[0] || "custom");
|
|
127
128
|
const groupLabel = getDomainDisplayName(domainKey);
|
|
128
129
|
if (!customGroupMap.has(groupLabel)) {
|
|
@@ -153,8 +154,7 @@ function buildFocusableIds(groups) {
|
|
|
153
154
|
var StepAgents = () => {
|
|
154
155
|
const selectedAgents = useWizardStore((s) => s.selectedAgents);
|
|
155
156
|
const agentConfigs = useWizardStore((s) => s.agentConfigs);
|
|
156
|
-
const
|
|
157
|
-
const agentGroups = useMemo(() => buildAgentGroups(matrix), [matrix]);
|
|
157
|
+
const agentGroups = useMemo(() => buildAgentGroups(matrix), []);
|
|
158
158
|
const flatRows = useMemo(() => buildFlatRows(agentGroups), [agentGroups]);
|
|
159
159
|
const focusableIds = useMemo(() => buildFocusableIds(agentGroups), [agentGroups]);
|
|
160
160
|
const [focusedId, setFocusedId] = useState(focusableIds[0]);
|
|
@@ -268,4 +268,4 @@ var StepAgents = () => {
|
|
|
268
268
|
export {
|
|
269
269
|
StepAgents
|
|
270
270
|
};
|
|
271
|
-
//# sourceMappingURL=chunk-
|
|
271
|
+
//# sourceMappingURL=chunk-3REVX6S5.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/cli/components/wizard/step-agents.tsx"],"sourcesContent":["import { Box, Text, useInput } from \"ink\";\nimport React, { useMemo, useState } from \"react\";\nimport { CLI_COLORS, UI_SYMBOLS } from \"../../consts.js\";\nimport { useRowScroll } from \"../hooks/use-row-scroll.js\";\nimport { useWizardStore } from \"../../stores/wizard-store.js\";\nimport { matrix } from \"../../lib/matrix/matrix-provider.js\";\nimport type { AgentName, MergedSkillsMatrix } from \"../../types/index.js\";\nimport { typedKeys } from \"../../utils/typed-object.js\";\nimport { isAgentName } from \"../../utils/type-guards.js\";\nimport { useMeasuredHeight } from \"../hooks/use-measured-height.js\";\nimport { getDomainDisplayName } from \"./utils.js\";\nimport { ViewTitle } from \"./view-title.js\";\n\ntype AgentItem = {\n id: AgentName;\n label: string;\n description: string;\n};\n\ntype AgentGroup = {\n label: string;\n items: AgentItem[];\n};\n\nconst BUILT_IN_AGENT_GROUPS: AgentGroup[] = [\n {\n label: \"Web\",\n items: [\n {\n id: \"web-developer\",\n label: \"Web Developer\",\n description: \"Frontend features, components, TypeScript\",\n },\n { id: \"web-reviewer\", label: \"Web Reviewer\", description: \"UI component code review\" },\n { id: \"web-researcher\", label: \"Web Researcher\", description: \"Frontend pattern discovery\" },\n {\n id: \"web-tester\",\n label: \"Web Tester\",\n description: \"Frontend tests, E2E, component tests\",\n },\n { id: \"web-pm\", label: \"Web PM\", description: \"Implementation specs and planning\" },\n {\n id: \"web-architecture\",\n label: \"Web Architecture\",\n description: \"App scaffolding, foundational patterns\",\n },\n {\n id: \"web-pattern-critique\",\n label: \"Web Pattern Critique\",\n description: \"Critique patterns against industry standards\",\n },\n ],\n },\n {\n label: \"API\",\n items: [\n {\n id: \"api-developer\",\n label: \"API Developer\",\n description: \"Backend routes, database, middleware\",\n },\n { id: \"api-reviewer\", label: \"API Reviewer\", description: \"Backend and config code review\" },\n { id: \"api-researcher\", label: \"API Researcher\", description: \"Backend pattern discovery\" },\n ],\n },\n {\n label: \"CLI\",\n items: [\n {\n id: \"cli-developer\",\n label: \"CLI Developer\",\n description: \"CLI commands, interactive prompts\",\n },\n { id: \"cli-tester\", label: \"CLI Tester\", description: \"CLI application tests\" },\n { id: \"cli-reviewer\", label: \"CLI Reviewer\", description: \"CLI code review\" },\n ],\n },\n {\n label: \"Meta\",\n items: [\n {\n id: \"pattern-scout\",\n label: \"Pattern Scout\",\n description: \"Extract codebase patterns and standards\",\n },\n { id: \"agent-summoner\", label: \"Agent Summoner\", description: \"Create and improve agents\" },\n {\n id: \"skill-summoner\",\n label: \"Skill Summoner\",\n description: \"Create technology-specific skills\",\n },\n { id: \"documentor\", label: \"Documentor\", description: \"AI-focused documentation\" },\n ],\n },\n];\n\n/** IDs of all built-in agents for fast lookup. */\nconst BUILT_IN_AGENT_IDS = new Set<string>(\n BUILT_IN_AGENT_GROUPS.flatMap((group) => group.items.map((a) => a.id)),\n);\n\n/** Convert a kebab-case agent ID to a title-case label. */\nfunction agentIdToLabel(id: string): string {\n return id\n .split(\"-\")\n .map((w) => w.charAt(0).toUpperCase() + w.slice(1))\n .join(\" \");\n}\n\ntype FocusId = AgentName | \"continue\";\n\ntype ListRow =\n | { type: \"header\"; label: string }\n | { type: \"spacer\" }\n | { type: \"agent\"; agent: AgentItem };\n\nfunction buildAgentGroups(matrix: MergedSkillsMatrix): AgentGroup[] {\n const customAgentIds: string[] = [];\n for (const stack of matrix.suggestedStacks) {\n for (const agentName of typedKeys(stack.skills)) {\n if (!BUILT_IN_AGENT_IDS.has(agentName) && !customAgentIds.includes(agentName)) {\n customAgentIds.push(agentName);\n }\n }\n }\n\n if (customAgentIds.length === 0) return BUILT_IN_AGENT_GROUPS;\n\n // Group custom agents by explicit domain (from metadata.yaml) or kebab prefix fallback\n const customGroupMap = new Map<string, AgentItem[]>();\n for (const agentId of customAgentIds) {\n const explicitDomain = isAgentName(agentId) ? matrix.agentDefinedDomains?.[agentId] : undefined;\n const domainKey = explicitDomain ?? (agentId.split(\"-\")[0] || \"custom\");\n const groupLabel = getDomainDisplayName(domainKey);\n if (!customGroupMap.has(groupLabel)) {\n customGroupMap.set(groupLabel, []);\n }\n // Boundary cast: custom agent names from marketplace stacks are not in the AgentName union\n customGroupMap.get(groupLabel)!.push({\n id: agentId as AgentName,\n label: agentIdToLabel(agentId),\n description: \"Custom agent\",\n });\n }\n\n const customGroups: AgentGroup[] = [];\n for (const [label, items] of customGroupMap) {\n customGroups.push({ label, items });\n }\n\n return [...BUILT_IN_AGENT_GROUPS, ...customGroups];\n}\n\nfunction buildFlatRows(groups: AgentGroup[]): ListRow[] {\n return groups.flatMap((group, groupIndex): ListRow[] => [\n ...(groupIndex > 0 ? [{ type: \"spacer\" as const }] : []),\n { type: \"header\" as const, label: group.label },\n ...group.items.map((agent): ListRow => ({ type: \"agent\", agent })),\n ]);\n}\n\nfunction buildFocusableIds(groups: AgentGroup[]): FocusId[] {\n return [...groups.flatMap((group) => group.items.map((a) => a.id)), \"continue\"];\n}\n\nexport const StepAgents: React.FC = () => {\n const selectedAgents = useWizardStore((s) => s.selectedAgents);\n const agentConfigs = useWizardStore((s) => s.agentConfigs);\n const agentGroups = useMemo(() => buildAgentGroups(matrix), []);\n const flatRows = useMemo(() => buildFlatRows(agentGroups), [agentGroups]);\n const focusableIds = useMemo(() => buildFocusableIds(agentGroups), [agentGroups]);\n\n const [focusedId, setFocusedId] = useState<FocusId>(focusableIds[0]!);\n const { ref: listRef, measuredHeight: listHeight } = useMeasuredHeight();\n\n const focusedRowIndex =\n focusedId !== \"continue\"\n ? flatRows.findIndex((row) => row.type === \"agent\" && row.agent.id === focusedId)\n : -1;\n const { scrollEnabled, scrollTop } = useRowScroll({\n focusedIndex: Math.max(0, focusedRowIndex),\n itemCount: flatRows.length,\n availableHeight: listHeight,\n });\n\n useInput((input, key) => {\n if (key.escape) {\n useWizardStore.getState().goBack();\n return;\n }\n\n const currentIdx = focusableIds.indexOf(focusedId);\n\n if (key.upArrow || input === \"k\") {\n const nextIdx = currentIdx <= 0 ? focusableIds.length - 1 : currentIdx - 1;\n setFocusedId(focusableIds[nextIdx]!);\n return;\n }\n\n if (key.downArrow || input === \"j\") {\n const nextIdx = currentIdx >= focusableIds.length - 1 ? 0 : currentIdx + 1;\n setFocusedId(focusableIds[nextIdx]!);\n return;\n }\n\n if (key.return) {\n useWizardStore.getState().setStep(\"confirm\");\n return;\n }\n\n if (input === \" \" && focusedId !== \"continue\") {\n useWizardStore.getState().toggleAgent(focusedId);\n }\n });\n\n // Sync focusedAgentId so the wizard-level S key handler can toggle agent scope\n React.useEffect(() => {\n useWizardStore.getState().setFocusedAgentId(focusedId === \"continue\" ? null : focusedId);\n }, [focusedId]);\n\n const selectedCount = selectedAgents.length;\n const continueLabel =\n selectedCount > 0 ? `Continue with ${selectedCount} agent(s)` : \"Continue without agents\";\n\n const isContinueFocused = focusedId === \"continue\";\n\n const rowElements = flatRows.map((row, index) => {\n switch (row.type) {\n case \"header\":\n return (\n <Box key={`header-${row.label}`} flexShrink={0}>\n <Text dimColor bold>\n {\" \"}\n {row.label}\n </Text>\n </Box>\n );\n case \"spacer\":\n return (\n <Box key={`spacer-${index}`} flexShrink={0}>\n <Text> </Text>\n </Box>\n );\n case \"agent\": {\n const isFocused = row.agent.id === focusedId;\n const isSelected = selectedAgents.includes(row.agent.id);\n const checkbox = isSelected ? \"[\\u2713]\" : \"[ ]\";\n const pointer = isFocused ? UI_SYMBOLS.CURRENT : \" \";\n const agentConfig = agentConfigs.find((ac) => ac.name === row.agent.id);\n const scope = agentConfig?.scope ?? \"global\";\n const scopeBadge = scope === \"global\" ? \" [G]\" : \" [P]\";\n return (\n <Box key={row.agent.id} flexShrink={0}>\n <Text>\n <Text color={isFocused ? CLI_COLORS.PRIMARY : undefined}>{pointer}</Text>\n <Text\n color={isSelected || isFocused ? CLI_COLORS.PRIMARY : undefined}\n bold={isFocused}\n >\n {\" \"}\n {checkbox} {row.agent.label}\n </Text>\n <Text color={scope === \"global\" ? CLI_COLORS.WARNING : CLI_COLORS.INFO}>\n {scopeBadge}\n </Text>\n <Text dimColor> - {row.agent.description}</Text>\n </Text>\n </Box>\n );\n }\n }\n });\n\n return (\n <Box flexDirection=\"column\" width=\"100%\" flexGrow={1} flexBasis={0}>\n <ViewTitle>Select agents to compile:</ViewTitle>\n\n <Box ref={listRef} flexDirection=\"column\" flexGrow={1} flexBasis={0}>\n <Box\n flexDirection=\"column\"\n flexGrow={1}\n {...(scrollEnabled && { overflow: \"hidden\" as const })}\n >\n <Box\n flexDirection=\"column\"\n marginTop={scrollTop > 0 ? -scrollTop : 0}\n {...(scrollEnabled && { flexShrink: 0 })}\n >\n {rowElements}\n </Box>\n </Box>\n </Box>\n\n <Text color={isContinueFocused ? CLI_COLORS.PRIMARY : undefined} bold={isContinueFocused}>\n {isContinueFocused ? UI_SYMBOLS.CURRENT : \" \"} {\"\\u2192\"} {continueLabel}\n </Text>\n </Box>\n );\n};\n"],"mappings":"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","names":["matrix"]}
|