Skip to content

feat(init): support CLERK_SKILL_SOURCE env override#127

Closed
wyattjoh wants to merge 3 commits intomainfrom
feat/clerk-cli-skill-local-debug
Closed

feat(init): support CLERK_SKILL_SOURCE env override#127
wyattjoh wants to merge 3 commits intomainfrom
feat/clerk-cli-skill-local-debug

Conversation

@wyattjoh
Copy link
Copy Markdown
Contributor

@wyattjoh wyattjoh commented Apr 7, 2026

Summary

Adds a CLERK_SKILL_SOURCE env var as an escape hatch for skill authors iterating on the clerk skill without rebuilding the CLI. When set, clerk init passes the value straight to <runner> skills add <value> in place of the bundled source (#126).

Any value the skills CLI accepts works:

# Absolute path to a working-tree skill dir (default symlink install,
# edits to the source are reflected in the installed skill immediately).
CLERK_SKILL_SOURCE="$PWD/skills/clerk" clerk init

# A fork or PR branch on GitHub.
CLERK_SKILL_SOURCE="https://github.com/me/cli/tree/wip/skills/clerk" clerk init

# Shorthand for the default repo (installs from main branch).
CLERK_SKILL_SOURCE="clerk/cli" clerk init

The override path skips the staged temp dir and the --copy flag introduced in #126, so a local working-tree path installs via the default symlink mode and edits to the source are picked up by already-installed projects without re-running clerk init. init logs the value being used so there's no surprise about what got installed.

The override has no effect on the upstream skills.

Stacked on #126.

Test plan

  • bun run test passes (unit tests cover env-var precedence: unset, empty/whitespace, trimmed / remote / local variants)
  • Manual: CLERK_SKILL_SOURCE="$PWD/skills/clerk" bun run dev -- init in a sandbox, confirm the installer logs the override and .claude/skills/clerk/ is a symlink into the working tree
  • Manual: edit skills/clerk/SKILL.md in the working tree, re-open the installed skill, confirm the edit is visible without re-running init
  • Manual: CLERK_SKILL_SOURCE="clerk/cli" bun run dev -- init installs from the remote shorthand and the upstream framework skills still install normally

@wyattjoh
Copy link
Copy Markdown
Contributor Author

wyattjoh commented Apr 7, 2026

Stack: feat/clerk-cli-skill-local-debug

Part of a stacked PR chain. Do not merge manually.

@wyattjoh wyattjoh mentioned this pull request Apr 7, 2026
4 tasks
@wyattjoh wyattjoh force-pushed the feat/clerk-cli-skill-pinned branch from 40b1139 to 2b430c5 Compare April 7, 2026 19:40
@wyattjoh wyattjoh force-pushed the feat/clerk-cli-skill-local-debug branch from 209860b to 266ab75 Compare April 7, 2026 19:40
@wyattjoh wyattjoh force-pushed the feat/clerk-cli-skill-pinned branch from 2b430c5 to bd75724 Compare April 7, 2026 20:23
@wyattjoh wyattjoh force-pushed the feat/clerk-cli-skill-local-debug branch from 266ab75 to b801108 Compare April 7, 2026 20:23
@wyattjoh wyattjoh force-pushed the feat/clerk-cli-skill-pinned branch from bd75724 to 510829c Compare April 7, 2026 21:58
@wyattjoh wyattjoh force-pushed the feat/clerk-cli-skill-local-debug branch 2 times, most recently from d7b5c2b to be3bdaf Compare April 8, 2026 21:39
@wyattjoh wyattjoh force-pushed the feat/clerk-cli-skill-pinned branch from 510829c to dae4ecc Compare April 8, 2026 21:39
@wyattjoh wyattjoh force-pushed the feat/clerk-cli-skill-local-debug branch from be3bdaf to fc91eca Compare April 9, 2026 20:23
@wyattjoh wyattjoh force-pushed the feat/clerk-cli-skill-pinned branch from dae4ecc to 75f79d4 Compare April 9, 2026 20:23
@wyattjoh wyattjoh force-pushed the feat/clerk-cli-skill-local-debug branch from fc91eca to d4e2aaf Compare April 9, 2026 22:54
@wyattjoh wyattjoh force-pushed the feat/clerk-cli-skill-pinned branch 2 times, most recently from 2bc5f72 to c52bc3f Compare April 11, 2026 06:48
@wyattjoh wyattjoh force-pushed the feat/clerk-cli-skill-local-debug branch 2 times, most recently from bd6cc3b to 71fcba0 Compare April 11, 2026 06:54
@wyattjoh wyattjoh force-pushed the feat/clerk-cli-skill-pinned branch 2 times, most recently from 27b5058 to f0d314f Compare April 13, 2026 20:01
@wyattjoh wyattjoh force-pushed the feat/clerk-cli-skill-local-debug branch 2 times, most recently from 879a97b to 67098ad Compare April 13, 2026 22:49
@wyattjoh wyattjoh force-pushed the feat/clerk-cli-skill-pinned branch 2 times, most recently from 8e087a7 to 13e75ab Compare April 13, 2026 23:20
@wyattjoh wyattjoh force-pushed the feat/clerk-cli-skill-local-debug branch 2 times, most recently from 6be4db9 to 126bdcd Compare April 14, 2026 18:50
@wyattjoh wyattjoh force-pushed the feat/clerk-cli-skill-pinned branch from 13e75ab to 7154722 Compare April 14, 2026 18:50
@wyattjoh wyattjoh changed the title feat(init): support local debugging of clerk-cli skill source feat(init): support CLERK_CLI_SKILL_SOURCE env override Apr 14, 2026
@wyattjoh wyattjoh force-pushed the feat/clerk-cli-skill-pinned branch from 71e2f9f to 8078ef6 Compare April 15, 2026 21:13
@wyattjoh wyattjoh force-pushed the feat/clerk-cli-skill-local-debug branch 2 times, most recently from 6291f77 to 0fdb815 Compare April 15, 2026 22:23
@wyattjoh wyattjoh force-pushed the feat/clerk-cli-skill-pinned branch 2 times, most recently from 7a2025d to 61ddd30 Compare April 15, 2026 22:48
@wyattjoh wyattjoh force-pushed the feat/clerk-cli-skill-local-debug branch 2 times, most recently from aebf943 to 1094bac Compare April 15, 2026 23:15
@wyattjoh wyattjoh changed the title feat(init): support CLERK_CLI_SKILL_SOURCE env override feat(init): support CLERK_SKILL_SOURCE env override Apr 15, 2026
@wyattjoh wyattjoh force-pushed the feat/clerk-cli-skill-pinned branch from 9c7d911 to 61a2b63 Compare April 16, 2026 00:41
@wyattjoh wyattjoh force-pushed the feat/clerk-cli-skill-local-debug branch from 1094bac to e6727c1 Compare April 16, 2026 00:41
@wyattjoh wyattjoh force-pushed the feat/clerk-cli-skill-pinned branch from 61a2b63 to b5936da Compare April 17, 2026 15:32
@wyattjoh wyattjoh force-pushed the feat/clerk-cli-skill-local-debug branch 2 times, most recently from 94d0d2f to b09518a Compare April 17, 2026 21:29
@wyattjoh wyattjoh force-pushed the feat/clerk-cli-skill-pinned branch from b5936da to cc43a16 Compare April 17, 2026 21:29
@wyattjoh wyattjoh force-pushed the feat/clerk-cli-skill-local-debug branch 3 times, most recently from a6c50be to 7bd841d Compare April 20, 2026 14:57
@wyattjoh wyattjoh force-pushed the feat/clerk-cli-skill-pinned branch from a1a52fd to 6d0ef8a Compare April 20, 2026 15:00
@wyattjoh wyattjoh force-pushed the feat/clerk-cli-skill-local-debug branch from 7bd841d to 113beb7 Compare April 20, 2026 15:00
Comment thread packages/cli-core/src/commands/skill/install.test.ts
Base automatically changed from feat/clerk-cli-skill-pinned to main April 20, 2026 17:54
@wyattjoh wyattjoh force-pushed the feat/clerk-cli-skill-local-debug branch from 113beb7 to 1aa3777 Compare April 20, 2026 17:54
@wyattjoh wyattjoh marked this pull request as ready for review April 20, 2026 17:54
@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented Apr 20, 2026

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: a7a6cbd5-974d-469d-8e35-f262cc931127

📥 Commits

Reviewing files that changed from the base of the PR and between 1aa3777 and 0e9207d.

📒 Files selected for processing (6)
  • .changeset/clerk-skill-local-debug.md
  • packages/cli-core/src/commands/init/README.md
  • packages/cli-core/src/commands/init/skills.ts
  • packages/cli-core/src/commands/skill/README.md
  • packages/cli-core/src/commands/skill/install.test.ts
  • packages/cli-core/src/commands/skill/install.ts
✅ Files skipped from review due to trivial changes (2)
  • .changeset/clerk-skill-local-debug.md
  • packages/cli-core/src/commands/skill/README.md
🚧 Files skipped from review as they are similar to previous changes (2)
  • packages/cli-core/src/commands/init/skills.ts
  • packages/cli-core/src/commands/skill/install.test.ts

📝 Walkthrough

Walkthrough

Adds a CLERK_SKILL_SOURCE environment variable that, when set, causes the CLI to pass that value directly to the underlying skills add <source> invocation instead of staging and copying the bundled clerk skill. Implementation includes a new exported resolveClerkSkillOverride helper, changes to installClerkSkillCore to honor the override (and log it), unit tests covering both override and default staging behavior, and README entries plus a changeset documenting the feature.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~22 minutes

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 75.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Title check ✅ Passed The title 'feat(init): support CLERK_SKILL_SOURCE env override' clearly and concisely describes the main change: adding support for a CLERK_SKILL_SOURCE environment variable to the init command.
Description check ✅ Passed The description comprehensively explains the purpose of CLERK_SKILL_SOURCE, provides concrete usage examples, documents the technical behavior, and includes a test plan—all directly related to the changeset.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.


Comment @coderabbitai help to get the list of available commands and usage tips.

Adds an escape hatch for skill authors iterating on the clerk skill
without rebuilding the CLI: set CLERK_SKILL_SOURCE to any value the
`skills` CLI accepts (github URL, org/repo shorthand, absolute or
relative local path), and `clerk init` passes it straight to
`<runner> skills add <value>` in place of the bundled source.

The override path skips the staged temp dir and the --copy flag, so a
local working-tree path installs via the default symlink mode and edits
to the source are picked up immediately by already-installed projects.
The override has no effect on the upstream framework-pattern skills.
The runSkillsAdd() call in install.ts was formatted across multiple lines
but oxfmt (as run by format:check) wants it collapsed to one line. Apply
the formatter to keep CI green on this branch.
Asserts Bun.spawn argv contains the override (copy:false) when
CLERK_SKILL_SOURCE is set, and a staged temp dir (copy:true) when unset.
@wyattjoh wyattjoh force-pushed the feat/clerk-cli-skill-local-debug branch from 1aa3777 to 0e9207d Compare April 21, 2026 17:14
@wyattjoh wyattjoh requested a review from rafa-thayto April 21, 2026 17:14
@wyattjoh wyattjoh closed this Apr 22, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants