argsbarg 6.1.9 → 6.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (134) hide show
  1. package/CHANGELOG.md +17 -1
  2. package/README.md +187 -93
  3. package/docs/README.md +3 -2
  4. package/docs/ai-skills.md +36 -23
  5. package/docs/cli-program.md +12 -11
  6. package/docs/config-schema.md +3 -3
  7. package/docs/configure.md +12 -16
  8. package/docs/decisions.md +74 -37
  9. package/docs/developing.md +6 -6
  10. package/docs/distribution-homebrew.md +117 -104
  11. package/docs/mcp.md +21 -57
  12. package/docs/output-schema.md +2 -2
  13. package/examples/formats.ts +5 -6
  14. package/examples/full-example/README.md +7 -69
  15. package/examples/full-example/docs/cli-schema.json +1 -1659
  16. package/examples/full-example/docs/cli.md +2 -1538
  17. package/examples/full-example/docs/http.md +3 -8
  18. package/examples/full-example/docs/mcp.md +23 -59
  19. package/examples/full-example/docs/openapi.json +2 -782
  20. package/examples/full-example/docs/skill.md +18 -14
  21. package/examples/full-example/justfile +22 -14
  22. package/examples/full-example/scripts/create-identity.ts +2 -1
  23. package/examples/full-example/src/commands/status/command.test.ts +2 -2
  24. package/examples/full-example/src/commands/status/command.ts +7 -6
  25. package/examples/full-example/src/program.ts +4 -10
  26. package/examples/full-example-json/Formula/.gitkeep +0 -0
  27. package/examples/full-example-json/Formula/full-example-json.rb +35 -0
  28. package/examples/full-example-json/README.md +27 -0
  29. package/examples/full-example-json/biome.json +22 -0
  30. package/examples/full-example-json/bun.lock +48 -0
  31. package/examples/full-example-json/docs/README.md +27 -0
  32. package/examples/full-example-json/docs/cli-schema.json +2145 -0
  33. package/examples/full-example-json/docs/cli.md +1990 -0
  34. package/examples/full-example-json/docs/http.md +92 -0
  35. package/examples/full-example-json/docs/mcp.md +116 -0
  36. package/examples/full-example-json/docs/openapi.json +1246 -0
  37. package/examples/full-example-json/docs/skill.md +57 -0
  38. package/examples/full-example-json/justfile +171 -0
  39. package/examples/full-example-json/package.json +22 -0
  40. package/examples/full-example-json/scripts/create-identity.ts +12 -0
  41. package/examples/full-example-json/scripts/dev-formula.ts +97 -0
  42. package/examples/full-example-json/scripts/formula-shared.test.ts +68 -0
  43. package/examples/full-example-json/scripts/formula-shared.ts +170 -0
  44. package/examples/full-example-json/scripts/print-identity.ts +28 -0
  45. package/examples/full-example-json/scripts/release.ts +212 -0
  46. package/examples/full-example-json/src/commands/echo/command.ts +26 -0
  47. package/examples/full-example-json/src/commands/status/command.test.ts +10 -0
  48. package/examples/full-example-json/src/commands/status/command.ts +28 -0
  49. package/examples/full-example-json/src/index.ts +10 -0
  50. package/examples/full-example-json/src/program.ts +33 -0
  51. package/examples/full-example-json/src/types/md.d.ts +4 -0
  52. package/examples/full-example-json/tsconfig.json +17 -0
  53. package/examples/minimal.ts +17 -17
  54. package/examples/nested.ts +10 -10
  55. package/examples/option-required.ts +13 -13
  56. package/examples/servers.ts +10 -10
  57. package/index.d.ts +17 -43
  58. package/package.json +1 -1
  59. package/src/cli-tool/create.test.ts +44 -68
  60. package/src/cli-tool/create.ts +81 -17
  61. package/src/cli-tool/full-example-capabilities.test.ts +33 -18
  62. package/src/cli-tool/post-create.ts +31 -17
  63. package/src/cli-tool/program.ts +16 -7
  64. package/src/cli-tool/prompt.ts +27 -0
  65. package/src/cli-tool/run-create.ts +19 -7
  66. package/src/cli-tool/schemagen/schemagen.test.ts +3 -3
  67. package/src/configure/artifacts/install-validate.test.ts +20 -33
  68. package/src/configure/artifacts/paths.ts +9 -53
  69. package/src/configure/artifacts/status.test.ts +13 -16
  70. package/src/configure/artifacts/status.ts +5 -22
  71. package/src/configure/artifacts/target-base.ts +6 -15
  72. package/src/configure/artifacts/target-effective.ts +16 -54
  73. package/src/configure/artifacts/target-mcp-json.ts +2 -5
  74. package/src/configure/artifacts/target-registry.ts +0 -7
  75. package/src/configure/artifacts/target-scope.ts +7 -17
  76. package/src/configure/artifacts/target-skill.ts +6 -15
  77. package/src/configure/artifacts/target-types.ts +6 -54
  78. package/src/configure/artifacts/targets/agents-mcp.ts +11 -0
  79. package/src/configure/artifacts/targets/configure.ts +1 -5
  80. package/src/configure/artifacts/targets/index.ts +4 -44
  81. package/src/configure/artifacts/targets/skill.ts +12 -0
  82. package/src/configure/artifacts/targets.test.ts +21 -59
  83. package/src/configure/configure.test.ts +35 -46
  84. package/src/configure/index.ts +19 -19
  85. package/src/configure/prompt.ts +2 -12
  86. package/src/core/parse.test.ts +21 -32
  87. package/src/core/types.ts +18 -44
  88. package/src/core/validate.ts +28 -45
  89. package/src/docs/docs.test.ts +4 -4
  90. package/src/docs/http-guide.ts +1 -1
  91. package/src/docs/mcp-guide.ts +41 -71
  92. package/src/docs/resolve.ts +1 -1
  93. package/src/docs/save.ts +1 -1
  94. package/src/exports/cli.ts +1 -1
  95. package/src/index.ts +1 -1
  96. package/src/skill/generate.ts +26 -45
  97. package/src/skill/install.ts +18 -38
  98. package/src/skill/naming.ts +3 -27
  99. package/src/test/integration/config.test.ts +3 -3
  100. package/src/test/integration/mcp.test.ts +4 -4
  101. package/{examples/mcp-test.ts → src/test/mcp-integration-fixture.ts} +20 -22
  102. package/src/configure/artifacts/target-mcp-cli.ts +0 -127
  103. package/src/configure/artifacts/targets/chatgpt-mcp.ts +0 -12
  104. package/src/configure/artifacts/targets/claude-code-mcp.ts +0 -15
  105. package/src/configure/artifacts/targets/claude-desktop-mcp.ts +0 -12
  106. package/src/configure/artifacts/targets/claude-skill.ts +0 -16
  107. package/src/configure/artifacts/targets/codex-mcp.ts +0 -25
  108. package/src/configure/artifacts/targets/codex-skill.ts +0 -14
  109. package/src/configure/artifacts/targets/cursor-mcp.ts +0 -15
  110. package/src/configure/artifacts/targets/cursor-skill.ts +0 -16
  111. package/src/configure/artifacts/targets/openclaw-mcp.ts +0 -25
  112. package/src/configure/artifacts/targets/openclaw-skill.ts +0 -17
  113. package/src/configure/artifacts/targets/opencode-mcp.ts +0 -96
  114. package/src/configure/artifacts/targets/opencode-skill.ts +0 -15
  115. /package/examples/{full-example → full-example-json}/src/commands/render-json/__generated__/RenderJsonInputSchema.json +0 -0
  116. /package/examples/{full-example → full-example-json}/src/commands/render-json/__generated__/index.ts +0 -0
  117. /package/examples/{full-example → full-example-json}/src/commands/render-json/command.test.ts +0 -0
  118. /package/examples/{full-example → full-example-json}/src/commands/render-json/command.ts +0 -0
  119. /package/examples/{full-example → full-example-json}/src/commands/render-json/types.ts +0 -0
  120. /package/examples/{full-example → full-example-json}/src/commands/status/__generated__/StatusJsonOutputSchema.json +0 -0
  121. /package/examples/{full-example → full-example-json}/src/commands/status/__generated__/index.ts +0 -0
  122. /package/examples/{full-example → full-example-json}/src/commands/status/types.ts +0 -0
  123. /package/examples/{full-example → full-example-json}/src/commands/workspaces/__generated__/WorkspaceNameInputSchema.json +0 -0
  124. /package/examples/{full-example → full-example-json}/src/commands/workspaces/__generated__/index.ts +0 -0
  125. /package/examples/{full-example → full-example-json}/src/commands/workspaces/command.test.ts +0 -0
  126. /package/examples/{full-example → full-example-json}/src/commands/workspaces/command.ts +0 -0
  127. /package/examples/{full-example → full-example-json}/src/commands/workspaces/types.ts +0 -0
  128. /package/examples/{full-example → full-example-json}/src/db/index.test.ts +0 -0
  129. /package/examples/{full-example → full-example-json}/src/db/index.ts +0 -0
  130. /package/examples/{full-example → full-example-json}/src/db/migrate.test.ts +0 -0
  131. /package/examples/{full-example → full-example-json}/src/db/migrate.ts +0 -0
  132. /package/examples/{full-example → full-example-json}/src/db/migrations/001_workspaces.sql +0 -0
  133. /package/examples/{full-example → full-example-json}/src/db/tables/workspaces.ts +0 -0
  134. /package/examples/{full-example → full-example-json}/src/types/argsbarg.d.ts +0 -0
package/CHANGELOG.md CHANGED
@@ -7,6 +7,20 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [6.2.0] - 2026-07-30
11
+
12
+ ### Changed
13
+
14
+ - **Breaking: two `argsbarg create` templates** — default `cli` template (`examples/full-example`) is CLI-centric (MCP, HTTP, configure, skills; no schemagen). Schema-first template (`examples/full-example-json`) keeps `@sg` schemagen, `inputSchema`/`outputSchema`, REST CRUD, and in-memory SQLite. Interactive create shows an A/B template picker; `--template cli|json` for non-interactive use. `create-identity.ts` records `template` for `--check` drift detection.
15
+ - **Experimental: agent skill install** — single opt-in target via `program.skill: { enabled: true }` installs to `~/.agents/skills/<key>/` (no per-host skill targets). Brew `post_install` sync installs the skill when enabled. Removed `configure.agentIntegration` and per-host skill keys (`cursorSkill`, etc.).
16
+ - **Experimental: .agents protocol–only agent install** — MCP configure install writes only `~/.agents/mcp.json` when `mcpServer.enabled` (included in `configure --sync` automatically, parallel to `skill.enabled`). Removed vendor MCP auto-install (Cursor, Claude, Codex, OpenCode, OpenClaw, ChatGPT). Removed `configure.targets.*Mcp`; use `mcpServer.enabled`. Skill bundle adds protocol `skill.md` (+ `SKILL.md` compatibility copy). Docs and generated `docs mcp` document manual Cursor/Claude/Desktop MCP setup and Claude Code skill symlink.
17
+
18
+ ## [6.1.10] - 2026-07-29
19
+
20
+ ### Changed
21
+
22
+ - Update docs
23
+
10
24
  ## [6.1.9] - 2026-07-27
11
25
 
12
26
  ### Added
@@ -879,7 +893,9 @@ const cli = { ... } satisfies CliProgram; // or : CliProgram
879
893
  - Migrate schemas: rename every `children` property to **`commands`**; move positional definitions to **`CliPositional`** objects on `positionals` and strip `positional` / `argMin` / `argMax` from flag definitions under `options` (flags only carry `name`, `description`, `kind`, and optional `shortName`).
880
894
  - Imports: use `CliPositional` where needed; replace `CliOptionDef` with `CliOption` or `CliPositional` as appropriate.
881
895
 
882
- [Unreleased]: https://github.com/bdombro/bun-argsbarg/compare/v6.1.9...HEAD
896
+ [Unreleased]: https://github.com/bdombro/bun-argsbarg/compare/v6.2.0...HEAD
897
+ [6.2.0]: https://github.com/bdombro/bun-argsbarg/releases/tag/v6.2.0
898
+ [6.1.10]: https://github.com/bdombro/bun-argsbarg/releases/tag/v6.1.10
883
899
  [6.1.9]: https://github.com/bdombro/bun-argsbarg/releases/tag/v6.1.9
884
900
  [6.1.8]: https://github.com/bdombro/bun-argsbarg/releases/tag/v6.1.8
885
901
  [6.1.7]: https://github.com/bdombro/bun-argsbarg/releases/tag/v6.1.7
