diff --git a/.engineering/planning/journal.jsonl b/.engineering/planning/journal.jsonl index 14409c1..0b2f00e 100644 --- a/.engineering/planning/journal.jsonl +++ b/.engineering/planning/journal.jsonl @@ -186,3 +186,4 @@ {"args":{"command":"move-status","decided_on":"{\"recorded\":{\"test_result\":1}}","target":"01MEM0000000000000064","to":"proposed"},"changed":{},"entity":"story","entry_hash":"f7c57390b7e5131fcb80e529afc9fc8f04be94cafbad3521328623e05f8c799e","from_state":"draft","id":"retire-ess-specify","parent_hash":"c1af61a4a40e1332156137f5248f7278c4d4dd230c2b94611d7b55b844ab8ffb","payload":{"actor":"human:timo","at":1790318170051,"causation":"cmd-move-story-retire-ess-specify-1790318170051","change":{"change":"moved","decided_on":{"recorded":{"test_result":1}},"from":"draft","to":"proposed"},"correlation":"protocol-artifact-move","event_id":"story:retire-ess-specify@3#0~da6e24e15684d045","executor":null,"recorded_at":"2026-09-25T06:36:10Z"},"revision":3,"to_state":"proposed","type":"aep.status.move/v1","version":1} {"args":{"command":"move-status","decided_on":"{\"recorded\":{\"test_result\":1}}","target":"01MEM0000000000000064","to":"active"},"changed":{},"entity":"story","entry_hash":"623fa207625dcfc20364669ed3657d4de897709bb53b1e110dcd21099a45becb","from_state":"proposed","id":"retire-ess-specify","parent_hash":"f7c57390b7e5131fcb80e529afc9fc8f04be94cafbad3521328623e05f8c799e","payload":{"actor":"human:timo","at":1790318170218,"causation":"cmd-move-story-retire-ess-specify-1790318170218","change":{"change":"moved","decided_on":{"recorded":{"test_result":1}},"from":"proposed","to":"active"},"correlation":"protocol-artifact-move","event_id":"story:retire-ess-specify@4#0~f0694be4ea570c25","executor":null,"recorded_at":"2026-09-25T06:36:10Z"},"revision":4,"to_state":"active","type":"aep.status.move/v1","version":1} {"args":{"command":"move-status","decided_on":"{\"recorded\":{\"test_result\":1}}","target":"01MEM0000000000000064","to":"implemented"},"changed":{},"entity":"story","entry_hash":"5f14621f29e41c6d0274cdf4974d88310addd62c3c034f0d64962f007d650f78","from_state":"active","id":"retire-ess-specify","parent_hash":"623fa207625dcfc20364669ed3657d4de897709bb53b1e110dcd21099a45becb","payload":{"actor":"human:timo","at":1790318170388,"causation":"cmd-move-story-retire-ess-specify-1790318170388","change":{"change":"moved","decided_on":{"recorded":{"test_result":1}},"from":"active","to":"implemented"},"correlation":"protocol-artifact-move","event_id":"story:retire-ess-specify@5#0~31bf6cfcddec0e7f","executor":null,"recorded_at":"2026-09-25T06:36:10Z"},"revision":5,"to_state":"implemented","type":"aep.status.move/v1","version":1} +{"args":{"command":"create-entity","data":{"body":"# Story: one-sentence onboarding through `b10x`\n\n## Goal\nA person gives Claude Code or Codex one sentence and this repository's link. The agent follows\n`SETUP.md`: it asks before installing the `b10x` binary, then runs `/b10x:init`, which asks what the\nperson wants to do (plan and deliver work, write specifications, isolated Git checkouts,\nintegrations) and how to install the CLIs (prebuilt archives by default, or `cargo`). `b10x` reads\nboth hosts, the binaries on `PATH` and project settings, and plans exact actions: plugins from the\n`b10x` marketplace, CLIs at their newest release, earlier installs under retired names and\nmarketplaces replaced in place. It applies them only after confirmation, and `/:upgrade`\nand the SessionStart check keep them current.\nMeasured before (2026-09-24): on the operator's machine `ess` 0.26.0 ran under plugin 0.30.0 and\n`worktree` 0.4.1 under 0.6.0; nothing reported it.\n\n## Acceptance\nIn an isolated headless trial (`task trial:sandbox`, `task trial:run`, `agentplugins-check\ntrial-isolation`), a home seeded with a pinned agentplugins 0.12.0 and a retired `aep-plan` plugin\nends after `/b10x:upgrade` with `aep@b10x` and `b10x@b10x` at the current version and no retired id\nleft; and a fresh agent given only a sentence and the link reaches a validated ESS specification\nwithout cloning a product repository.\n\n## Scope\n- `crates/b10x/`, `catalog.json`, `SETUP.md`, `.github/workflows/release.yml`\n- `plugins/*/skills/{init,upgrade}`, `plugins/b10x/hooks/hooks.json`\n- `crates/agentplugins-check/` (concept rules, `tools`, `trial-isolation`)\n- README, AGENTS.md, website install and plugin pages\n\n## Provenance\n- Trials 1–3 and rounds 3–4 (2026-09-24/25); agentplugins 0.12.0–0.14.7.\n- Rebuilt on 2026-09-25 from a 2026-09-24 draft that could not be applied to the current store.\n","status":"draft","summary":"An agent given one sentence and the repository link asks, installs b10x, plans plugins and CLIs from recorded state, and applies them only after confirmation.","title":"One-sentence onboarding through b10x"},"entity_type":"aep.story/v1","locator":"ep://planning/store/story/one-sentence-onboarding"},"changed":{"body":"# Story: one-sentence onboarding through `b10x`\n\n## Goal\nA person gives Claude Code or Codex one sentence and this repository's link. The agent follows\n`SETUP.md`: it asks before installing the `b10x` binary, then runs `/b10x:init`, which asks what the\nperson wants to do (plan and deliver work, write specifications, isolated Git checkouts,\nintegrations) and how to install the CLIs (prebuilt archives by default, or `cargo`). `b10x` reads\nboth hosts, the binaries on `PATH` and project settings, and plans exact actions: plugins from the\n`b10x` marketplace, CLIs at their newest release, earlier installs under retired names and\nmarketplaces replaced in place. It applies them only after confirmation, and `/:upgrade`\nand the SessionStart check keep them current.\nMeasured before (2026-09-24): on the operator's machine `ess` 0.26.0 ran under plugin 0.30.0 and\n`worktree` 0.4.1 under 0.6.0; nothing reported it.\n\n## Acceptance\nIn an isolated headless trial (`task trial:sandbox`, `task trial:run`, `agentplugins-check\ntrial-isolation`), a home seeded with a pinned agentplugins 0.12.0 and a retired `aep-plan` plugin\nends after `/b10x:upgrade` with `aep@b10x` and `b10x@b10x` at the current version and no retired id\nleft; and a fresh agent given only a sentence and the link reaches a validated ESS specification\nwithout cloning a product repository.\n\n## Scope\n- `crates/b10x/`, `catalog.json`, `SETUP.md`, `.github/workflows/release.yml`\n- `plugins/*/skills/{init,upgrade}`, `plugins/b10x/hooks/hooks.json`\n- `crates/agentplugins-check/` (concept rules, `tools`, `trial-isolation`)\n- README, AGENTS.md, website install and plugin pages\n\n## Provenance\n- Trials 1–3 and rounds 3–4 (2026-09-24/25); agentplugins 0.12.0–0.14.7.\n- Rebuilt on 2026-09-25 from a 2026-09-24 draft that could not be applied to the current store.\n","summary":"An agent given one sentence and the repository link asks, installs b10x, plans plugins and CLIs from recorded state, and applies them only after confirmation.","title":"One-sentence onboarding through b10x"},"entity":"story","entry_hash":"9f4d9f13c72d9bc4b810278dcee3a0269efe2a2d3de40197652599d620457107","from_state":null,"id":"one-sentence-onboarding","parent_hash":"5f14621f29e41c6d0274cdf4974d88310addd62c3c034f0d64962f007d650f78","payload":{"actor":"human:timo","at":1790364155880,"causation":"cmd-new-story-one-sentence-onboarding","change":{"change":"created","status":"draft"},"correlation":"protocol-artifact-new","event_id":"story:one-sentence-onboarding@1#0~91dd8d0a511a3232","executor":null,"recorded_at":"2026-09-25T19:22:35Z"},"revision":1,"to_state":"draft","type":"aep.entity.create/v1","version":1} diff --git a/.engineering/planning/story/one-sentence-onboarding.md b/.engineering/planning/story/one-sentence-onboarding.md new file mode 100644 index 0000000..e1e1667 --- /dev/null +++ b/.engineering/planning/story/one-sentence-onboarding.md @@ -0,0 +1,39 @@ +--- +format: aep.planning-md/1 +id: story:one-sentence-onboarding +kind: story +status: draft +title: One-sentence onboarding through b10x +summary: An agent given one sentence and the repository link asks, installs b10x, plans plugins and CLIs from recorded state, and applies them only after confirmation. +revision: 1 +--- +# Story: one-sentence onboarding through `b10x` + +## Goal +A person gives Claude Code or Codex one sentence and this repository's link. The agent follows +`SETUP.md`: it asks before installing the `b10x` binary, then runs `/b10x:init`, which asks what the +person wants to do (plan and deliver work, write specifications, isolated Git checkouts, +integrations) and how to install the CLIs (prebuilt archives by default, or `cargo`). `b10x` reads +both hosts, the binaries on `PATH` and project settings, and plans exact actions: plugins from the +`b10x` marketplace, CLIs at their newest release, earlier installs under retired names and +marketplaces replaced in place. It applies them only after confirmation, and `/:upgrade` +and the SessionStart check keep them current. +Measured before (2026-09-24): on the operator's machine `ess` 0.26.0 ran under plugin 0.30.0 and +`worktree` 0.4.1 under 0.6.0; nothing reported it. + +## Acceptance +In an isolated headless trial (`task trial:sandbox`, `task trial:run`, `agentplugins-check +trial-isolation`), a home seeded with a pinned agentplugins 0.12.0 and a retired `aep-plan` plugin +ends after `/b10x:upgrade` with `aep@b10x` and `b10x@b10x` at the current version and no retired id +left; and a fresh agent given only a sentence and the link reaches a validated ESS specification +without cloning a product repository. + +## Scope +- `crates/b10x/`, `catalog.json`, `SETUP.md`, `.github/workflows/release.yml` +- `plugins/*/skills/{init,upgrade}`, `plugins/b10x/hooks/hooks.json` +- `crates/agentplugins-check/` (concept rules, `tools`, `trial-isolation`) +- README, AGENTS.md, website install and plugin pages + +## Provenance +- Trials 1–3 and rounds 3–4 (2026-09-24/25); agentplugins 0.12.0–0.14.7. +- Rebuilt on 2026-09-25 from a 2026-09-24 draft that could not be applied to the current store. diff --git a/CHANGELOG.md b/CHANGELOG.md index e960840..9b438df 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,16 @@ # Changelog +## [0.14.7] — 2026-09-25 + +The operator's decision on the install method, asked for by a team adopting ESS: anyone with Rust +installed used to get a full source build of every CLI. + +- `b10x` installs CLIs from the release's checksummed prebuilt archive by default; `cargo` is used + when `--method cargo` asks for it or a release has no archive. Before, `cargo` on `PATH` made it + the default. +- `b10x:init` offers prebuilt first; the product `init` skills say which method is planned and + offer the other; `SETUP.md`, the install page and the plugin pages say the same. + ## [0.14.6] — 2026-09-25 The fixes for the trial findings shipped in aep 0.59.3 and ess 0.32.0; the skills now describe that diff --git a/Cargo.lock b/Cargo.lock index b34b05f..d11a574 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4,7 +4,7 @@ version = 4 [[package]] name = "agentplugins-check" -version = "0.14.6" +version = "0.14.7" dependencies = [ "clap", "serde", @@ -76,7 +76,7 @@ dependencies = [ [[package]] name = "b10x" -version = "0.14.6" +version = "0.14.7" dependencies = [ "clap", "serde", diff --git a/Cargo.toml b/Cargo.toml index 014497a..34099f7 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -3,7 +3,7 @@ resolver = "2" members = ["crates/agentplugins-check", "crates/b10x"] [workspace.package] -version = "0.14.6" +version = "0.14.7" edition = "2021" rust-version = "1.85" license = "Apache-2.0" diff --git a/SETUP.md b/SETUP.md index 496696c..4a148ed 100644 --- a/SETUP.md +++ b/SETUP.md @@ -36,8 +36,8 @@ says so. Change nothing the user did not confirm. - If `~/.local/bin` is not on `PATH`, tell the user and use `~/.local/bin/b10x` below. 2. **Run the guided setup.** `b10x setup guide` prints the `/b10x:init` skill; follow it from its step 2. It asks what the user wants to do (plan and deliver work, write specifications, isolated - Git checkouts, integrations) and how to install the CLIs (`cargo` or prebuilt), lists every - change, and applies it only after the user confirms. + Git checkouts, integrations) and how to install the CLIs (prebuilt by default, or `cargo`), + lists every change, and applies it only after the user confirms. 3. **Continue with the product.** A plugin loads in the next session. To use it now, run `b10x skill :init` (for example `b10x skill ess:init`) and follow the printed text; `b10x skill ` lists the rest. diff --git a/crates/b10x/src/main.rs b/crates/b10x/src/main.rs index 37a6b27..154b657 100644 --- a/crates/b10x/src/main.rs +++ b/crates/b10x/src/main.rs @@ -37,7 +37,7 @@ enum Top { /// Products, comma separated: aep, ess, worktree, connectors. #[arg(value_delimiter = ',')] products: Vec, - /// How to install CLIs; default: cargo when it is on PATH, else prebuilt. + /// How to install CLIs; default: prebuilt, cargo when a release has no archive. #[arg(long, value_enum)] method: Option, /// Hosts to plan for. @@ -55,7 +55,7 @@ enum Top { /// Products, comma separated; default: every installed product. #[arg(value_delimiter = ',')] products: Vec, - /// How to install CLIs; default: cargo when it is on PATH, else prebuilt. + /// How to install CLIs; default: prebuilt, cargo when a release has no archive. #[arg(long, value_enum)] method: Option, /// Hosts to plan for. @@ -91,7 +91,7 @@ enum Top { /// Target directory; defaults to `~/.local/bin` (prebuilt) or `~/.cargo/bin` (cargo). #[arg(long)] dir: Option, - /// How to install; default: cargo when it is on PATH, else prebuilt. + /// How to install; default: prebuilt, cargo when a release has no archive. #[arg(long, value_enum)] method: Option, }, @@ -108,7 +108,7 @@ enum Setup { /// Hosts to plan for. #[arg(long, value_enum, default_value_t = Hosts::All)] host: Hosts, - /// How to install CLIs; default: cargo when it is on PATH, else prebuilt. + /// How to install CLIs; default: prebuilt, cargo when a release has no archive. #[arg(long, value_enum)] method: Option, /// Print the plan as JSON. diff --git a/crates/b10x/src/plan.rs b/crates/b10x/src/plan.rs index 4718601..25861da 100644 --- a/crates/b10x/src/plan.rs +++ b/crates/b10x/src/plan.rs @@ -254,7 +254,7 @@ pub struct Context<'a> { /// Plan only the selected products (`init`, `upgrade`): nothing else is uninstalled, migrated or /// removed. `false` makes the selection the whole desired state (`setup plan`). pub only: bool, - /// How to install binaries; `None` picks cargo when it is on `PATH`, else prebuilt. + /// How to install binaries; `None` picks the prebuilt archive when the release has one, else cargo. pub method: Option, /// Update only what is installed: no new plugins, and a host with nothing Beyond10x on it is /// left alone (`upgrade`). @@ -818,9 +818,9 @@ fn plan_settings( } } -/// The install method for one binary: the explicit choice when it can be honoured, else cargo when -/// it is on `PATH`, else the prebuilt archive when the release has one. -fn method(context: &Context<'_>, inventory: &Inventory, install: &Install) -> Option { +/// The install method for one binary: the explicit choice when it can be honoured, else the prebuilt +/// archive when the release has one, else cargo. +fn method(context: &Context<'_>, install: &Install) -> Option { let archive = install.archive.is_some() && context .resolved @@ -828,14 +828,13 @@ fn method(context: &Context<'_>, inventory: &Inventory, install: &Install) -> Op .get(install.repository()) .copied() .unwrap_or(false); - let cargo = install.cargo.is_some() && inventory.cargo; - match context.method { - Some(Method::Prebuilt) if archive => Some(Method::Prebuilt), - Some(Method::Cargo) if install.cargo.is_some() => Some(Method::Cargo), - _ if cargo => Some(Method::Cargo), - _ if archive => Some(Method::Prebuilt), - _ if install.cargo.is_some() => Some(Method::Cargo), - _ => None, + let cargo = install.cargo.is_some(); + if cargo && (matches!(context.method, Some(Method::Cargo)) || !archive) { + Some(Method::Cargo) + } else if archive { + Some(Method::Prebuilt) + } else { + None } } @@ -898,7 +897,7 @@ fn plan_binaries( ), }); } else { - let Some(method) = method(context, inventory, &binary.install) else { + let Some(method) = method(context, &binary.install) else { findings.push(Finding { level: Level::Warn, host: None, @@ -1458,7 +1457,7 @@ mod tests { } #[test] - fn cargo_is_the_default_when_present_and_prebuilt_otherwise() { + fn prebuilt_is_the_default_and_cargo_only_when_asked_or_without_archives() { let method_for = |cargo: bool, asked: Option| { let inventory = Inventory { claude: Some(HostState::default()), @@ -1473,12 +1472,9 @@ mod tests { _ => None, }) }; - assert_eq!(method_for(true, None), Some(Method::Cargo)); + assert_eq!(method_for(true, None), Some(Method::Prebuilt)); assert_eq!(method_for(false, None), Some(Method::Prebuilt)); - assert_eq!( - method_for(true, Some(Method::Prebuilt)), - Some(Method::Prebuilt) - ); + assert_eq!(method_for(true, Some(Method::Cargo)), Some(Method::Cargo)); } #[test] diff --git a/plugins/aep/.claude-plugin/plugin.json b/plugins/aep/.claude-plugin/plugin.json index d7ab82b..35b2f6a 100644 --- a/plugins/aep/.claude-plugin/plugin.json +++ b/plugins/aep/.claude-plugin/plugin.json @@ -2,7 +2,7 @@ "name": "aep", "displayName": "AEP", "description": "Plan governed work in the AEP artifact store and deliver it in reviewed waves: decomposition, plan critique, reverse engineering, story scoping, implementation and adversarial review.", - "version": "0.14.6", + "version": "0.14.7", "author": { "name": "Beyond10x" }, diff --git a/plugins/aep/.codex-plugin/plugin.json b/plugins/aep/.codex-plugin/plugin.json index 448835c..e08a0cf 100644 --- a/plugins/aep/.codex-plugin/plugin.json +++ b/plugins/aep/.codex-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "aep", - "version": "0.14.6", + "version": "0.14.7", "description": "Plan governed work in the AEP artifact store and deliver it in reviewed waves.", "author": { "name": "Beyond10x" diff --git a/plugins/aep/skills/init/SKILL.md b/plugins/aep/skills/init/SKILL.md index 0185b65..94eb2b4 100644 --- a/plugins/aep/skills/init/SKILL.md +++ b/plugins/aep/skills/init/SKILL.md @@ -13,9 +13,10 @@ Run `aep --version`. If it answers, go to step 2: `b10x:init` just installed it, b10x init aep --out ~/.local/state/b10x/plan.json ``` -It prints what it would do, including the install method: `cargo` when a Rust toolchain is on -`PATH`, otherwise a prebuilt, checksummed release archive. Ask the user which method they want if -both are possible, re-run with `--method cargo` or `--method prebuilt` to match, show the plan, and +It prints what it would do, including the install method: the prebuilt, checksummed release archive +by default, or `cargo` (a source build) when the user asks for it and a Rust toolchain is on `PATH`. +When both are possible, say which is planned and offer the other; re-run with `--method cargo` if +they choose it, show the plan, and after they confirm run `b10x setup apply --plan ~/.local/state/b10x/plan.json --yes`. Planning models new data with ESS (`aep:planning` rule 7). If `ess --version` does not answer, offer diff --git a/plugins/b10x/.claude-plugin/plugin.json b/plugins/b10x/.claude-plugin/plugin.json index ecb16ee..2e2d4db 100644 --- a/plugins/b10x/.claude-plugin/plugin.json +++ b/plugins/b10x/.claude-plugin/plugin.json @@ -2,7 +2,7 @@ "name": "b10x", "displayName": "Beyond10x", "description": "Set up, upgrade and check the Beyond10x plugins and binaries, route work to them, and create portable plugins.", - "version": "0.14.6", + "version": "0.14.7", "author": { "name": "Beyond10x" }, diff --git a/plugins/b10x/.codex-plugin/plugin.json b/plugins/b10x/.codex-plugin/plugin.json index 331d0a3..504ef38 100644 --- a/plugins/b10x/.codex-plugin/plugin.json +++ b/plugins/b10x/.codex-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "b10x", - "version": "0.14.6", + "version": "0.14.7", "description": "Set up, upgrade and check the Beyond10x plugins and binaries, route work to them, and create portable plugins.", "author": { "name": "Beyond10x" diff --git a/plugins/b10x/skills/init/SKILL.md b/plugins/b10x/skills/init/SKILL.md index c77441c..fd9a99f 100644 --- a/plugins/b10x/skills/init/SKILL.md +++ b/plugins/b10x/skills/init/SKILL.md @@ -39,9 +39,10 @@ question tool when it has one (Claude Code: `AskUserQuestion` with `multiSelect: command -v cargo ``` -Ask: *How should the command-line tools be installed?* — **cargo** (builds from the release tag; -offered first when `cargo` is on `PATH`) or **prebuilt** (downloads the release's checksummed -archive; no Rust toolchain needed). Without `cargo`, say prebuilt is used and skip the question. +Ask: *How should the command-line tools be installed?* — **prebuilt** (the default: downloads the +release's checksummed archive; no Rust toolchain needed) or **cargo** (builds every crate from the +release tag; offered only when `cargo` is on `PATH`). Without `cargo`, say prebuilt is used and skip +the question. ## 4. Plan and confirm diff --git a/plugins/connectors/.claude-plugin/plugin.json b/plugins/connectors/.claude-plugin/plugin.json index 7e8e17d..8e798de 100644 --- a/plugins/connectors/.claude-plugin/plugin.json +++ b/plugins/connectors/.claude-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "connectors", - "version": "0.14.6", + "version": "0.14.7", "description": "Set up, inspect, and invoke governed integrations through the connectors CLI.", "author": { "name": "Beyond10x" }, "license": "Apache-2.0", diff --git a/plugins/connectors/.codex-plugin/plugin.json b/plugins/connectors/.codex-plugin/plugin.json index 7818bab..1087b51 100644 --- a/plugins/connectors/.codex-plugin/plugin.json +++ b/plugins/connectors/.codex-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "connectors", - "version": "0.14.6", + "version": "0.14.7", "description": "Set up, inspect, and invoke governed integrations through the connectors CLI.", "author": { "name": "Beyond10x" }, "license": "Apache-2.0", diff --git a/plugins/ess/.claude-plugin/plugin.json b/plugins/ess/.claude-plugin/plugin.json index 11bfb4c..e40ac10 100644 --- a/plugins/ess/.claude-plugin/plugin.json +++ b/plugins/ess/.claude-plugin/plugin.json @@ -2,7 +2,7 @@ "name": "ess", "displayName": "ESS", "description": "Write, retrofit, validate and project Executable System Specifications, and hold implementations to them with conformance suites.", - "version": "0.14.6", + "version": "0.14.7", "author": { "name": "Beyond10x" }, diff --git a/plugins/ess/.codex-plugin/plugin.json b/plugins/ess/.codex-plugin/plugin.json index dfb974e..5643e2c 100644 --- a/plugins/ess/.codex-plugin/plugin.json +++ b/plugins/ess/.codex-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "ess", - "version": "0.14.6", + "version": "0.14.7", "description": "Write, retrofit, validate and project Executable System Specifications, and hold implementations to them with conformance suites.", "author": { "name": "Beyond10x" diff --git a/plugins/ess/skills/init/SKILL.md b/plugins/ess/skills/init/SKILL.md index 1b6372d..8b710d6 100644 --- a/plugins/ess/skills/init/SKILL.md +++ b/plugins/ess/skills/init/SKILL.md @@ -17,9 +17,10 @@ Run `ess --version`. If it answers, go to step 2: `b10x:init` just installed it, b10x init ess --out ~/.local/state/b10x/plan.json ``` -It prints what it would do, including the install method: `cargo` when a Rust toolchain is on -`PATH`, otherwise a prebuilt, checksummed release archive. Ask the user which method they want if -both are possible, re-run with `--method cargo` or `--method prebuilt` to match, show the plan, and +It prints what it would do, including the install method: the prebuilt, checksummed release archive +by default, or `cargo` (a source build) when the user asks for it and a Rust toolchain is on `PATH`. +When both are possible, say which is planned and offer the other; re-run with `--method cargo` if +they choose it, show the plan, and after they confirm run `b10x setup apply --plan ~/.local/state/b10x/plan.json --yes`. No `b10x`? Follow https://github.com/beyond10x/agentplugins/releases/latest/download/SETUP.md first; its step 1 asks the user before it installs `b10x`. diff --git a/plugins/worktree/.claude-plugin/plugin.json b/plugins/worktree/.claude-plugin/plugin.json index 9c50e10..b173b0c 100644 --- a/plugins/worktree/.claude-plugin/plugin.json +++ b/plugins/worktree/.claude-plugin/plugin.json @@ -2,7 +2,7 @@ "name": "worktree", "displayName": "Worktree", "description": "Create, lease, finish, audit and safely clean isolated Git worktrees through the worktree CLI.", - "version": "0.14.6", + "version": "0.14.7", "author": { "name": "Beyond10x" }, diff --git a/plugins/worktree/.codex-plugin/plugin.json b/plugins/worktree/.codex-plugin/plugin.json index 815821d..4838a6e 100644 --- a/plugins/worktree/.codex-plugin/plugin.json +++ b/plugins/worktree/.codex-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "worktree", - "version": "0.14.6", + "version": "0.14.7", "description": "Create, lease, finish, audit and safely clean isolated Git worktrees through the worktree CLI.", "author": { "name": "Beyond10x" diff --git a/plugins/worktree/skills/init/SKILL.md b/plugins/worktree/skills/init/SKILL.md index 92d6036..76b266e 100644 --- a/plugins/worktree/skills/init/SKILL.md +++ b/plugins/worktree/skills/init/SKILL.md @@ -13,9 +13,10 @@ Run `worktree --version`. If it answers, go to step 2: `b10x:init` just installe b10x init worktree --out ~/.local/state/b10x/plan.json ``` -It prints what it would do, including the install method: `cargo` when a Rust toolchain is on -`PATH`, otherwise a prebuilt, checksummed release archive. Ask the user which method they want if -both are possible, re-run with `--method cargo` or `--method prebuilt` to match, show the plan, and +It prints what it would do, including the install method: the prebuilt, checksummed release archive +by default, or `cargo` (a source build) when the user asks for it and a Rust toolchain is on `PATH`. +When both are possible, say which is planned and offer the other; re-run with `--method cargo` if +they choose it, show the plan, and after they confirm run `b10x setup apply --plan ~/.local/state/b10x/plan.json --yes`. No `b10x`? Follow https://github.com/beyond10x/agentplugins/releases/latest/download/SETUP.md first; its step 1 asks the user before it installs `b10x`. diff --git a/website/docs/install.md b/website/docs/install.md index 9897eb2..e6f49b9 100644 --- a/website/docs/install.md +++ b/website/docs/install.md @@ -13,7 +13,7 @@ Tell Claude Code or Codex: The agent installs the `b10x` binary and runs `/b10x:init`: it asks what you want to do (plan and deliver work, write specifications, isolated Git checkouts, integrations) and how to install the -command-line tools (`cargo` when you have it, or prebuilt archives), lists every change — including +command-line tools (prebuilt archives by default, or `cargo`), lists every change — including earlier installs it replaces — and applies them only after you confirm. It snapshots every file it changes; `b10x setup undo` restores them. Each product then starts with its own `/:init`, and `/b10x:upgrade` or `/:upgrade` checks for newer versions. The rest of this page is the diff --git a/website/docs/plugins/b10x.md b/website/docs/plugins/b10x.md index 5c4a579..60f7dd3 100644 --- a/website/docs/plugins/b10x.md +++ b/website/docs/plugins/b10x.md @@ -34,8 +34,8 @@ It provides: | `b10x check` | the session-start drift check; offline, prints only problems | | `b10x install [--tag ] [--method cargo\|prebuilt]` | install one CLI | -CLIs install with `cargo` when it is on `PATH`, otherwise from the release's checksummed prebuilt -archive; `--method` chooses. `B10X_MARKETPLACE=` makes `b10x` read and register that +CLIs install from the release's checksummed prebuilt archive by default, and with `cargo` when +`--method cargo` asks for it or a release has no archive. `B10X_MARKETPLACE=` makes `b10x` read and register that checkout instead of this repository, for testing an unpublished marketplace. ## How it stays current diff --git a/website/docs/plugins/ess.md b/website/docs/plugins/ess.md index a7c1bb1..a0391f8 100644 --- a/website/docs/plugins/ess.md +++ b/website/docs/plugins/ess.md @@ -20,8 +20,8 @@ to raise or audit a conformance suite against a real implementation. /plugin install ess@b10x ``` -Codex: `codex plugin add ess@b10x`. Then `/ess:init` installs the CLI — with `cargo`, or the prebuilt, -checksummed archive from the [ESS release](https://github.com/beyond10x/ess/releases). +Codex: `codex plugin add ess@b10x`. Then `/ess:init` installs the CLI — the prebuilt, +checksummed archive from the [ESS release](https://github.com/beyond10x/ess/releases), or with `cargo` on request. In a headless run (`claude -p`), allow the CLI or nothing can be validated: `--allowedTools "Bash(ess:*)"`. diff --git a/website/docs/plugins/worktree.md b/website/docs/plugins/worktree.md index 4e889b1..92521ed 100644 --- a/website/docs/plugins/worktree.md +++ b/website/docs/plugins/worktree.md @@ -18,8 +18,8 @@ or audits old linked worktrees. /plugin install worktree@b10x ``` -Codex: `codex plugin add worktree@b10x`. Then `/worktree:init` installs the CLI — with `cargo`, or -the prebuilt, checksummed archive from the [worktree release](https://github.com/beyond10x/worktree/releases) — +Codex: `codex plugin add worktree@b10x`. Then `/worktree:init` installs the CLI — the prebuilt, +checksummed archive from the [worktree release](https://github.com/beyond10x/worktree/releases), or with `cargo` on request — and runs: ```bash