@ahood/cli 0.10.0 → 0.10.1
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/README.md +5 -5
- package/dist/commands/group.js +1 -1
- package/dist/config.js +7 -2
- package/dist/help.js +6 -6
- package/dist/useme/SKILL.md +2 -2
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# ahood
|
|
2
2
|
|
|
3
|
-
**The command-line client for [ahood](https://ahood.
|
|
3
|
+
**The command-line client for [ahood](https://www.ahood.dev) — a registry for installing and publishing [Claude Code](https://claude.com/claude-code) Skills.**
|
|
4
4
|
|
|
5
5
|
[](https://www.npmjs.com/package/@ahood/cli)
|
|
6
6
|
[](https://www.npmjs.com/package/@ahood/cli)
|
|
@@ -80,7 +80,7 @@ Requires Node.js 18 or later.
|
|
|
80
80
|
| Variable | Purpose |
|
|
81
81
|
| --- | --- |
|
|
82
82
|
| `AHOOD_TOKEN` | A personal API token (create one with `ahood token create <name>` after logging in once). When set, every command uses it instead of the stored browser-login credentials — the standard way to authenticate in CI or any non-interactive environment. |
|
|
83
|
-
| `AHOOD_API_URL` | Overrides the registry endpoint (default: `https://ahood.
|
|
83
|
+
| `AHOOD_API_URL` | Overrides the registry endpoint (default: `https://www.ahood.dev`). Must be `https://`, except for `localhost`/`127.0.0.1` or a `.test`/`.invalid`/`.example`/`.localhost` host, which may use plain `http://` for local development. |
|
|
84
84
|
| `XDG_CONFIG_HOME` | If set, browser-login credentials are stored under `$XDG_CONFIG_HOME/ahood/credentials.json` instead of the default `~/.config/ahood/credentials.json`. |
|
|
85
85
|
|
|
86
86
|
Paths `ahood` reads and writes in your project. The lockfile is meant to be committed, same as `package-lock.json`:
|
|
@@ -178,7 +178,7 @@ $ ahood group create "Design Team" --description "Shared skills for the design t
|
|
|
178
178
|
Created group Design Team (design-team).
|
|
179
179
|
|
|
180
180
|
$ ahood group invite-link design-team
|
|
181
|
-
https://ahood.
|
|
181
|
+
https://www.ahood.dev/groups/join?token=abc123...
|
|
182
182
|
Expires: 2026-09-14T00:00:00.000Z
|
|
183
183
|
This link (and its token) is shown only this once -- save it now, it cannot be retrieved again.
|
|
184
184
|
|
|
@@ -216,7 +216,7 @@ alice/pdf-tools is a skill, not an agent -- refusing to install it. Use `ahood s
|
|
|
216
216
|
|
|
217
217
|
**Migration plan for a strict `ahood skill`.** A future major version will make `ahood skill <verb>` skills-only by default, matching `agent` and `mcp`. Until then: (1) this release adds the strict groups and `--kind`, and labels `ahood skill` as legacy in `--help`; (2) a following minor release prints a stderr deprecation note when an `ahood skill` command actually touches a non-skill entry (stdout and `--json` unchanged); (3) the major release flips the default, keeping `ahood skill <verb> --kind all` as the explicit cross-kind escape hatch. Scripts that want today's behavior forever can pass `--kind all` now.
|
|
218
218
|
|
|
219
|
-
**`ahood mcp` has two meanings.** With no arguments, or as `ahood mcp serve` (the preferred spelling), it starts this CLI's local, read-only MCP server over stdio -- unchanged, so existing MCP host configurations keep working with no edits. With a registry verb it manages MCP server manifests. Anything else (`ahood mcp srve`, `ahood mcp --flag`) fails with usage and a suggestion instead of starting a server. Neither is the hosted registry MCP endpoint at `https://ahood.
|
|
219
|
+
**`ahood mcp` has two meanings.** With no arguments, or as `ahood mcp serve` (the preferred spelling), it starts this CLI's local, read-only MCP server over stdio -- unchanged, so existing MCP host configurations keep working with no edits. With a registry verb it manages MCP server manifests. Anything else (`ahood mcp srve`, `ahood mcp --flag`) fails with usage and a suggestion instead of starting a server. Neither is the hosted registry MCP endpoint at `https://www.ahood.dev/api/mcp`.
|
|
220
220
|
|
|
221
221
|
## Commands
|
|
222
222
|
|
|
@@ -391,7 +391,7 @@ npm test # run the vitest suite
|
|
|
391
391
|
|
|
392
392
|
If you add or change a command, update `src/help.ts`'s `COMMANDS_HELP` and then run `npm run sync-readme` to regenerate the table above — CI fails (`node scripts/sync-readme.mjs --check`) if it's out of sync.
|
|
393
393
|
|
|
394
|
-
Full reference, including personal API tokens, the public REST API, and the MCP server: **https://ahood.
|
|
394
|
+
Full reference, including personal API tokens, the public REST API, and the MCP server: **https://www.ahood.dev/docs**
|
|
395
395
|
|
|
396
396
|
## License
|
|
397
397
|
|
package/dist/commands/group.js
CHANGED
|
@@ -85,7 +85,7 @@ export async function inviteLink(args) {
|
|
|
85
85
|
console.log(`Expires: ${expiresAt}`);
|
|
86
86
|
console.log("This link (and its token) is shown only this once -- save it now, it cannot be retrieved again.");
|
|
87
87
|
}
|
|
88
|
-
// Accepts either a full join URL (https://ahood.
|
|
88
|
+
// Accepts either a full join URL (https://www.ahood.dev/groups/join?token=...)
|
|
89
89
|
// or a bare raw token, for convenience -- whatever a user pastes from
|
|
90
90
|
// `ahood group invite-link` or forwards from someone else. Anything that
|
|
91
91
|
// doesn't parse as a URL, or parses but has no `token` query param, is
|
package/dist/config.js
CHANGED
|
@@ -1,5 +1,10 @@
|
|
|
1
1
|
import { UsageError } from "./usage-error.js";
|
|
2
|
-
|
|
2
|
+
// www.ahood.dev since ahood#661: production Clerk only accepts ahood.dev
|
|
3
|
+
// origins, so web pages on the old host redirect here. The API still answers on
|
|
4
|
+
// https://ahood.vercel.app (CLIs <= 0.10.0 default to it), so an override naming
|
|
5
|
+
// that legacy host is official too and isn't warned about.
|
|
6
|
+
const DEFAULT_API_URL = "https://www.ahood.dev";
|
|
7
|
+
const LEGACY_API_URL = "https://ahood.vercel.app";
|
|
3
8
|
let warnedAboutOverride = false;
|
|
4
9
|
// AHOOD_API_URL is trusted with the bearer token on every request (see
|
|
5
10
|
// http.ts's apiFetch), so a scheme/host is validated rather than accepted
|
|
@@ -29,7 +34,7 @@ export function getApiUrl() {
|
|
|
29
34
|
if (url.protocol !== "https:" && !(url.protocol === "http:" && isLocalHost)) {
|
|
30
35
|
throw new UsageError(`AHOOD_API_URL must use https:// (http:// is only allowed for localhost/test hosts); got "${configured}".`);
|
|
31
36
|
}
|
|
32
|
-
if (trimmed !== DEFAULT_API_URL && !warnedAboutOverride) {
|
|
37
|
+
if (trimmed !== DEFAULT_API_URL && trimmed !== LEGACY_API_URL && !warnedAboutOverride) {
|
|
33
38
|
console.error(`warning: using non-default API endpoint from AHOOD_API_URL: ${trimmed}`);
|
|
34
39
|
warnedAboutOverride = true;
|
|
35
40
|
}
|
package/dist/help.js
CHANGED
|
@@ -396,7 +396,7 @@ export const MCP_SERVE_HELP = [
|
|
|
396
396
|
"skill_versions, skill_list, skill_outdated, and whoami as MCP tools -- the same data ahood's --json " +
|
|
397
397
|
"commands already return, reachable as typed tool calls instead of parsed CLI output. Meant to be " +
|
|
398
398
|
"launched by an MCP-aware agent host (e.g. Claude Code's MCP server configuration), not run interactively. " +
|
|
399
|
-
"Read-only by design. This is not the hosted registry MCP endpoint (https://ahood.
|
|
399
|
+
"Read-only by design. This is not the hosted registry MCP endpoint (https://www.ahood.dev/api/mcp), which " +
|
|
400
400
|
"is a separate server with write tools.",
|
|
401
401
|
examples: ['claude mcp add ahood -- ahood mcp serve', "npx @ahood/cli@latest mcp serve"],
|
|
402
402
|
},
|
|
@@ -445,10 +445,10 @@ export const GROUP_COMMANDS_HELP = [
|
|
|
445
445
|
{
|
|
446
446
|
usage: "ahood group join <invite-url-or-token>",
|
|
447
447
|
summary: "Join a group using an invite link or its raw token.",
|
|
448
|
-
desc: "Join a group using an invite link (e.g. https://ahood.
|
|
448
|
+
desc: "Join a group using an invite link (e.g. https://www.ahood.dev/groups/join?token=...) or its bare " +
|
|
449
449
|
"raw token -- either form works.",
|
|
450
450
|
examples: [
|
|
451
|
-
"ahood group join https://ahood.
|
|
451
|
+
"ahood group join https://www.ahood.dev/groups/join?token=abc123",
|
|
452
452
|
"ahood group join abc123",
|
|
453
453
|
],
|
|
454
454
|
},
|
|
@@ -745,7 +745,7 @@ export function formatMcpHelp() {
|
|
|
745
745
|
" ahood mcp / ahood mcp serve start this CLI's local, read-only MCP server over stdio",
|
|
746
746
|
" (what MCP host configs launch; `serve` is the preferred spelling)",
|
|
747
747
|
" ahood mcp <verb> manage mcp-kind registry entries (installs merge into .mcp.json)",
|
|
748
|
-
"Neither is the hosted registry MCP endpoint, https://ahood.
|
|
748
|
+
"Neither is the hosted registry MCP endpoint, https://www.ahood.dev/api/mcp.",
|
|
749
749
|
"Registry verbs act on MCP server manifests only; another kind is refused before any side effect.",
|
|
750
750
|
], MCP_COMMANDS_HELP, "mcp");
|
|
751
751
|
}
|
|
@@ -806,7 +806,7 @@ export function formatHelp() {
|
|
|
806
806
|
{ usage: snapGroupUsage, summary: snapGroupSummary },
|
|
807
807
|
]);
|
|
808
808
|
return [
|
|
809
|
-
"ahood -- CLI for the ahood skills registry (https://ahood.
|
|
809
|
+
"ahood -- CLI for the ahood skills registry (https://www.ahood.dev)",
|
|
810
810
|
"",
|
|
811
811
|
"Quick start:",
|
|
812
812
|
" ahood login",
|
|
@@ -832,6 +832,6 @@ export function formatHelp() {
|
|
|
832
832
|
" 4 authentication required or rejected, 5 not found,",
|
|
833
833
|
" 6 network/transport error or upstream server (5xx) error.",
|
|
834
834
|
"",
|
|
835
|
-
"Full reference: https://ahood.
|
|
835
|
+
"Full reference: https://www.ahood.dev/docs",
|
|
836
836
|
].join("\n");
|
|
837
837
|
}
|
package/dist/useme/SKILL.md
CHANGED
|
@@ -146,7 +146,7 @@ ahood skill publish alice/pdf-tools@1.1.0 --path pdf-tools --changelog "Adds spl
|
|
|
146
146
|
CLI's own credential. Example: `claude mcp add ahood -- ahood mcp serve`.
|
|
147
147
|
2. **`ahood mcp <verb>`**: registry commands for MCP server *manifests* (`server.json`) --
|
|
148
148
|
installing one merges a server entry into `.mcp.json`. This does not start anything.
|
|
149
|
-
3. **The hosted registry MCP endpoint**, `https://ahood.
|
|
149
|
+
3. **The hosted registry MCP endpoint**, `https://www.ahood.dev/api/mcp`: Streamable HTTP,
|
|
150
150
|
stateless (POST only), `Authorization: Bearer <token>`. It has write tools too:
|
|
151
151
|
`search_skills`, `get_skill`, `fetch_skill`, `read_skill`, `list_skill_versions`,
|
|
152
152
|
`list_my_skills`, `search_collections`, `get_collection`, `create_skill`, `update_skill`,
|
|
@@ -167,4 +167,4 @@ changes. `ahood skill add alexkay/ahood` is a separate, optional thing: it insta
|
|
|
167
167
|
registry-published ahood skill into this project as a pinned skill, on its own release
|
|
168
168
|
schedule. Neither is required for the other.
|
|
169
169
|
|
|
170
|
-
Full reference: `ahood --help`, `ahood <group> --help`, and https://ahood.
|
|
170
|
+
Full reference: `ahood --help`, `ahood <group> --help`, and https://www.ahood.dev/docs.
|
package/package.json
CHANGED