@makerx/yoke 0.10.0 → 0.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -28,10 +28,10 @@ yoke sync --user # ~/.claude/skills
28
28
  ## CLI
29
29
 
30
30
  ```bash
31
- yoke sync [--user] # write yoke's skills
32
- yoke review [number] # review a PR (used by /review)
33
- yoke review-ci # add the CI review workflow (used by /review-ci)
34
- yoke models # list each provider's models
31
+ yoke sync [--user] [--force] # write yoke's skills
32
+ yoke review [number] # review a PR (used by /review)
33
+ yoke review-ci # add the CI review workflow (used by /review-ci)
34
+ yoke models # list each provider's models
35
35
  ```
36
36
 
37
37
  ## Configuration
package/dist/cli.js CHANGED
@@ -7,7 +7,7 @@ import { Command } from "commander";
7
7
  // package.json
8
8
  var package_default = {
9
9
  name: "@makerx/yoke",
10
- version: "0.10.0",
10
+ version: "0.11.0",
11
11
  description: "Lean, user-invoked Claude Code skills for MakerX AI-assisted delivery, plus the CLI they call.",
12
12
  license: "MIT",
13
13
  author: "MakerX",
@@ -2227,12 +2227,12 @@ function skillsRoot(user, cwd = process.cwd(), home = homedir3()) {
2227
2227
  function isOwnedByUser(skillFile) {
2228
2228
  return existsSync8(skillFile) && !readFileSync8(skillFile, "utf8").includes(ownerMarker);
2229
2229
  }
2230
- function syncSkills(destination, userDestination, skills = bundledSkills) {
2230
+ function syncSkills(destination, userDestination, force = false, skills = bundledSkills) {
2231
2231
  const result = { written: [], skipped: [] };
2232
2232
  for (const skill of skills) {
2233
2233
  const target = join9(skill.userLevel ? userDestination : destination, skill.name);
2234
2234
  const skillFile = join9(target, "SKILL.md");
2235
- if (isOwnedByUser(skillFile)) {
2235
+ if (!force && isOwnedByUser(skillFile)) {
2236
2236
  result.skipped.push(target);
2237
2237
  continue;
2238
2238
  }
@@ -2246,13 +2246,13 @@ function syncSkills(destination, userDestination, skills = bundledSkills) {
2246
2246
  // src/cli.ts
2247
2247
  var { version } = package_default;
2248
2248
  var program = new Command("yoke").description("Lean Claude Code skills and the CLI they call.").version(version);
2249
- program.command("sync").description("Write yoke's skills into this repo's .claude/skills, or ~/.claude/skills with --user").option("--user", "write to ~/.claude/skills instead, for every repo").action((options) => {
2249
+ program.command("sync").description("Write yoke's skills into this repo's .claude/skills, or ~/.claude/skills with --user").option("--user", "write to ~/.claude/skills instead, for every repo").option("--force", "overwrite same-named skills that yoke didn't write").action((options) => {
2250
2250
  const user = options.user ?? false;
2251
2251
  const cwd = process.cwd();
2252
2252
  const display = (path) => path.startsWith(cwd) ? relative(cwd, path) : path;
2253
- const { written, skipped } = syncSkills(skillsRoot(user), skillsRoot(true));
2253
+ const { written, skipped } = syncSkills(skillsRoot(user), skillsRoot(true), options.force ?? false);
2254
2254
  for (const file of written) console.log(`wrote ${display(file)}`);
2255
- for (const dir of skipped) console.log(`skipped ${display(dir)} (your own skill; delete it to take yoke's)`);
2255
+ for (const dir of skipped) console.log(`skipped ${display(dir)} (not yoke's skill; rerun with --force to overwrite it)`);
2256
2256
  });
2257
2257
  var pr = program.command("pr").description("Pull request commands");
2258
2258
  pr.command("raise").description("Validate a PR title and body, then create the PR with gh").requiredOption("--title <title>", "single-line PR title").requiredOption("--body <body>", "PR body with ## What, ## Why and optionally ## How").option("--base <branch>", "base branch (defaults to the repo default)").option("--no-draft", "create a ready-for-review PR instead of a draft").addHelpText("after", raiseGuide).action((options) => {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@makerx/yoke",
3
- "version": "0.10.0",
3
+ "version": "0.11.0",
4
4
  "description": "Lean, user-invoked Claude Code skills for MakerX AI-assisted delivery, plus the CLI they call.",
5
5
  "license": "MIT",
6
6
  "author": "MakerX",