Skip to content

Commit 49c6afe

Browse files
committed
feat(cli): support CLAWDHUB_DIR env var and config.json for skills directory
Add support for configuring the skills install directory via: - CLAWDHUB_DIR environment variable - dir field in config.json Priority: CLI flag (--dir) > ENV > config > default ('skills')
1 parent 123f60f commit 49c6afe

File tree

3 files changed

+6
-3
lines changed

3 files changed

+6
-3
lines changed

packages/clawdhub/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,4 +54,4 @@ clawdhub sync --root ../clawdis/skills --all --dry-run
5454
- Site: `https://clawdhub.com` (override via `--site` or `CLAWDHUB_SITE`)
5555
- Registry: discovered from `/.well-known/clawdhub.json` on the site (override via `--registry` or `CLAWDHUB_REGISTRY`)
5656
- Workdir: current directory (falls back to Clawdbot workspace if configured; override via `--workdir` or `CLAWDHUB_WORKDIR`)
57-
- Install dir: `./skills` under workdir (override via `--dir`)
57+
- Install dir: `./skills` under workdir (override via `--dir`, `CLAWDHUB_DIR`, or `dir` in config.json)

packages/clawdhub/src/cli.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,15 +34,17 @@ const program = new Command()
3434
.showSuggestionAfterError()
3535
.addHelpText(
3636
'after',
37-
styleEnvBlock('\nEnv:\n CLAWDHUB_SITE\n CLAWDHUB_REGISTRY\n CLAWDHUB_WORKDIR\n'),
37+
styleEnvBlock('\nEnv:\n CLAWDHUB_SITE\n CLAWDHUB_REGISTRY\n CLAWDHUB_WORKDIR\n CLAWDHUB_DIR\n'),
3838
)
3939

4040
configureCommanderHelp(program)
4141

4242
async function resolveGlobalOpts(): Promise<GlobalOpts> {
4343
const raw = program.opts<{ workdir?: string; dir?: string; site?: string; registry?: string }>()
4444
const workdir = await resolveWorkdir(raw.workdir)
45-
const dir = resolve(workdir, raw.dir ?? 'skills')
45+
const config = await readGlobalConfig()
46+
const dirRel = raw.dir ?? process.env.CLAWDHUB_DIR ?? config?.dir ?? 'skills'
47+
const dir = resolve(workdir, dirRel)
4648
const site = raw.site ?? process.env.CLAWDHUB_SITE ?? DEFAULT_SITE
4749
const registrySource = raw.registry ? 'cli' : process.env.CLAWDHUB_REGISTRY ? 'env' : 'default'
4850
const registry = raw.registry ?? process.env.CLAWDHUB_REGISTRY ?? DEFAULT_REGISTRY

packages/clawdhub/src/schema/schemas.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import { type inferred, type } from 'arktype'
33
export const GlobalConfigSchema = type({
44
registry: 'string',
55
token: 'string?',
6+
dir: 'string?',
67
})
78
export type GlobalConfig = (typeof GlobalConfigSchema)[inferred]
89

0 commit comments

Comments
 (0)