Skip to content

Commit e816685

Browse files
UnbreakableMJclaude
andcommitted
feat(construct-cli): Phase 2 — imperative installer + 73-agent registry
Adds the vercel-labs-style broad agent support: registry/agents.toml (72 agents ported from vercel-labs/skills src/agents.ts, MIT, + Grok flat) embedded via include_str!, with HM-managed detection (symlink->~/.agents/skills). New commands: `agent list`; `skill add/list/remove/update` (symlink default, --copy, --dry-run, project/global scope). Coexistence rule with the declarative HM module: project-local by default; a global install into an HM-managed dir is refused (explicit --agents -> exit 5, broad selection -> skipped). Registry is dual-licensed GPL-3.0-or-later OR MIT (REUSE.toml + CREDITS.md, §4.2). 16 tests, clippy -D warnings, reuse lint, and nix build all pass. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
1 parent 6a4abbc commit e816685

16 files changed

Lines changed: 2177 additions & 1 deletion

File tree

REUSE.toml

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,3 +36,13 @@ path = ["spacecraft-rust-guidelines/references/idioms.md", "spacecraft-rust-guid
3636
precedence = "override"
3737
SPDX-FileCopyrightText = ["2024 Apollo Graph, Inc.", "2026 Mohamed Hammad <Mohamed.Hammad@SpacecraftSoftware.org>"]
3838
SPDX-License-Identifier = "GPL-3.0-or-later"
39+
40+
# Third-party-derived data: the construct CLI's agent registry is ported from
41+
# vercel-labs/skills (src/agents.ts, MIT, © Vercel, Inc.). Dual-licensed
42+
# GPL-3.0-or-later OR MIT by Spacecraft Software (the MIT arm preserves Vercel's
43+
# notice; MIT→GPL compatible), §4.2. See construct-cli/CREDITS.md.
44+
[[annotations]]
45+
path = "construct-cli/registry/agents.toml"
46+
precedence = "override"
47+
SPDX-FileCopyrightText = ["Vercel, Inc.", "2026 Mohamed Hammad <Mohamed.Hammad@SpacecraftSoftware.org>"]
48+
SPDX-License-Identifier = "GPL-3.0-or-later OR MIT"

construct-cli/CREDITS.md

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
# Credits
2+
3+
## Agent registry — vercel-labs/skills
4+
5+
`registry/agents.toml` — the set of supported AI coding agents and their
6+
project/global skills directories — is **derived from the
7+
[vercel-labs/skills](https://github.com/vercel-labs/skills) project**,
8+
specifically its `src/agents.ts` registry, © Vercel, Inc., licensed under the
9+
**MIT License**.
10+
11+
The Spacecraft Software adaptation reorganizes that data into a static TOML
12+
registry embedded in the `construct` binary. Per Standard §4.2 (third-party-
13+
derived artifacts preserve their upstream license), `registry/agents.toml` is
14+
dual-licensed **`GPL-3.0-or-later OR MIT`** — the MIT arm preserves Vercel's
15+
notice — as recorded in the repository `REUSE.toml`. Only home-relative path
16+
defaults are modeled; the upstream's environment-variable overrides
17+
(`CODEX_HOME`, `CLAUDE_CONFIG_DIR`, `XDG_CONFIG_HOME`, …) are not.
18+
19+
The rest of the `construct` CLI is original Spacecraft Software work licensed
20+
`GPL-3.0-or-later`.

construct-cli/Cargo.lock

Lines changed: 109 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

construct-cli/Cargo.toml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ serde = { version = "1", features = ["derive"] }
2525
serde_json = "1"
2626
serde_yaml = "0.9"
2727
csv = "1"
28+
toml = "0.8"
2829
# Only the UTC `Timestamp` + `std` clock are used; trimming default features
2930
# drops the optional `defmt` integration (and its unmaintained transitive deps).
3031
jiff = { version = "0.2", default-features = false, features = ["std"] }
@@ -34,6 +35,7 @@ owo-colors = "4"
3435
assert_cmd = "2"
3536
predicates = "3"
3637
serde_json = "1"
38+
tempfile = "3"
3739

3840
# Stability- and size-oriented release profile (Standard §3). `target-cpu=native`
3941
# is deliberately NOT set here: this crate is distributed as a portable Nix

0 commit comments

Comments
 (0)