package/README.md CHANGED
@@ -5,40 +5,70 @@ Logo
5
5
  [npm version](https://www.npmjs.com/package/argsbarg)
6
6
  [Bun](https://bun.sh)
7
7
 
8
- Build beautiful, well-behaved CLI+MCP+HTTP apps with Bun — **no third-party runtime dependencies**.
8
+ Build beautiful, well-behaved, production-grade CLIs, HTTP REST services, MCP Servers for Bun from a single, unified schema. All with only 2 modest dependencies.
9
9
 
10
- Why another CLI parser?
10
+ Why ArgsBarg?
11
11
 
12
- *Schema-first* — define your entire CLI’s structure, commands, options, and help in a single, explicit data model, making the command-line interface auto-validated, centralized, clear, and self-describing upfront.
12
+ *Schema-first & Auto-validated* — Define your entire command structure, options, description, and inputs once. ArgsBarg compiles this into type-safe option accessors, command-line routing, and validation schemas, keeping your code and interfaces perfectly aligned.
13
13
 
14
- *AI Friendly* — Generate and install rich skills, mcp server, docs based on the schema.
14
+ *Automated Schemagen & Docgen* — Maintain single-source truth by decorating standard TypeScript types (`/** @sg */ interface...`) to automatically compile them into runtime validation schemas (`argsbarg schemagen`). Easily export standard-compliant API documentation, full CLI reference markdown, OpenAPI 3.1 definitions, and agent skill sheets directly from your code (`docs --save` command) using introspection.
15
15
 
16
- *Beautiful* `-h` *screens* — scoped help at any routing depth, rendered in rounded UTF-8 boxes with tables, terminal-width wrapping, and color when stdout is a TTY. Errors print in red with contextual help on stderr.
16
+ *Production REST Server* — Instantly expose your commands as HTTP REST endpoints (`POST /v1/some-command`) with built-in Kubernetes-compliant `/health/liveness` and `/health/readiness` probes, ECS structured JSON logging to `stderr`, and auto-generated OpenAPI 3.1 specs with an interactive Swagger UI.
17
17
 
18
- *Shell completions* — `completion bash`, `completion zsh`, and `completion fish` built-ins generate scripts consumed by Homebrew during formula `install` (`generate_completions_from_executable`). See [docs/distribution-homebrew.md](docs/distribution-homebrew.md).
18
+ *First-Class Homebrew Distribution* — Exposes robust native support for packaging and distributing compiled binaries and shell completions cleanly via a standard tap-from-repo Homebrew model. Includes built-in completion script generators (`completion bash`/`zsh`/`fish`) consumed by Homebrew's standard `generate_completions_from_executable` command out of the box, ensuring friction-free installations and updates for your developers.
19
+
20
+ *High-Performance & Light Footprint* — Optimized specifically for Bun. Executes TypeScript and TSX source files directly with no transpile or bundling steps required, leveraging `Bun.serve` for rapid startup and low memory usage. Ships with only two production dependencies (`@cfworker/json-schema` and `ts-json-schema-generator`).
19
21
 
20
- *Bun-optimized* — built from the ground up for Bun and TypeScript, leveraging Bun’s performance and modern JavaScript features without any extra dependencies.
22
+ *Beautiful* `-h` *screens* — Scoped help at any routing depth, rendered in rounded UTF-8 boxes with tables, terminal-width wrapping, and color when stdout is a TTY. Errors print in red with contextual help on stderr.
23
+
24
+ *Shell completions* — `completion bash`, `completion zsh`, and `completion fish` built-ins generate scripts consumed by Homebrew during formula `install` (`generate_completions_from_executable`). See [docs/distribution-homebrew.md](docs/distribution-homebrew.md).
21
25
 
22
26
  Also checkout ArgsBarg for [cpp](https://github.com/bdombro/cpp-argsbarg), [nim](https://github.com/bdombro/nim-argsbarg), and [swift](https://github.com/bdombro/swift-argsbarg)!
23
27
 
24
28
  Halps! -->
25
29
  help-preview.png
30
+ [help-preview.png](docs/help-preview.png)
31
+
26
32
 
27
33
  Sub-level Halps! -->
28
34
  help-l2-preview.png
35
+ [help-l2-preview.png](docs/help-l2-preview.png)
29
36
 
30
37
  Shell completions! -->
31
38
  completions-preview.png
39
+ [completions-preview.png](docs/completions-preview.png)
40
+
41
+ Production-grade HTTP Server! -->
42
+ ```sh
43
+ $ myapp http
44
+ {"@timestamp":"2026-07-29T10:23:59.094Z","message":"HTTP API listening on http://127.0.0.1:13000",...}
45
+ {"@timestamp":"2026-07-29T10:23:59.194Z","message":"GET /health/liveness","ecs.version":"8.11.0",...}
46
+ {"@timestamp":"2026-07-29T10:23:59.195Z","message":"server stopping","ecs.version":"8.11.0",...}
47
+ ```
32
48
 
33
- ## Usage
49
+ ## Basic Usage
34
50
 
35
51
  ```typescript
36
52
  import { Cli, type CliProgram, CliOptionKind } from "argsbarg";
37
53
 
38
54
  const program = {
39
- key: "helloapp",
40
- version: "1.0.0",
41
55
  description: "Tiny demo.",
56
+ handler: async (ctx) => {
57
+ const name = ctx.args[0] ?? "world";
58
+ if (ctx.hasFlag("verbose")) {
59
+ console.log("verbose mode");
60
+ }
61
+ console.log(`hello ${name}`);
62
+ },
63
+ key: "helloapp",
64
+ options: [
65
+ {
66
+ name: "verbose",
67
+ description: "Enable extra logging.",
68
+ kind: CliOptionKind.Presence,
69
+ shortName: "v",
70
+ },
71
+ ],
42
72
  positionals: [
43
73
  {
44
74
  name: "name",
@@ -48,21 +78,7 @@ const program = {
48
78
  argMax: 1,
49
79
  },
50
80
  ],
51
- options: [
52
- {
53
- name: "verbose",
54
- description: "Enable extra logging.",
55
- kind: CliOptionKind.Presence,
56
- shortName: "v",
57
- },
58
- ],
59
- handler: async (ctx) => {
60
- const name = ctx.args[0] ?? "world";
61
- if (ctx.hasFlag("verbose")) {
62
- console.log("verbose mode");
63
- }
64
- console.log(`hello ${name}`);
65
- },
81
+ version: "1.0.0",
66
82
  } satisfies CliProgram;
67
83
 
68
84
  const cli = new Cli(program);
@@ -85,83 +101,123 @@ Everything you need for a first-class CLI:
85
101
  - **Rich help**: rounded UTF-8 boxes, tables, terminal width detection (`process.stdout.columns`), colors when stdout/stderr is a TTY
86
102
  - **TypeScript-native**: Typed option accessors (`ctx.typedOpt<T>`) and `async/await` handler support.
87
103
 
104
+ ## Getting Started
88
105
 
106
+ You can either quickly bootstrap a complete, feature-rich project skeleton using our CLI creator or manually integrate ArgsBarg into an existing codebase.
89
107
 
90
- ## Built-ins
108
+ ### Option A: Bootstrap a New Project (Recommended)
91
109
 
92
- Every app gets:
110
+ ArgsBarg provides an interactive project generator to scaffold a new repository fully equipped with TypeScript, Biome, automated schemagen/docgen, standard testing, and Homebrew integration rules:
93
111
 
94
- - `-h` / `--help` at any routing depth (scoped help).
95
- - `completion bash` **/** `completion zsh` **/** `completion fish` — print shell completion scripts to stdout (injected by `Cli.run()`).
96
- - `version` — print `CliProgram.version` (`myapp version`).
97
- - `mcp` — when `mcpServer.enabled` is `true`, run as an MCP stdio server (`myapp mcp`).
98
- - `http` — when `httpServer.enabled` is `true`, run as an HTTP tool server (`myapp http`).
99
- - `docs` — print bundled markdown topics, schema JSON, CLI markdown, and generated skill content (`myapp docs cli`, `myapp docs cli-schema`, `myapp docs skill`, …). Enabled by default; opt out with `docs: { enabled: false }`. See [docs/bundled-docs.md](docs/bundled-docs.md).
100
- - `configure` — manage agent skills, MCP config, and app config (`myapp configure --sync --yes` after Homebrew install). See [docs/configure.md](docs/configure.md).
112
+ ```bash
113
+ # Interactive setup (prompts for naming and git configurations)
114
+ bunx argsbarg create my-app
101
115
 
102
- Do not declare a top-level command named `completion`, `version`, or `configure` — they are reserved.
103
- When `mcpServer.enabled` is `true`, do not declare a top-level command named `mcp` — it is reserved for the MCP built-in.
104
- When `httpServer.enabled` is `true`, do not declare a top-level command named `http` — it is reserved for the HTTP built-in.
105
- When docs is enabled (default), do not declare a top-level command named `docs` — it is reserved for the docs built-in. Opt out with `docs: { enabled: false }` if needed.
116
+ # Non-interactive / Headless setup
117
+ bunx argsbarg create my-app \
118
+ --key my-cli --release-repo org/my-cli --yes
119
+ ```
106
120
 
107
- ### MCP (AI agents)
121
+ Edit `scripts/create-identity.ts` in the new repository to set your description. The `create` command copies the full-featured template, runs `bun install`, bootstraps a git repository (if standalone), and runs initial validation tests.
108
122
 
109
- Opt in on the program root with `mcpServer: { enabled: true }`, then run `myapp mcp` for a stdio MCP server. Each leaf command becomes a tool; the CLI tree is available as resource `<sanitized-key>://schema` (same as `myapp docs cli-schema`). Handlers can read `ctx.invocation`; use `cli.invoke(argv)` for headless testing.
123
+ #### What the bootstrapped template includes:
110
124
 
111
- See **[docs/mcp.md](docs/mcp.md)** for configuration, env bootstrapping, custom resources, Cursor setup, and protocol details. See **[docs/cli-program.md](docs/cli-program.md)** for schema authoring (consumer apps: run `bunx argsbarg create` or refresh with `bun scripts/merge-cli-program-rule.ts .` from the argsbarg package).
125
+ | Area | Files / wiring |
126
+ | --------------------- | ---------------------------------------------------------------------------------------- |
127
+ | All built-ins | `completion`, `version`, `configure`, `docs`, `mcp`, `http`, `configure get`/`set` |
128
+ | `@sg` schemagen | `/** @sg */` on types in `src/**/*.ts` → `{TypeName}Schema` in `__generated__/` |
129
+ | `outputSchema` | `src/commands/status/types.ts` → `StatusJsonOutputSchema` from `__generated__/` |
130
+ | Schemagen | `just schemagen` → `argsbarg schemagen` (justfile exports `node_modules/.bin` on `PATH`) |
131
+ | Command layout | `src/commands/<name>/command.ts`; registration in `src/program.ts` |
132
+ | MCP doc topics | `docs.topics` auto-exposed as `<key>://docs/<topic>` resources when docs + MCP enabled |
133
+ | Package import | `from "argsbarg"` (not relative to argsbarg `src/`) |
134
+ | Homebrew distribution | `scripts/formula-shared.ts`, `scripts/dev-formula.ts`, `Formula/`, `justfile` |
135
+ | Dev tooling | Biome (`just format` / `just lint`), TypeScript, colocated tests |
136
+ | Cursor rules | `.cursor/rules/cli-program.mdc`, `.cursor/rules/code.mdc` |
112
137
 
113
- ### HTTP tool server
138
+ *Tip: Verify an existing tree or template setup with `bunx argsbarg create --check .`*
114
139
 
115
- Opt in on the program root with `httpServer: { enabled: true }`, then run `myapp http` for an HTTP REST server (default `http://127.0.0.1:3000`). Nested CLI paths map to REST routes at the server root by default (e.g. `/workspaces`); set `httpServer.pathPrefix: "/api"` to prefix all user routes. Discover routes via `GET /openapi.json`.
140
+ ### Option B: Manual Installation (For Existing Projects)
116
141
 
117
- See **[docs/http-server.md](docs/http-server.md)** for endpoints, curl examples, and response shapes.
142
+ To manually integrate ArgsBarg into your existing Bun application: `bun add argsbarg`.
118
143
 
119
- ### Configure CLI
120
144
 
121
- Ship via **Homebrew** (tap-from-repo). The formula installs the binary and shell completions; `post_install` runs agent artifact refresh. Private taps require `gh auth login` — see [docs/distribution-homebrew.md](docs/distribution-homebrew.md#end-user-install).
145
+ ## Built-in Commands
122
146
 
123
- ```bash
124
- brew install gh
125
- gh auth login
126
- brew tap <org>/<repo> git@github.com:<org>/<repo>.git
127
- brew install <tap>/myapp
128
- myapp configure # interactive per-target setup; opt-in app config wizard
129
- ```
147
+ ArgsBarg automatically integrates several core features into your application. These are divided into stable core capabilities and optional experimental integrations:
148
+
149
+ ### Core Capabilities (Stable)
150
+
151
+ - `-h` / `--help` — Highly-formatted, terminal-width scoped help at any routing depth.
152
+ - `version` — Print the program's version (e.g., `myapp version`).
153
+ - `http` — Launch the high-performance HTTP REST server (injected when `httpServer.enabled` is `true`).
154
+ - `completion bash` / `zsh` / `fish` — Generate shell completion scripts to stdout for deployment and packaging.
155
+ - `docs` — Print bundled markdown topics, schema JSON, or CLI reference markdown (`myapp docs cli`, `myapp docs cli-schema`, etc.). Enabled by default; see [docs/bundled-docs.md](docs/bundled-docs.md).
156
+ - `configure get` / `set` — Query and update application-level configurations non-interactively (active when `program.appConfig` contains configuration schema entries).
157
+
158
+ ### Experimental Integrations (Opt-in)
159
+
160
+ - `mcp` — Run as a Model Context Protocol stdio-based agent server (injected when `mcpServer.enabled` is `true`). See [docs/mcp.md](docs/mcp.md).
161
+ - `configure` (`--sync` / `--status` / `--remove-all`) — Interactive environment setup and developer agent credentials sync (enabled by default; opt out with `configure: { enabled: false }`). See [docs/configure.md](docs/configure.md).
162
+
163
+ Do not declare top-level commands named `completion`, `version`, or `docs` as they are reserved by default. If their respective features are enabled, `http`, `mcp`, and `configure` are also reserved.
130
164
 
131
- See **[docs/distribution-homebrew.md](docs/distribution-homebrew.md)** for formula patterns and `bunx argsbarg create`. See **[docs/configure.md](docs/configure.md)** for `configure`, `--sync`, `--remove-all`, and `--status`.
165
+ ## HTTP REST Server
132
166
 
133
- ### Shell completions
167
+ By opting in with `httpServer: { enabled: true }` on your program root, running your app with the `http` subcommand launches a high-performance HTTP REST server powered natively by `Bun.serve`. This is ideal for sidecars, microservices, and micro-container deployments (such as in Kubernetes).
134
168
 
135
- Homebrew installs completion scripts during `brew install` via `generate_completions_from_executable`. The CLI still exposes generation for formula authors:
169
+ Nested command paths map directly to standard REST paths (e.g., `v1 invoices render` maps to `POST /v1/invoices/render`).
170
+
171
+ ```typescript
172
+ const cli = {
173
+ commands: [/* ... */],
174
+ description: "My service.",
175
+ httpServer: { enabled: true, port: 3000 },
176
+ key: "myapp",
177
+ version: "1.0.0",
178
+ } satisfies CliProgram;
179
+ ```
136
180
 
137
181
  ```bash
138
- myapp completion bash
139
- myapp completion zsh
140
- myapp completion fish
182
+ myapp http --port 3000
141
183
  ```
142
184
 
143
- Users configure their shell per [Homebrew Shell Completion](https://docs.brew.sh/Shell-Completion).
144
185
 
145
- ## Quick Start
186
+
187
+ ### Key HTTP Features:
188
+
189
+ - **Built-in Health Checks** — Automatic `/health/liveness` (responds 200 when online) and `/health/readiness` (responds 200 when online and config validation passes) probes out of the box, compliant with container orchestrators.
190
+ - **OpenAPI 3.1 Spec & Swagger UI** — Serves standard `/openapi.json` and a `/swagger` interactive API browser generated directly from your command schema and JSDoc metadata.
191
+ - **Pre-Handler Schema Validation** — Incoming request payloads are validated against the compile-time JSON Schema (`inputSchema`) on leaf commands before your handler ever runs.
192
+ - **ECS Structured Logging** — Access and error logs are automatically structured as Elastic Common Schema (ECS) JSON objects and written to `stderr` (e.g., for Datadog or ELK collection).
193
+ - **W3C Distributed Tracing** — Automatically parses, propagates, and echoes `traceparent` headers for distributed tracing pipelines.
194
+
195
+ See **[docs/http-server.md](docs/http-server.md)** for details on endpoints and response shapes, and **[docs/logging.md](docs/logging.md)** for log configurations.
196
+
197
+ ## Distribution & Packaging (Homebrew)
198
+
199
+ ArgsBarg is built to distribute the compiled binary and shell completions cleanly through Homebrew via a standard **tap-from-repo** model.
200
+
201
+ ### Installation & Post-Install Setup:
146
202
 
147
203
  ```bash
148
- bun add argsbarg
204
+ brew tap <org>/<repo> git@github.com:<org>/<repo>.git
205
+ brew install <tap>/myapp
149
206
  ```
150
207
 
208
+ During installation, Homebrew registers the built-in generated shell completions automatically via `generate_completions_from_executable` (see [docs/distribution-homebrew.md](docs/distribution-homebrew.md)).
151
209
 
210
+ ### Shell Completions:
152
211
 
153
- ### Cursor / AI agents
154
-
155
- Argsbarg ships authoring docs in `node_modules/argsbarg/docs/`. Agents do not load them unless your repo points there — copy the thin Cursor rule after install (it tells agents to **read** `cli-program.md`, not duplicate it):
212
+ Completion scripts can also be output directly at any time for manual setups or formula auditing:
156
213
 
157
214
  ```bash
158
- mkdir -p .cursor/rules
159
- mkdir -p .cursor/rules
160
- bun scripts/merge-cli-program-rule.ts . \
161
- node_modules/argsbarg/examples/full-example/.cursor/rules/cli-program.mdc
215
+ myapp completion bash
216
+ myapp completion zsh
217
+ myapp completion fish
162
218
  ```
163
219
 
164
- Add app-specific conventions in a second rule if needed. Copy the rule from the template, then add a `**<your-app> conventions:**` block at the bottom (see **Cursor rule** in [docs/cli-program.md](docs/cli-program.md)). Documentation map: **[docs/README.md](docs/README.md)**.
220
+
165
221
 
166
222
  ## How it works
167
223
 
@@ -228,19 +284,20 @@ Check the `examples/` directory for full working scripts:
228
284
 
229
285
  | Example | File | Shows |
230
286
  | --------------------- | ------------------------ | ------------------------------------------------------------------------------------------------- |
231
- | `ArgsBargMinimal` | `examples/minimal.ts` | String + presence flags, `MissingOrUnknown` fallback. |
287
+ | `ArgsBargMinimal` | `examples/minimal.ts` | Smallest embeddable CLI (not a copy template). |
232
288
  | `ArgsBargNested` | `examples/nested.ts` | Nested command tree, positional tails, async handlers. |
233
- | `ArgsBargFormats` | `examples/formats.ts` | `CliValueFormat`, `default`, `ctx.inputs`. |
234
- | `ArgsBargFullExample` | `examples/full-example/` | **Copy template:** all builtins, schemagen, Homebrew justfile, `outputSchema`, `from "argsbarg"`. |
289
+ | `ArgsBargFormats` | `examples/formats.ts` | `CliValueFormat`, `default`, `ctx.inputs`. |
290
+ | `ArgsBargFullExample` | `examples/full-example/` | **Default copy template:** all builtins, Homebrew justfile; options/flags only (no schemagen). |
291
+ | `ArgsBargFullExampleJson` | `examples/full-example-json/` | **Schema-first copy template:** `@sg`, `inputSchema`/`outputSchema`, REST CRUD, SQLite. |
235
292
 
236
293
 
237
294
  Examples ship in the npm package under `node_modules/argsbarg/examples/`.
238
295
 
239
296
  ## Bootstrap a new CLI
240
297
 
241
- Copy the shipped `examples/full-example` template into a new directory:
298
+ Copy a shipped template into a new directory (`cli` default, or `json` for schema-first):
242
299
 
243
- Interactive (TTY):
300
+ Interactive (TTY) — pick template A/B, then key and release repo:
244
301
 
245
302
  ```bash
246
303
  bunx argsbarg create my-cli
@@ -250,12 +307,21 @@ Non-interactive:
250
307
 
251
308
  ```bash
252
309
  bunx argsbarg create my-cli \
310
+ --template cli \
253
311
  --key my-cli --release-repo org/my-cli --yes
254
312
  ```
255
313
 
314
+ Schema-first (`@sg`, JSON schemas, REST CRUD demo):
315
+
316
+ ```bash
317
+ bunx argsbarg create my-api \
318
+ --template json \
319
+ --key my-api --release-repo org/my-api --yes
320
+ ```
321
+
256
322
  Edit `scripts/create-identity.ts` in the new repo to set `desc` (used by `program.description` and the Homebrew formula).
257
323
 
258
- `create` copies the template (including `.cursor/rules/cli-program.mdc`), substitutes `{key}` / `{tap}` / `{releaseRepo}` placeholders in `README.md` and other files, runs `bun install`, schemagen, `bun test`, and `git init` + Initial commit when appropriate.
324
+ `create` copies the template (including `.cursor/rules/cli-program.mdc`), substitutes `{key}` / `{tap}` / `{releaseRepo}` placeholders, runs `bun install`, `argsbarg schemagen` (json template only), `bun test`, and `git init` + Initial commit when appropriate.
259
325
 
260
326
  **Git bootstrap:** skipped when the target already has a `.git` directory, or when the target sits inside an existing git work tree (monorepo subfolder). Standalone new directories get an `Initial commit`.
261
327
 
@@ -263,24 +329,16 @@ Verify an existing tree: `bunx argsbarg create --check .`
263
329
 
264
330
  To refresh Cursor rules in an existing consumer: `bun scripts/merge-cli-program-rule.ts .` and `bun scripts/merge-code-rule.ts .` from an argsbarg checkout (or pass the npm package path to the template).
265
331
 
266
- ### What the full-example template includes
332
+ ### What the copy templates include
267
333
 
334
+ Both templates ship all builtins (`completion`, `version`, `configure`, `docs`, `mcp`, `http`), Homebrew `justfile` + formula scripts, and `.cursor/rules/`.
268
335
 
269
- | Area | Files / wiring |
270
- | --------------------- | -------------------------------------------------------------------------------------- |
271
- | All builtins | `completion`, `version`, `configure`, `docs`, `mcp`, `http`, `configure get`/`set` |
272
- | `@sg` schemagen | `/** @sg */` on types in `src/**/*.ts` → `{TypeName}Schema` in `__generated__/` |
273
- | `outputSchema` | `src/commands/status/types.ts` → `StatusJsonOutputSchema` from `__generated__/` |
274
- | Schemagen | `just schemagen` → `argsbarg schemagen` (justfile exports `node_modules/.bin` on `PATH`) |
275
- | Command layout | `src/commands/<name>/command.ts`; registration in `src/program.ts` |
276
- | MCP doc topics | `docs.topics` auto-exposed as `<key>://docs/<topic>` resources when docs + MCP enabled |
277
- | Package import | `from "argsbarg"` (not relative to argsbarg `src/`) |
278
- | Homebrew distribution | `scripts/formula-shared.ts`, `scripts/dev-formula.ts`, `Formula/`, `justfile` |
279
- | Dev tooling | Biome (`just format` / `just lint`), TypeScript, colocated tests |
280
- | Cursor rules | `.cursor/rules/cli-program.mdc`, `.cursor/rules/code.mdc` |
281
-
336
+ | Template | Path | Adds beyond builtins |
337
+ | --- | --- | --- |
338
+ | **cli** (default) | `examples/full-example/` | `echo`, `status` — options/flags only; no schemagen |
339
+ | **json** | `examples/full-example-json/` | `@sg` schemagen, `inputSchema`/`outputSchema`, `render-json`, `workspaces` REST CRUD, in-memory SQLite |
282
340
 
283
- When changing builtins or the template, run `just check-full-example` from the argsbarg repo root.
341
+ Package import: `from "argsbarg"` (not relative to argsbarg `src/`).
284
342
 
285
343
  ```bash
286
344
  export PATH="$PATH:$(pwd)/examples"
@@ -301,6 +359,42 @@ just run status --json
301
359
 
302
360
 
303
361
 
362
+ ## [Experimental] AI Agent & Copilot Integrations
363
+
364
+ ArgsBarg includes optional experimental features designed to make your CLI and services easily discoverable and executable by modern developer AI agents (such as Cursor, Claude Code, and standard MCP clients). These are entirely opt-in and do not affect the footprint, performance, or stability of the core CLI and HTTP layers.
365
+
366
+ ### 1. Model Context Protocol (MCP) Server
367
+
368
+ Opt in by setting `mcpServer: { enabled: true }` on your program root. Running `myapp mcp` starts a JSON-RPC 2.0 stdio server.
369
+
370
+ - **Automatic Tool Exposure** — Every leaf command in your CLI tree becomes an executable MCP tool with inputs automatically generated from your CLI options.
371
+ - **Documentation Resources** — Your CLI structure, JSON schemas, and bundled `docs.topics` are automatically exposed to agents as resources (e.g., `<key>://schema`).
372
+ - **Context-Aware Invocations** — Handlers can read `ctx.invocation` to distinguish between direct CLI, HTTP requests, or headless MCP calls.
373
+
374
+ See **[docs/mcp.md](docs/mcp.md)** for configuration, env bootstrapping, custom resources, Cursor/Claude setup, and protocol details.
375
+
376
+ ### 2. IDE Copilot Rules (Cursor / Claude Code)
377
+
378
+ ArgsBarg ships authoring docs under `node_modules/argsbarg/docs/`. Because AI agents do not automatically read inside `node_modules/`, you can copy a thin custom rule into your project:
379
+
380
+ ```bash
381
+ mkdir -p .cursor/rules
382
+ bun scripts/merge-cli-program-rule.ts . \
383
+ node_modules/argsbarg/examples/full-example/.cursor/rules/cli-program.mdc
384
+ ```
385
+
386
+ This acts as a "tripwire" that instructs AI agents in your workspace to read ArgsBarg's framework documentation before modifying your command definitions or schemas. See the **Cursor rule** section in [docs/cli-program.md](docs/cli-program.md).
387
+
388
+ ### 3. Generated Skills & Workspace Configuration
389
+
390
+ Running `myapp configure --sync` installs a compact `SKILL.md` index and full-reference `reference.md` to `~/.agents/skills/<key>/` when `program.skill: { enabled: true }`.
391
+
392
+ See **[docs/configure.md](docs/configure.md)** and **[docs/ai-skills.md](docs/ai-skills.md)** for developer setup and automated Homebrew pipeline integration.
393
+
394
+ ---
395
+
396
+
397
+
304
398
  ## Public API overview
305
399
 
306
400
  The package root (`argsbarg` / `src/index.ts`) exports the types and runtime you need to define a schema and run it. Parsing, completion script generation, help rendering, and schema pre-validation live in other modules under `src/` for tests and advanced integrations.
@@ -311,8 +405,8 @@ The package root (`argsbarg` / `src/index.ts`) exports the types and runtime you
311
405
  | `CliProgram`, `CliOption`, `CliPositional`, `CliHandler` | Schema and handler types. |
312
406
  | `CliOptionKind`, `CliValueFormat`, `CliFallbackMode` | Option kinds, value formats (`duration`, `comma-list`, `date`, `date-time`), and root fallback behavior. |
313
407
  | `CliSchemaValidationError` | Thrown when the static command tree violates schema rules. |
314
- | `CliContext` | Handler context (`ctx.hasFlag`, `ctx.stringOpt`, `ctx.durationOpt`, `ctx.inputs`, `ctx.invocation`, …). |
315
- | `CliLeafInputs` | Record type returned by `ctx.inputs` — coerced option/positional values keyed by schema name. |
408
+ | `CliContext` | Handler context (`ctx.hasFlag`, `ctx.stringOpt`, `ctx.durationOpt`, `ctx.inputs`, `ctx.invocation`, …). |
409
+ | `CliLeafInputs` | Record type returned by `ctx.inputs` — coerced option/positional values keyed by schema name. |
316
410
  | `Cli` | Runtime: validate + freeze program, `run()`, `invoke()`, `serveMcp()`, `appConfig` getter, `exportCommandSchema()`, `exportAppConfigSchema()`. |
317
411
  | `CliInvokeResult`, `CliInvokeKind` | Result types from `cli.invoke()`. |
318
412
  | `CliAppConfig`, `CliAppConfigEntry` | App config block on the program root (`entries` metadata overlay + optional `jsonSchema`). |
package/docs/README.md CHANGED
@@ -27,7 +27,8 @@ Examples are included in the npm tarball (`package.json` `files`). After `bun ad
27
27
  | Tier | Path | Use when |
28
28
  | --- | --- | --- |
29
29
  | Learn | [examples/minimal.ts](../examples/minimal.ts), [examples/nested.ts](../examples/nested.ts), [formats.ts](../examples/formats.ts) | One feature at a time |
30
- | **Copy** | [examples/full-example/](../examples/full-example/) | Bootstrapping a production CLI (all builtins + schemagen + Homebrew justfile) |
30
+ | **Copy (CLI)** | [examples/full-example/](../examples/full-example/) | Default `create` template — all builtins, Homebrew justfile; no schemagen |
31
+ | **Copy (JSON)** | [examples/full-example-json/](../examples/full-example-json/) | `create --template json` — `@sg`, schemas, REST CRUD, SQLite |
31
32
 
32
33
  ## Framework docs vs consumer docgen
33
34
 
@@ -35,6 +36,6 @@ Examples are included in the npm tarball (`package.json` `files`). After `bun ad
35
36
  | --- | --- | --- |
36
37
  | **Framework docs** | How argsbarg works; authoring conventions | This directory — shipped in `node_modules/argsbarg/docs/` after `bun add argsbarg` |
37
38
  | **Consumer docgen** | *Your* command tree, API, MCP guide for *your* app | `myapp docs cli`, `docs cli-schema`, `docs mcp` — written to `./docs/` with `--save` |
38
- | **Cursor rule** | Thin tripwire telling agents to read framework docs | `node_modules/argsbarg/examples/full-example/.cursor/rules/cli-program.mdc` — included by `create`; refresh with `merge-cli-program-rule.ts` |
39
+ | **Cursor rule** | Thin tripwire telling agents to read framework docs | `node_modules/argsbarg/examples/full-example-json/.cursor/rules/cli-program.mdc` — merge default for consumers; `create` includes a template copy |
39
40
 
40
41
  Agents do **not** load `node_modules/argsbarg/docs/` unless your repo references them (Cursor rule, `AGENTS.md`, or an `alwaysApply` project rule). Generated `./docs/cli.md` in a consumer repo describes **your** CLI, not argsbarg itself.
package/docs/ai-skills.md CHANGED
@@ -2,29 +2,29 @@
2
2
 
3
3
  > This feature is experimental.
4
4
 
5
- ArgsBarg can generate Cursor and Claude Code skill directories (`SKILL.md` + `reference.md`) from your CLI schema.
5
+ ArgsBarg can generate agent skill directories (`skill.md` + `reference.md`) from your CLI schema and install them to `~/.agents/skills/<key>/` per the [.agents protocol](https://dotagentsprotocol.com/).
6
6
 
7
- ## Install via `configure` (recommended)
7
+ ## Enable on the program root
8
8
 
9
- Install skills to the user environment:
10
-
11
- ```bash
12
- myapp configure --sync --yes
13
- # or interactive (accept skill targets when prompted):
14
- myapp configure
9
+ ```typescript
10
+ export const program = {
11
+ key: "myapp",
12
+ skill: { enabled: true },
13
+ ...
14
+ } satisfies CliProgram;
15
15
  ```
16
16
 
17
- Skills are written when the agent home or CLI exists:
17
+ When `skill.enabled` is `true`, Homebrew `post_install` (`configure --sync --yes`) installs and refreshes the skill. When omitted or `enabled` is not `true`, no skill is installed.
18
18
 
19
- - Cursor: `~/.cursor/skills/<dir>/` when `~/.cursor` exists
20
- - Claude Code: `~/.claude/skills/<dir>/` when `~/.claude` exists
21
- - Codex: `~/.codex/skills/<dir>/` when `codex` is on PATH
22
- - OpenCode: `~/.config/opencode/skills/<dir>/`
23
- - OpenClaw: `~/.openclaw/skills/<dir>/` when `openclaw` is on PATH
19
+ The skill directory name is the program `key` with `/`, `\`, and spaces replaced by `_` (e.g. `sqsp-qa`, `full-example`).
24
20
 
25
- The skill directory name defaults to the sanitized program `key` (e.g. `minimal.ts` → `minimal_ts`).
21
+ ## Install via `configure --sync`
22
+
23
+ ```bash
24
+ myapp configure --sync --yes
25
+ ```
26
26
 
27
- Existing skill directories are removed and rewritten on each install.
27
+ Skills are not prompted during interactive `configure` — install and uninstall are automatic when `skill.enabled` is set (brew install/uninstall and `--sync` / `--remove-all`).
28
28
 
29
29
  ## Programmatic install
30
30
 
@@ -32,28 +32,41 @@ Existing skill directories are removed and rewritten on each install.
32
32
  import { cliSkillInstall } from "argsbarg/skill/install"; // internal module
33
33
  ```
34
34
 
35
- For library use, call `cliSkillInstall(root, "cursor" | "claude", { global: true, rimraf: true })` — it returns changed file paths.
35
+ `cliSkillInstall(root, { global: true, rimraf: true })` returns changed file paths.
36
36
 
37
37
  ## Generated content
38
38
 
39
- - **`SKILL.md`** — YAML frontmatter, compact command index, pitfalls, and a pointer to `reference.md`
39
+ - **`skill.md`** — [.agents protocol](https://dotagentsprotocol.com/) frontmatter (`id`, `name`, `description`, `enabled`), compact command index, pitfalls, client setup, and a pointer to `reference.md`
40
+ - **`SKILL.md`** — compatibility copy of `skill.md` for tools that expect uppercase filenames
40
41
  - **`reference.md`** — full `docs cli` markdown reference
41
42
 
42
- Installed files include an HTML comment hint (`Generated by myapp configure; do not edit.`) after SKILL.md frontmatter and at the top of `reference.md`.
43
+ Installed files include an HTML comment hint (`Generated by myapp configure; do not edit.`) after skill frontmatter and at the top of `reference.md`.
44
+
45
+ ## Client setup
46
+
47
+ | Client | Skill path |
48
+ | --- | --- |
49
+ | Cursor, Codex, Copilot, most agents | `~/.agents/skills/<key>/` (auto via `configure --sync`) |
50
+ | Claude Code | Manual symlink to `~/.claude/skills/<key>/` |
51
+
52
+ ```bash
53
+ mkdir -p ~/.claude/skills
54
+ ln -sf ~/.agents/skills/<key> ~/.claude/skills/<key>
55
+ ```
43
56
 
44
- Skills describe **shell invocation only** — no MCP setup, `mcp.json`, or `tools/call` guidance. Use **`myapp docs mcp`** (when `docs` and `mcpServer` are enabled) or connect the MCP server for agent execution.
57
+ Skills describe **shell invocation only** — no MCP setup or `tools/call` guidance. Use **`myapp docs mcp`** (when `docs` and `mcpServer` are enabled) or connect the MCP server for agent execution.
45
58
 
46
59
  ## MCP vs skills vs docs
47
60
 
48
61
  | Mechanism | Role |
49
62
  | --- | --- |
50
63
  | **`myapp mcp`** (requires `mcpServer`) | Runtime tool execution over MCP |
51
- | **`myapp configure`** (skill targets) | Persists optimized skill bundle (`SKILL.md` index + `reference.md` full API) |
64
+ | **`program.skill.enabled`** + **`configure --sync`** | Persists optimized skill bundle at `~/.agents/skills/<key>/` |
52
65
  | **`myapp docs`** (requires `docs`) | Bundled markdown on stdout (`docs mcp` when MCP enabled) |
53
66
 
54
- `SKILL.md` is the routing index; `reference.md` matches `docs cli`. Prefer `configure` over `docs skill` for agents. See [cli-program.md](cli-program.md).
67
+ `skill.md` is the routing index; `reference.md` matches `docs cli`. Prefer `configure --sync` over `docs skill` for installed agents. See [cli-program.md](cli-program.md).
55
68
 
56
- **Claude Code plugin** (`mcpServer.claudePlugin: true` → `mcp bundle` writes `dist/claude-plugin/<name>.zip`) ships a separate MCP pointer skill (`SKILL.md` only) that routes agents to the bundled MCP server. This is a **dist artifact**, not installed via `configure`. Use **`configure`** for persisted shell-oriented skills.
69
+ **Claude Code plugin** (`mcpServer.claudePlugin: true` → `mcp bundle` writes `dist/claude-plugin/<name>.zip`) ships a separate MCP pointer skill (`SKILL.md` only) that routes agents to the bundled MCP server. This is a **dist artifact**, not installed via `configure`.
57
70
 
58
71
  See also:
59
72