@przeprogramowani/10x-cli 1.21.0 → 1.22.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 +118 -16
- package/dist/index.mjs +1092 -13
- package/package.json +3 -2
- package/skills/10x-cli-guide/SKILL.md +227 -238
- package/skills/10x-cli-guide/references/compatibility.md +310 -0
- package/skills/10x-cli-setup/SKILL.md +119 -39
- package/skills/10x-cli-setup/references/compatibility.md +310 -0
package/dist/index.mjs
CHANGED
|
@@ -3183,7 +3183,7 @@ var cac = (name = "") => new CAC(name);
|
|
|
3183
3183
|
// package.json
|
|
3184
3184
|
var package_default = {
|
|
3185
3185
|
name: "@przeprogramowani/10x-cli",
|
|
3186
|
-
version: "1.
|
|
3186
|
+
version: "1.22.0",
|
|
3187
3187
|
description: "Open-source CLI for 10xDevs course content",
|
|
3188
3188
|
repository: {
|
|
3189
3189
|
type: "git",
|
|
@@ -3210,7 +3210,8 @@ var package_default = {
|
|
|
3210
3210
|
"generate-types": "bun run scripts/generate-types.ts",
|
|
3211
3211
|
typecheck: "tsc --noEmit",
|
|
3212
3212
|
test: "bun test",
|
|
3213
|
-
lint: "bun run --bun node_modules/oxlint/bin/oxlint ."
|
|
3213
|
+
lint: "bun run --bun node_modules/oxlint/bin/oxlint .",
|
|
3214
|
+
"validate:cli-skills": "node scripts/validate-cli-skills.mjs"
|
|
3214
3215
|
},
|
|
3215
3216
|
dependencies: {
|
|
3216
3217
|
"@clack/prompts": "0.9.1",
|
|
@@ -7438,6 +7439,1083 @@ function renderGetResult(ctx, bundle, writeResult, dryRun, profile, langMeta = {
|
|
|
7438
7439
|
`), undefined);
|
|
7439
7440
|
}
|
|
7440
7441
|
|
|
7442
|
+
// src/commands/helpers.ts
|
|
7443
|
+
import { existsSync as existsSync10, mkdirSync as mkdirSync6, readFileSync as readFileSync9, writeFileSync as writeFileSync6 } from "node:fs";
|
|
7444
|
+
import { dirname as dirname6, join as join11, resolve as resolve3 } from "node:path";
|
|
7445
|
+
|
|
7446
|
+
// skills/10x-cli-setup/SKILL.md
|
|
7447
|
+
var SKILL_default = `---
|
|
7448
|
+
name: 10x-cli-setup
|
|
7449
|
+
description: "Set up or troubleshoot @przeprogramowani/10x-cli for a 10xDevs learner: reuse or install a compatible CLI, check authentication and course access, choose the project and AI tool, and hand off to 10x-cli-guide. Use for installation, updates, npm permissions and onboarding. Excludes CLI source development and everyday download/use/sync guidance once setup is ready."
|
|
7450
|
+
---
|
|
7451
|
+
|
|
7452
|
+
# 10x-cli Setup
|
|
7453
|
+
|
|
7454
|
+
Prepare the user's CLI and project, then pass the working context to guide. Read
|
|
7455
|
+
[the compatibility reference](references/compatibility.md) before choosing a
|
|
7456
|
+
version, installing a helper, or running a course command. Use the actual runner's
|
|
7457
|
+
help and its matching published source; a moving master README does not establish
|
|
7458
|
+
what the installed CLI supports.
|
|
7459
|
+
|
|
7460
|
+
The next CLI release also provides project-only bundled installation through
|
|
7461
|
+
\`10x helpers install --tool <chosen-profile>\`. This command is **unreleased** and
|
|
7462
|
+
absent from the 1.21.0/1.22.0 master baselines: check the actual runner's
|
|
7463
|
+
\`helpers --help\` first. Follow **Bundled public copies** in the local reference
|
|
7464
|
+
for complete files, explicit targets and conflict handling; keep the existing
|
|
7465
|
+
pinned public route when the runner does not support it.
|
|
7466
|
+
|
|
7467
|
+
## 1. Establish the project and existing installation
|
|
7468
|
+
|
|
7469
|
+
Use the user's request and existing session context. Identify the intended project
|
|
7470
|
+
directory, shell and AI tool before writing files. For the guided 10xDevs4 exercise
|
|
7471
|
+
the context is macOS/zsh, \`10xdevs4\`, \`claude-code\`, \`pl\`; do not silently apply it
|
|
7472
|
+
to a v3 project or a user who selected another profile.
|
|
7473
|
+
|
|
7474
|
+
In a POSIX shell, inspect the runner without hiding failures:
|
|
7475
|
+
|
|
7476
|
+
\`\`\`bash
|
|
7477
|
+
pwd
|
|
7478
|
+
command -v 10x
|
|
7479
|
+
\`\`\`
|
|
7480
|
+
|
|
7481
|
+
If found, run \`10x --version\` and its \`--help\`, \`get --help\`, \`sync --help\` and
|
|
7482
|
+
\`auth --help\`. Record the executable path and installation method. An existing
|
|
7483
|
+
working installation needs no reinstall or fresh login. If an executable exists
|
|
7484
|
+
but fails, preserve the error and diagnose its runtime/PATH/permissions; this is
|
|
7485
|
+
different from a missing command. On other systems use their shell's executable
|
|
7486
|
+
lookup, not a POSIX detection snippet.
|
|
7487
|
+
|
|
7488
|
+
Inspect the project's \`.10x-cli.json\` and existing profile manifests as local
|
|
7489
|
+
metadata, without editing them. The course binding is shared across profiles;
|
|
7490
|
+
changing \`--tool\` cannot switch v3 to v4. For a v4 exercise with a bound v3 project,
|
|
7491
|
+
use a separate directory and retain the v3 project. Preserve corrupt, unknown or
|
|
7492
|
+
conflicting bindings/manifests for diagnosis; do not delete them to force access.
|
|
7493
|
+
|
|
7494
|
+
## 2. Select a compatible runner, then install only if needed
|
|
7495
|
+
|
|
7496
|
+
Follow **Version and capability check** in the local reference. Record the actual
|
|
7497
|
+
package version, source revision and supported syntax. The released syntax is
|
|
7498
|
+
\`get m1l1 --type skills --name NAME\`; the positional argument is a lesson reference,
|
|
7499
|
+
not a skill name. Verify the corresponding lesson and skill in the content.
|
|
7500
|
+
Neither a local build nor a higher version number proves both. If skill-filter support
|
|
7501
|
+
is unavailable, continue preparing the project and public helpers, and report the
|
|
7502
|
+
specific pending capability before download. Do not substitute a full lesson or
|
|
7503
|
+
another course without the user's choice.
|
|
7504
|
+
|
|
7505
|
+
For npm/npx verify Node against that package's \`engines\` (the inspected baseline
|
|
7506
|
+
requires Node 20+). When there is no suitable global CLI, the pinned npx runner in
|
|
7507
|
+
the reference avoids a global install. Respect a user's requested global or
|
|
7508
|
+
standalone method; use its matching install/update procedure. Carry forward
|
|
7509
|
+
existing authorization for installation. A permissions error is not a reason for
|
|
7510
|
+
automatic \`sudo\`, a global config reset or deleting credentials.
|
|
7511
|
+
|
|
7512
|
+
Re-run version/help after an install or update. Keep one exact runner throughout
|
|
7513
|
+
setup and guide so an older \`10x\` on PATH cannot replace the verified npx version.
|
|
7514
|
+
With no network, inspect available local version/help and matching packaged
|
|
7515
|
+
documentation; leave publication, access and download checks unverified. Do not
|
|
7516
|
+
claim setup is complete from an offline version check.
|
|
7517
|
+
|
|
7518
|
+
## 3. Check authentication separately from course availability
|
|
7519
|
+
|
|
7520
|
+
Run the selected runner's \`auth --status\`. It can contact the course API but does
|
|
7521
|
+
not request a login email. Inspect both session validity and live access status:
|
|
7522
|
+
a valid token or successful exit does not prove \`access_checked\` or v4 access.
|
|
7523
|
+
Keep the error when access could not be checked.
|
|
7524
|
+
|
|
7525
|
+
Only when login is required, have the user run the verified \`auth\` command in an
|
|
7526
|
+
interactive terminal and complete its displayed flow. The inspected version uses
|
|
7527
|
+
a magic link sent by email or a Circle message (\`--method email\` /
|
|
7528
|
+
\`--method circle\`); follow the selected release's help. Do not request email, open magic links or perform login
|
|
7529
|
+
on the user's behalf without their authorization. Never read out \`auth.json\`,
|
|
7530
|
+
tokens, magic-link URLs or email contents. Summarize only session/access state.
|
|
7531
|
+
|
|
7532
|
+
Then use the selected runner's \`list --course 10xdevs4\` (or the user's explicit
|
|
7533
|
+
course). Distinguish no membership, unpublished course, locked module and network
|
|
7534
|
+
failure. Reinstalling the CLI or selecting a different tool does not grant access.
|
|
7535
|
+
Keep \`--course\`, \`--tool\` and \`--lang\` explicit in subsequent download/sync commands.
|
|
7536
|
+
|
|
7537
|
+
## 4. Diagnose readiness without manufacturing a tool directory
|
|
7538
|
+
|
|
7539
|
+
Run the selected runner's \`doctor --json\`; read all of \`data.checks\` and
|
|
7540
|
+
\`data.overall\`, plus the exit status. The outer \`status: "ok"\` is an output envelope,
|
|
7541
|
+
not a promise that every check passed. Doctor uses the configured profile (or its
|
|
7542
|
+
default), so compare the reported tool with the intended one; it has no \`--tool\`
|
|
7543
|
+
flag in the inspected baseline.
|
|
7544
|
+
|
|
7545
|
+
In a new project before the first download, a missing \`.claude/\` (or the reported
|
|
7546
|
+
profile directory) can be expected. If that is the only failure and this is the
|
|
7547
|
+
correct writable project, explain that the first successful download creates it.
|
|
7548
|
+
Do not create a dummy directory just to turn the check green. Preserve and address
|
|
7549
|
+
any auth, access, API, binding or write-permission failure separately. An update
|
|
7550
|
+
lookup skipped offline does not establish that the CLI is current.
|
|
7551
|
+
|
|
7552
|
+
## 5. Hand off to the actual guide copy
|
|
7553
|
+
|
|
7554
|
+
Locate the project's installed \`10x-cli-guide/SKILL.md\` and its own
|
|
7555
|
+
\`references/compatibility.md\`. Check its installation channel/owner using the
|
|
7556
|
+
reference before adding or updating it. If absent, install guide through the
|
|
7557
|
+
chosen public on-demand or compatible CLI channel; verify the resulting files.
|
|
7558
|
+
Installing the npm CLI alone does not activate either helper in an agent. Do not
|
|
7559
|
+
claim that an absent guide is available or rely on unverified slash-command
|
|
7560
|
+
discovery. Tell the agent to read the exact materialized guide path and its local
|
|
7561
|
+
reference.
|
|
7562
|
+
|
|
7563
|
+
Pass this compact context in the conversation, without secrets:
|
|
7564
|
+
|
|
7565
|
+
\`\`\`text
|
|
7566
|
+
Project: absolute cwd; course binding or unbound
|
|
7567
|
+
Course / tool / requested language: 10xdevs4 / claude-code / pl (or user's choice)
|
|
7568
|
+
Runner: exact executable or pinned npx command; observed version and source ref
|
|
7569
|
+
CLI install/update method: npx pin / npm global / standalone asset
|
|
7570
|
+
Auth: valid / login required / unknown; live course access and module state
|
|
7571
|
+
Setup helper: actual path, public or CLI owner, observed source ref if known
|
|
7572
|
+
Guide helper: actual path, owner and source ref if known; full reference present
|
|
7573
|
+
Readiness: verified checks; remaining release/network/access issues, if any
|
|
7574
|
+
Next task: guide's download → use → sync journey, retaining this context
|
|
7575
|
+
\`\`\`
|
|
7576
|
+
|
|
7577
|
+
Once ready, continue in guide without rerunning installation or asking the user
|
|
7578
|
+
to repeat choices already supplied. Report remaining blockers precisely if the
|
|
7579
|
+
download cannot yet run; do not present preparation as a completed real journey.
|
|
7580
|
+
`;
|
|
7581
|
+
|
|
7582
|
+
// skills/10x-cli-setup/references/compatibility.md
|
|
7583
|
+
var compatibility_default = `# CLI compatibility, channels and command context
|
|
7584
|
+
|
|
7585
|
+
This reference is packaged inside each helper. Both copies must have identical
|
|
7586
|
+
bytes in the authoring repository. It defines the guided filtered-download contract;
|
|
7587
|
+
verify the selected published CLI and live content before executing that path.
|
|
7588
|
+
|
|
7589
|
+
## Version and capability check
|
|
7590
|
+
|
|
7591
|
+
Record four independent identities: CLI runner/version, CLI package source,
|
|
7592
|
+
public helper source revision, and the course content release. Updating one does
|
|
7593
|
+
not automatically update the others.
|
|
7594
|
+
|
|
7595
|
+
| Evidence | What it establishes | What it does not establish |
|
|
7596
|
+
|---|---|---|
|
|
7597
|
+
| Actual executable \`--version\`, command help | The runner and syntax in use | Working API, entitlement or a published helper revision |
|
|
7598
|
+
| npm version, \`dist.integrity\`, \`gitHead\`, matching packaged README/source | Origin of that published package | Publication of changes on a development branch |
|
|
7599
|
+
| Full helper commit retained on public CLI master | Reproducible public helper source | Installation in this project or course publication |
|
|
7600
|
+
| Successful named download and complete local tree/manifest | Actual package/API/content behavior for this context | A successful agent task or another profile/language |
|
|
7601
|
+
|
|
7602
|
+
The earlier planning shorthand \`get SKILL_NAME\` was incorrect. Released CLI
|
|
7603
|
+
uses a lesson reference plus \`--type skills --name NAME\`; there is no standalone
|
|
7604
|
+
skill-name positional command or independent skill-owner sync contract. On 2026-09-14, CLI \`1.21.0\` was published with v4, filtered skill downloads
|
|
7605
|
+
and Circle login; production m1 EN/PL and sync were verified. Its npm \`gitHead\`
|
|
7606
|
+
is \`2cc510fe690ba820937602d702564985087ded46\`. These revised helpers have their
|
|
7607
|
+
own source/content identity and are not implied by installing CLI 1.21.0. A local
|
|
7608
|
+
source build can carry an old version label; do not identify features from that
|
|
7609
|
+
label alone.
|
|
7610
|
+
|
|
7611
|
+
For a known installed version, read its npm metadata (replace the shell variable
|
|
7612
|
+
with the observed version) and use the matching source revision for documentation:
|
|
7613
|
+
|
|
7614
|
+
\`\`\`bash
|
|
7615
|
+
: "\${CLI_VERSION:?Set the actual published CLI version}"
|
|
7616
|
+
npm view "@przeprogramowani/10x-cli@$CLI_VERSION" version engines gitHead dist.integrity dist.tarball --json
|
|
7617
|
+
\`\`\`
|
|
7618
|
+
|
|
7619
|
+
Use that exact package's README or
|
|
7620
|
+
\`https://raw.githubusercontent.com/przeprogramowani/10x-cli/<gitHead>/README.md\`,
|
|
7621
|
+
with the real \`gitHead\` substituted. For a standalone binary, use its actual
|
|
7622
|
+
release tag/asset, published verification information and matching source. Do not
|
|
7623
|
+
invent a source SHA if metadata is absent. The installed help wins for supported
|
|
7624
|
+
flags; a help/README mismatch must remain visible and be checked against matching
|
|
7625
|
+
source, not resolved by fetching arbitrary master instructions.
|
|
7626
|
+
|
|
7627
|
+
Before the filtered-download journey, verify \`get --help\` and matching source/release evidence
|
|
7628
|
+
for \`get m1l1 --type skills --name NAME\` and lesson-scoped sync. A successful \`--help\` exit alone does
|
|
7629
|
+
not prove skill-filter support. If support or release evidence is missing, prepare the
|
|
7630
|
+
public helpers and handoff, but pause filtered commands with a precise explanation.
|
|
7631
|
+
Once supported, a filtered dry-run verifies the actual API/content selection before
|
|
7632
|
+
writing. Report unsupported reference, missing skill/index, locked module, denied
|
|
7633
|
+
access and network errors separately; do not silently use a lesson or v3 instead.
|
|
7634
|
+
|
|
7635
|
+
## Keep one runner and one project context
|
|
7636
|
+
|
|
7637
|
+
The examples below use a pinned npx runner in macOS/zsh or another POSIX shell.
|
|
7638
|
+
Set \`CLI_VERSION\` from verified release evidence, then use this function in that
|
|
7639
|
+
shell session. If the user's existing verified global/standalone \`10x\` works,
|
|
7640
|
+
substitute its exact executable for \`10x_cli\`; no reinstall is required.
|
|
7641
|
+
|
|
7642
|
+
\`\`\`bash
|
|
7643
|
+
: "\${CLI_VERSION:?Set the actual published CLI version}"
|
|
7644
|
+
10x_cli() { npx --yes "@przeprogramowani/10x-cli@$CLI_VERSION" "$@"; }
|
|
7645
|
+
10x_cli --version
|
|
7646
|
+
10x_cli --help
|
|
7647
|
+
10x_cli get --help
|
|
7648
|
+
10x_cli sync --help
|
|
7649
|
+
10x_cli auth --help
|
|
7650
|
+
10x_cli auth --status
|
|
7651
|
+
10x_cli list --course 10xdevs4
|
|
7652
|
+
\`\`\`
|
|
7653
|
+
|
|
7654
|
+
Run commands from the intended project root. The target guided context is
|
|
7655
|
+
\`--course 10xdevs4 --tool claude-code --lang pl\`; preserve it in downloads,
|
|
7656
|
+
previews, updates and recovery. \`list\` takes \`--course\`, not tool/lang flags.
|
|
7657
|
+
Use another context only when the user chose it. Record any language fallback
|
|
7658
|
+
reported by the CLI rather than calling English output Polish.
|
|
7659
|
+
|
|
7660
|
+
The project edition is stored in \`.10x-cli.json\` after a validated write and shared
|
|
7661
|
+
across profiles; existing supported manifests also carry edition information.
|
|
7662
|
+
Course selection is explicit flag → project edition → live API recommendation.
|
|
7663
|
+
An explicit course does not authorize changing a bound project's edition. Retain
|
|
7664
|
+
the v3 project and start a separate v4 directory for this journey. Preserve unknown,
|
|
7665
|
+
corrupt or conflicting manifests; never delete a binding to force migration.
|
|
7666
|
+
|
|
7667
|
+
Verified releases with the project-binding safeguards preserve project files and
|
|
7668
|
+
tool/language preferences during \`list\`, \`get --print\`, \`get --dry-run\`,
|
|
7669
|
+
\`sync --dry-run\` and \`doctor\`. Auth token refresh can still update the credential
|
|
7670
|
+
store. Verify the selected release's contract before describing a preview as
|
|
7671
|
+
read-only; do not generalize older source bugs to the target release.
|
|
7672
|
+
|
|
7673
|
+
## Two helper channels, one owner per installed copy
|
|
7674
|
+
|
|
7675
|
+
The public authoring source is \`przeprogramowani/10x-cli\`, under
|
|
7676
|
+
\`skills/10x-cli-setup/\` and \`skills/10x-cli-guide/\`. Toolkit distributes controlled
|
|
7677
|
+
copies through course content. Each helper includes \`SKILL.md\` and its own
|
|
7678
|
+
\`references/compatibility.md\`; neither may rely on an installed sibling helper.
|
|
7679
|
+
|
|
7680
|
+
Before either installer writes, inspect the destination directory, its path
|
|
7681
|
+
components/symlink targets, the tool's \`.10x-cli-manifest.json\`, and the skills
|
|
7682
|
+
installer's project registration/lock. Do not infer ownership solely from a
|
|
7683
|
+
directory name. If ownership is mixed or unknown, preserve local files and
|
|
7684
|
+
resolve it before writing; use a separate project to try the other channel.
|
|
7685
|
+
|
|
7686
|
+
### Bundled public copies (unreleased command)
|
|
7687
|
+
|
|
7688
|
+
The next CLI release adds \`10x helpers install --tool copilot\` (use the user's
|
|
7689
|
+
chosen profile). This command is absent from the 1.21.0 and 1.22.0 master
|
|
7690
|
+
baselines. Verify \`10x helpers --help\` on the actual runner; a source build may
|
|
7691
|
+
still report the baseline version. Do not claim npm availability from this text.
|
|
7692
|
+
|
|
7693
|
+
When supported, run from the intended project:
|
|
7694
|
+
|
|
7695
|
+
\`\`\`bash
|
|
7696
|
+
10x helpers install --tool copilot --dry-run
|
|
7697
|
+
10x helpers install --tool copilot
|
|
7698
|
+
\`\`\`
|
|
7699
|
+
|
|
7700
|
+
Both helpers and their own compatibility references are embedded in the same npm
|
|
7701
|
+
bundle/standalone executable. No auth, network, external skills installer or
|
|
7702
|
+
global installation is involved. \`--tool\` is required; Copilot writes to
|
|
7703
|
+
\`.github/skills/\`, Claude Code to \`.claude/skills/\`, and other profiles follow the
|
|
7704
|
+
CLI profile table. Do not carry \`--agent github-copilot\` from the external
|
|
7705
|
+
installer into this command.
|
|
7706
|
+
|
|
7707
|
+
Existing identical files are unchanged; missing files are created. Any differing
|
|
7708
|
+
helper file blocks the entire preflight with exit 1, preserving both helpers and
|
|
7709
|
+
local extras. Never remove a user's files merely to make a retry pass. Keep an
|
|
7710
|
+
existing copy, or let the user deliberately back it up outside managed trees
|
|
7711
|
+
before replacement. Course-owned copies stay with get/sync; this command writes
|
|
7712
|
+
no course manifest or binding. Filesystem errors also exit 1 and report that
|
|
7713
|
+
already created files remain; unsupported options/targets exit 2. Preview uses
|
|
7714
|
+
the same checks without writes. This is a public bundled snapshot, not an
|
|
7715
|
+
automatic updater; another CLI version may contain different helper bytes and
|
|
7716
|
+
will preserve differing installed files as conflicts. Neither npm installation
|
|
7717
|
+
alone nor running this command activates the helpers in the agent.
|
|
7718
|
+
|
|
7719
|
+
For older CLI releases use the pinned public installer below with an explicit
|
|
7720
|
+
agent and Project scope. For Copilot that is \`--agent github-copilot --copy\`,
|
|
7721
|
+
which \`skills@1.5.26\` places in project \`.agents/skills/\`. Do not add \`-g\` or
|
|
7722
|
+
\`--all\`. Confirm the complete tree and the actual source selected by Copilot.
|
|
7723
|
+
|
|
7724
|
+
### Public on-demand channel
|
|
7725
|
+
|
|
7726
|
+
This channel can bootstrap before CLI installation or course authentication.
|
|
7727
|
+
Select a full, retained public CLI master commit containing these helper trees;
|
|
7728
|
+
record it as \`CLI_SKILLS_REF\`. Do not use an unmerged branch SHA as the permanent
|
|
7729
|
+
reference. The installer is separately pinned to the inspected \`skills@1.5.26\`.
|
|
7730
|
+
|
|
7731
|
+
\`\`\`bash
|
|
7732
|
+
: "\${CLI_SKILLS_REF:?Set the full public CLI master SHA containing the helpers}"
|
|
7733
|
+
npx --yes skills@1.5.26 add "https://github.com/przeprogramowani/10x-cli/tree/$CLI_SKILLS_REF/skills" --skill 10x-cli-setup --agent claude-code --copy
|
|
7734
|
+
npx --yes skills@1.5.26 add "https://github.com/przeprogramowani/10x-cli/tree/$CLI_SKILLS_REF/skills" --skill 10x-cli-guide --agent claude-code --copy
|
|
7735
|
+
\`\`\`
|
|
7736
|
+
|
|
7737
|
+
Run only the needed helper's command, from the project root. Project scope is the
|
|
7738
|
+
default; do not add \`--global\`/\`-g\`. \`--copy\` requests a project copy instead of a
|
|
7739
|
+
symlink. \`npx --yes\` accepts running the pinned npm tool; there is deliberately no
|
|
7740
|
+
\`--yes\` argument to \`skills add\`, so its own prompts are retained. Confirm the
|
|
7741
|
+
installer's actual paths and complete references after installation. A helper
|
|
7742
|
+
already managed by CLI should be used/updated through CLI, not overwritten here.
|
|
7743
|
+
|
|
7744
|
+
### CLI channel
|
|
7745
|
+
|
|
7746
|
+
Use this channel after setup/auth and only with verified skill-filter support and
|
|
7747
|
+
available v4 content. These helpers and the launch chain \`10x-init\`, \`10x-shape\`, \`10x-prd\` belong to m1l1
|
|
7748
|
+
and inherit course membership and module availability. Their source membership
|
|
7749
|
+
does not prove that the content has been published or unlocked.
|
|
7750
|
+
|
|
7751
|
+
In a separate project from the public copies, or after the explicit takeover
|
|
7752
|
+
below, use the same verified \`10x_cli\` runner:
|
|
7753
|
+
|
|
7754
|
+
\`\`\`bash
|
|
7755
|
+
10x_cli get m1l1 --type skills --name 10x-cli-setup --course 10xdevs4 --tool claude-code --lang pl --dry-run
|
|
7756
|
+
10x_cli get m1l1 --type skills --name 10x-cli-setup --course 10xdevs4 --tool claude-code --lang pl
|
|
7757
|
+
10x_cli get m1l1 --type skills --name 10x-cli-guide --course 10xdevs4 --tool claude-code --lang pl --dry-run
|
|
7758
|
+
10x_cli get m1l1 --type skills --name 10x-cli-guide --course 10xdevs4 --tool claude-code --lang pl
|
|
7759
|
+
\`\`\`
|
|
7760
|
+
|
|
7761
|
+
Each successful filtered skill download should materialize
|
|
7762
|
+
\`.claude/skills/<canonical-name>/SKILL.md\` and
|
|
7763
|
+
\`.claude/skills/<canonical-name>/references/compatibility.md\`, under lesson ownership
|
|
7764
|
+
\`lessons.m1l1.skills\` in \`.claude/.10x-cli-manifest.json\`, with hashes in
|
|
7765
|
+
\`files.skills\`. Confirm that complete tree and owner from actual output/files.
|
|
7766
|
+
This filter writes only the selected skill, not course rules or the whole lesson.
|
|
7767
|
+
|
|
7768
|
+
### Changing the owner deliberately
|
|
7769
|
+
|
|
7770
|
+
To move a public copy to CLI, inventory and back up that entire helper outside the
|
|
7771
|
+
managed skill trees, including local changes and installer metadata needed for
|
|
7772
|
+
recovery. Use the original pinned installer's \`remove --help\` and \`remove\` flow to
|
|
7773
|
+
unregister only the selected helper at project scope for the selected agent.
|
|
7774
|
+
Verify that both its registration and destination path/symlink are gone. If
|
|
7775
|
+
anything remains or another owner is present, stop the takeover and preserve it.
|
|
7776
|
+
Then use a filtered skill download and inspect its complete tree and lesson ownership. Merge
|
|
7777
|
+
desired local edits consciously from the backup; do not automatically force them
|
|
7778
|
+
over the downloaded copy. Reopen/read the installed helper after replacement.
|
|
7779
|
+
|
|
7780
|
+
The reverse move has no verified CLI per-skill unregister command in this contract.
|
|
7781
|
+
Use a new isolated project for a public copy; do not hand-edit the CLI manifest or
|
|
7782
|
+
place two updaters over the same files. Normal use does not require any takeover.
|
|
7783
|
+
|
|
7784
|
+
## Download, use, update
|
|
7785
|
+
|
|
7786
|
+
The launch example is lesson 1's existing 10xCards: init → shape → PRD.
|
|
7787
|
+
\`10x-plan\` is not available for the launch demonstration. After capability and
|
|
7788
|
+
content checks for each name, inspect each preview before its corresponding write:
|
|
7789
|
+
|
|
7790
|
+
\`\`\`bash
|
|
7791
|
+
10x_cli get m1l1 --type skills --name 10x-init --course 10xdevs4 --tool claude-code --lang pl --dry-run
|
|
7792
|
+
10x_cli get m1l1 --type skills --name 10x-init --course 10xdevs4 --tool claude-code --lang pl
|
|
7793
|
+
10x_cli get m1l1 --type skills --name 10x-shape --course 10xdevs4 --tool claude-code --lang pl --dry-run
|
|
7794
|
+
10x_cli get m1l1 --type skills --name 10x-shape --course 10xdevs4 --tool claude-code --lang pl
|
|
7795
|
+
10x_cli get m1l1 --type skills --name 10x-prd --course 10xdevs4 --tool claude-code --lang pl --dry-run
|
|
7796
|
+
10x_cli get m1l1 --type skills --name 10x-prd --course 10xdevs4 --tool claude-code --lang pl
|
|
7797
|
+
\`\`\`
|
|
7798
|
+
|
|
7799
|
+
Require the complete three trees and inspect each installed entrypoint/reference.
|
|
7800
|
+
All checks below must succeed before use; stop on any failure:
|
|
7801
|
+
|
|
7802
|
+
\`\`\`bash
|
|
7803
|
+
test -s .claude/skills/10x-init/SKILL.md
|
|
7804
|
+
test -s .claude/skills/10x-shape/SKILL.md
|
|
7805
|
+
test -s .claude/skills/10x-shape/references/prd-schema.md
|
|
7806
|
+
test -s .claude/skills/10x-prd/SKILL.md
|
|
7807
|
+
test -s .claude/skills/10x-prd/../10x-shape/references/prd-schema.md
|
|
7808
|
+
\`\`\`
|
|
7809
|
+
|
|
7810
|
+
PRD reads \`../10x-shape/references/prd-schema.md\` relative to its SKILL.md;
|
|
7811
|
+
isolated PRD download is insufficient. These are the source minimum: preserve
|
|
7812
|
+
additional supporting files in the selected release. Inspect all three names in
|
|
7813
|
+
\`lessons.m1l1.skills\`, their hashes in \`files.skills\`, and the project edition
|
|
7814
|
+
binding. Partial downloads do not establish complete lesson freshness/release identity.
|
|
7815
|
+
Membership in source is candidate evidence; actual filtered availability, full PL
|
|
7816
|
+
references and release identity still need verification for all three names.
|
|
7817
|
+
|
|
7818
|
+
\`CLAUDE-m1l1\` is a separate lesson rule and is not included in these filtered gets.
|
|
7819
|
+
The inspected three skill sources do not require it for the chain. This is not
|
|
7820
|
+
proof that the entire lesson needs no rule: if the learner's lesson instructions
|
|
7821
|
+
require it, inspect an existing rule's provenance, or report the missing
|
|
7822
|
+
prerequisite and ask the lesson/release owner for a supported route before that
|
|
7823
|
+
step. Never invent a command, overwrite a rule or fall back to full lesson get.
|
|
7824
|
+
|
|
7825
|
+
Have the agent explicitly read each installed SKILL.md and its references in
|
|
7826
|
+
order: init preserves/scaffolds context directories; shape conducts the actual
|
|
7827
|
+
10xCards discovery with the learner and writes
|
|
7828
|
+
\`context/foundation/shape-notes.md\`; after the learner approves those notes, PRD
|
|
7829
|
+
uses them and the sibling schema to produce \`context/foundation/prd.md\`.
|
|
7830
|
+
Ask for missing lesson inputs; do not manufacture a task.md, product decisions or
|
|
7831
|
+
a finished plan. Respect existing-file collision choices and report actual output
|
|
7832
|
+
paths. Inspect the notes, schema compliance, open questions and preserved local
|
|
7833
|
+
work. Stop at PRD, without stack selection or implementation. Download alone is
|
|
7834
|
+
not use; native slash/$ discovery needs separate agent evidence. Keep private
|
|
7835
|
+
lesson text out of public fixtures. The guide supplies the detailed agent steps.
|
|
7836
|
+
|
|
7837
|
+
Sync below refreshes entire recorded lessons, not only the three skill filters.
|
|
7838
|
+
Preview may include other skills, prompts, configs and course rules; apply only
|
|
7839
|
+
when the user accepts that scope. For a narrow update, repeat the selected skill
|
|
7840
|
+
filter instead. Never use sync to silently bypass a missing lesson-rule prerequisite.
|
|
7841
|
+
|
|
7842
|
+
\`\`\`bash
|
|
7843
|
+
10x_cli sync --course 10xdevs4 --tool claude-code --lang pl --dry-run
|
|
7844
|
+
10x_cli sync --course 10xdevs4 --tool claude-code --lang pl
|
|
7845
|
+
\`\`\`
|
|
7846
|
+
|
|
7847
|
+
Normal sync refreshes downloaded owners, including the full lessons that own previously downloaded skills. Avoid \`--all\` for this small journey. Inspect updated,
|
|
7848
|
+
unchanged, conflict/preserved and error outcomes even when exit is 0. Preserve
|
|
7849
|
+
local edits; do not use automatic \`--force\`. Recovery commands must retain the
|
|
7850
|
+
same runner/course/tool/lang, even if an older report omits that context.
|
|
7851
|
+
|
|
7852
|
+
Filtered lesson get (\`m1l1 --type skills --name ...\`) is the supported command
|
|
7853
|
+
used throughout this guide. It preserves other previously downloaded artifacts
|
|
7854
|
+
through partial writes; normal sync later operates at lesson scope. \`--print\` is an
|
|
7855
|
+
inspection surface, not installation: human TTY output can show only SKILL.md,
|
|
7856
|
+
while non-TTY output is JSON. Never redirect it into SKILL.md as a full package.
|
|
7857
|
+
|
|
7858
|
+
| Item to update | Correct channel |
|
|
7859
|
+
|---|---|
|
|
7860
|
+
| npx CLI | Choose and verify a new published version, update the runner pin |
|
|
7861
|
+
| Global npm CLI | \`npm install -g "@przeprogramowani/10x-cli@$CLI_VERSION"\` after selecting/verifying the version |
|
|
7862
|
+
| Standalone CLI | Replace through its verified release asset procedure, then check the actual executable |
|
|
7863
|
+
| Public helper copy | Inspect local changes/ownership; rerun its selected \`skills add\` command with a deliberate new full source SHA |
|
|
7864
|
+
| CLI-owned helper or exercise skill | Repeat its filtered get for a narrow update; \`sync\` refreshes full recorded lessons after preview |
|
|
7865
|
+
|
|
7866
|
+
\`skills update\` is not a substitute for proving an exact selected helper revision;
|
|
7867
|
+
it may follow a different ref/latest. npm install includes helper source files in
|
|
7868
|
+
the package but does not install them into an agent. CLI sync cannot update the
|
|
7869
|
+
CLI executable or a public installer-owned helper.
|
|
7870
|
+
|
|
7871
|
+
## Diagnostics and evidence boundaries
|
|
7872
|
+
|
|
7873
|
+
Doctor performs auth/access, API, config, version and configured-tool checks.
|
|
7874
|
+
It can return 78 with an outer JSON \`status: "ok"\`; inspect \`data.overall\` and all
|
|
7875
|
+
\`data.checks\`. A missing tool directory before first get can be expected. Explain
|
|
7876
|
+
only that failure as pre-download state; do not ignore auth/network/permissions.
|
|
7877
|
+
The inspected doctor has no \`--tool\` or \`--course\` flags and may report a different
|
|
7878
|
+
configured profile/course from this journey's explicit command context.
|
|
7879
|
+
|
|
7880
|
+
Configuration is under \`$XDG_CONFIG_HOME/10x-cli\` on macOS/Linux when nonempty,
|
|
7881
|
+
otherwise \`~/.config/10x-cli\`. Windows uses \`%APPDATA%/10x-cli\`, falling back to
|
|
7882
|
+
the user's \`AppData/Roaming/10x-cli\`. Inspect only needed nonsecret preferences;
|
|
7883
|
+
do not dump credentials or reset the entire config directory. Auth validity and
|
|
7884
|
+
live course access are distinct: inspect \`access_checked\`/access errors, not only
|
|
7885
|
+
the status exit. Login is user-operated and may send email.
|
|
7886
|
+
|
|
7887
|
+
Full acceptance needs real package/version/integrity/source and endpoint/content
|
|
7888
|
+
release evidence, both helper channels, complete support files, and an actual
|
|
7889
|
+
agent task transcript for macOS/zsh/Claude Code/PL. Local builds and fixtures can
|
|
7890
|
+
check structure/conflicts but cannot prove publication, course unlock or this
|
|
7891
|
+
user's entitlement. Other platforms/profiles and EN/PL transformed content need
|
|
7892
|
+
their own evidence; do not imply a Windows or translated-content walkthrough ran.
|
|
7893
|
+
`;
|
|
7894
|
+
|
|
7895
|
+
// skills/10x-cli-guide/SKILL.md
|
|
7896
|
+
var SKILL_default2 = `---
|
|
7897
|
+
name: 10x-cli-guide
|
|
7898
|
+
description: "Use when the user wants to download, use or update 10xDevs CLI skills, choose a helper installation channel, inspect course content, switch tool profiles or troubleshoot CLI/auth/content conflicts. Guides filtered get → an actual agent task → sync while preserving local work and course/tool/language context. For first installation or authentication preparation, use an available 10x-cli-setup copy. Does not implement CLI runtime or grant course access."
|
|
7899
|
+
---
|
|
7900
|
+
|
|
7901
|
+
# 10x-cli: download, use, update
|
|
7902
|
+
|
|
7903
|
+
Read the bundled [compatibility and channel reference](references/compatibility.md)
|
|
7904
|
+
before issuing commands. It contains the pinned runner setup, version checks, both
|
|
7905
|
+
helper channels and ownership safeguards. Commands use the released lesson-scoped
|
|
7906
|
+
skill filter; verify the actual selected package and content before using it. A local
|
|
7907
|
+
build or source membership is not proof that a feature has shipped.
|
|
7908
|
+
|
|
7909
|
+
The next CLI release also provides project-only bundled installation through
|
|
7910
|
+
\`10x helpers install --tool <chosen-profile>\`. This command is **unreleased** and
|
|
7911
|
+
absent from the 1.21.0/1.22.0 master baselines: check the actual runner's
|
|
7912
|
+
\`helpers --help\` first. Follow **Bundled public copies** in the local reference
|
|
7913
|
+
for complete files, explicit targets and conflict handling; keep the existing
|
|
7914
|
+
pinned public route when the runner does not support it.
|
|
7915
|
+
|
|
7916
|
+
## Environment
|
|
7917
|
+
|
|
7918
|
+
Reuse the setup handoff: project root, course, tool, language, runner/version,
|
|
7919
|
+
auth/access status, update method and helper channel/path. If anything is absent,
|
|
7920
|
+
inspect only that item. A working installed CLI needs no reinstall. If setup is
|
|
7921
|
+
needed, locate its actual SKILL.md and references or install that helper through
|
|
7922
|
+
the public channel; do not invoke a missing sibling by name.
|
|
7923
|
+
|
|
7924
|
+
The guided acceptance context is macOS/zsh, Claude Code, 10xdevs4 and Polish.
|
|
7925
|
+
Determine the actual OS and shell from the environment, not a POSIX command that
|
|
7926
|
+
labels every failure Windows. Select the intended project root before any write.
|
|
7927
|
+
For v4, retain an existing v3 project and use a separate directory; ordinary get,
|
|
7928
|
+
sync and profile changes do not migrate editions. Preserve \`.10x-cli.json\` and
|
|
7929
|
+
all manifests if their versions/courses conflict.
|
|
7930
|
+
|
|
7931
|
+
Use the verified \`10x_cli\` runner defined in the reference, or the user's exact
|
|
7932
|
+
verified global/standalone executable:
|
|
7933
|
+
|
|
7934
|
+
\`\`\`bash
|
|
7935
|
+
10x_cli --version
|
|
7936
|
+
10x_cli get --help
|
|
7937
|
+
10x_cli sync --help
|
|
7938
|
+
10x_cli auth --status
|
|
7939
|
+
10x_cli list --course 10xdevs4
|
|
7940
|
+
\`\`\`
|
|
7941
|
+
|
|
7942
|
+
Check source/release evidence for lesson reference, skill filter and lesson-scoped sync, then use the
|
|
7943
|
+
filtered preview below to check the endpoint. Do not treat a successful help exit as
|
|
7944
|
+
capability proof. Keep unsupported CLI syntax, unpublished/missing content, locked
|
|
7945
|
+
module, membership denial and network failure distinct. Missing final release
|
|
7946
|
+
evidence need not block preparing the public helpers or the exercise files.
|
|
7947
|
+
|
|
7948
|
+
Read only needed nonsecret preferences from \`config.json\`. On macOS/Linux its
|
|
7949
|
+
base is nonempty \`$XDG_CONFIG_HOME\`, otherwise \`~/.config\`; on Windows it is
|
|
7950
|
+
\`%APPDATA%\`, otherwise the user's \`AppData/Roaming\`. Append \`10x-cli/config.json\`.
|
|
7951
|
+
Do not print \`auth.json\`, discard stderr, truncate doctor JSON or erase config to
|
|
7952
|
+
repair an unknown problem. An explicit course/tool/language in this journey takes
|
|
7953
|
+
precedence over saved defaults for that command.
|
|
7954
|
+
|
|
7955
|
+
## Session management
|
|
7956
|
+
|
|
7957
|
+
When login is needed, let the user choose the delivery channel and complete it:
|
|
7958
|
+
|
|
7959
|
+
\`\`\`bash
|
|
7960
|
+
10x_cli auth # Interactive: choose email or Circle
|
|
7961
|
+
10x_cli auth --method email # Email magic link; default for piped/JSON output
|
|
7962
|
+
10x_cli auth --method circle # One-time approval link delivered in Circle
|
|
7963
|
+
10x_cli auth --status
|
|
7964
|
+
10x_cli auth --logout
|
|
7965
|
+
\`\`\`
|
|
7966
|
+
|
|
7967
|
+
Circle is useful when the email does not arrive. The approval link expires after
|
|
7968
|
+
15 minutes; the CLI does not resend it automatically. In non-interactive mode,
|
|
7969
|
+
provide the user's email with \`--email\` and choose \`--method circle\` explicitly.
|
|
7970
|
+
Do not send a login message until the user requests authentication. Sessions
|
|
7971
|
+
refresh transparently; re-login is needed only when refresh cannot recover them.
|
|
7972
|
+
|
|
7973
|
+
## Download
|
|
7974
|
+
|
|
7975
|
+
The launch exercise follows lesson 1, “Od pomysłu do PRD”, using its existing
|
|
7976
|
+
10xCards example. \`10x-plan\` is not part of this launch demonstration.
|
|
7977
|
+
After checking each name's capability and availability, download three separate
|
|
7978
|
+
complete selected skill trees. Inspect each dry-run before its corresponding write:
|
|
7979
|
+
|
|
7980
|
+
\`\`\`bash
|
|
7981
|
+
10x_cli get m1l1 --type skills --name 10x-init --course 10xdevs4 --tool claude-code --lang pl --dry-run
|
|
7982
|
+
10x_cli get m1l1 --type skills --name 10x-init --course 10xdevs4 --tool claude-code --lang pl
|
|
7983
|
+
10x_cli get m1l1 --type skills --name 10x-shape --course 10xdevs4 --tool claude-code --lang pl --dry-run
|
|
7984
|
+
10x_cli get m1l1 --type skills --name 10x-shape --course 10xdevs4 --tool claude-code --lang pl
|
|
7985
|
+
10x_cli get m1l1 --type skills --name 10x-prd --course 10xdevs4 --tool claude-code --lang pl --dry-run
|
|
7986
|
+
10x_cli get m1l1 --type skills --name 10x-prd --course 10xdevs4 --tool claude-code --lang pl
|
|
7987
|
+
\`\`\`
|
|
7988
|
+
|
|
7989
|
+
Inspect each report and the complete supporting tree, not just SKILL.md. In the
|
|
7990
|
+
chosen macOS/zsh exercise directory, each of these checks must succeed before use
|
|
7991
|
+
(stop on any failure; do not infer success from the last check alone):
|
|
7992
|
+
|
|
7993
|
+
\`\`\`bash
|
|
7994
|
+
test -s .claude/skills/10x-init/SKILL.md
|
|
7995
|
+
test -s .claude/skills/10x-shape/SKILL.md
|
|
7996
|
+
test -s .claude/skills/10x-shape/references/prd-schema.md
|
|
7997
|
+
test -s .claude/skills/10x-prd/SKILL.md
|
|
7998
|
+
test -s .claude/skills/10x-prd/../10x-shape/references/prd-schema.md
|
|
7999
|
+
\`\`\`
|
|
8000
|
+
|
|
8001
|
+
The PRD entrypoint resolves \`../10x-shape/references/prd-schema.md\` relative to its
|
|
8002
|
+
own directory. A standalone PRD tree is insufficient. Read all installed
|
|
8003
|
+
entrypoints and every reference they require; the paths above are the known
|
|
8004
|
+
source minimum, not permission to discard extra files from a published bundle.
|
|
8005
|
+
Also inspect \`.claude/.10x-cli-manifest.json\`: \`lessons.m1l1.skills\` must include
|
|
8006
|
+
all three names, with file hashes in \`files.skills\`. These are lesson-owned
|
|
8007
|
+
partial downloads, not independent owners. Inspect \`.10x-cli.json\` for the course
|
|
8008
|
+
binding; partial downloads do not establish a complete lesson release identity.
|
|
8009
|
+
|
|
8010
|
+
CLI 1.21.0 is published with v4 and filtered skill downloads; production m1l1 EN/PL
|
|
8011
|
+
contains init/shape/prd and their references. These revised helpers are a separate
|
|
8012
|
+
source change, not proof that their course copies have been published.
|
|
8013
|
+
Verify all three names against the actual selected release. If any name, schema,
|
|
8014
|
+
owner or release is missing/mismatched, preserve the precise error and stop the
|
|
8015
|
+
exercise; never silently substitute a whole lesson, another course or filtered get.
|
|
8016
|
+
|
|
8017
|
+
\`CLAUDE-m1l1\` is a separate lesson rule, not delivered by these filtered skill gets.
|
|
8018
|
+
The inspected init/shape/prd sources do not require that rule to run this chain.
|
|
8019
|
+
This does not establish that every step of the full lesson works without it.
|
|
8020
|
+
Use the learner's existing lesson 1 inputs and instructions: if they require the
|
|
8021
|
+
rule, inspect the existing project rule and its provenance. If absent, report the
|
|
8022
|
+
missing prerequisite and obtain the supported route from the lesson/release owner
|
|
8023
|
+
before that step. Do not invent a rule command or download a full lesson to bypass
|
|
8024
|
+
it. Do not overwrite an existing project rule.
|
|
8025
|
+
|
|
8026
|
+
For browsing use \`10x_cli list m1 --course 10xdevs4\`. The commands above filter
|
|
8027
|
+
one lesson by skill name; \`get 10x-init\` is not supported. \`--print\` is inspection:
|
|
8028
|
+
TTY Markdown can contain only SKILL.md; non-TTY output is a JSON envelope. Never
|
|
8029
|
+
redirect print output into SKILL.md as a package installation.
|
|
8030
|
+
|
|
8031
|
+
## Use: 10xCards, from idea to PRD
|
|
8032
|
+
|
|
8033
|
+
Downloading the trees is only preparation. Use the existing 10xCards example and
|
|
8034
|
+
the learner's actual answers from lesson 1. If those inputs are absent, ask for
|
|
8035
|
+
them; do not invent product requirements, a replacement task.md or a ready-made
|
|
8036
|
+
plan. Keep private lesson text out of public fixtures and transcripts.
|
|
8037
|
+
Do not assume native slash/$ discovery or automatic activation from npm install.
|
|
8038
|
+
Give the agent explicit local paths and work through these steps separately:
|
|
8039
|
+
|
|
8040
|
+
1. Read \`.claude/skills/10x-init/SKILL.md\` and follow it in the chosen project.
|
|
8041
|
+
Inspect the create-if-absent context/changes, context/archive and
|
|
8042
|
+
context/foundation directories and their READMEs. Preserve existing files.
|
|
8043
|
+
2. Read \`.claude/skills/10x-shape/SKILL.md\` and
|
|
8044
|
+
\`.claude/skills/10x-shape/references/prd-schema.md\`. Follow the skill's discovery
|
|
8045
|
+
with the learner's 10xCards inputs. Let the learner answer and approve the
|
|
8046
|
+
checkpoint; do not answer for them. Inspect
|
|
8047
|
+
\`context/foundation/shape-notes.md\` against those answers before proceeding.
|
|
8048
|
+
3. Read \`.claude/skills/10x-prd/SKILL.md\` and its sibling schema, then generate the
|
|
8049
|
+
draft from the actual \`context/foundation/shape-notes.md\`. Inspect
|
|
8050
|
+
\`context/foundation/prd.md\` against that input and the installed schema;
|
|
8051
|
+
unresolved domain choices stay open. Respect the skill's existing-file
|
|
8052
|
+
collision choice (a versioned file may be the appropriate result).
|
|
8053
|
+
|
|
8054
|
+
Success requires the learner's notes and a schema-conformant PRD, with gaps
|
|
8055
|
+
explicit and original project work preserved. A transcript of downloads alone
|
|
8056
|
+
is insufficient. Stop after reviewing the PRD; do not chain into stack selection,
|
|
8057
|
+
bootstrap or implementation. If a different global/local skill copy was read,
|
|
8058
|
+
correct the path before accepting the result. Record the actual agent, profile,
|
|
8059
|
+
language, output paths and checks; use a fresh isolated exercise directory for the
|
|
8060
|
+
two canonical output filenames instead of forcing an overwrite.
|
|
8061
|
+
|
|
8062
|
+
## Update
|
|
8063
|
+
|
|
8064
|
+
Use the same runner, directory, course, tool and language. Sync updates entire
|
|
8065
|
+
downloaded lessons, including m1l1 after these filtered gets. Its preview may
|
|
8066
|
+
include other skills, prompts, configs and course rules. Inspect that expanded
|
|
8067
|
+
scope and apply only when the user accepts it; to update only one skill, repeat
|
|
8068
|
+
its filtered preview/get instead. Do not use sync as a hidden rule prerequisite
|
|
8069
|
+
workaround:
|
|
8070
|
+
|
|
8071
|
+
\`\`\`bash
|
|
8072
|
+
10x_cli sync --course 10xdevs4 --tool claude-code --lang pl --dry-run
|
|
8073
|
+
10x_cli sync --course 10xdevs4 --tool claude-code --lang pl
|
|
8074
|
+
\`\`\`
|
|
8075
|
+
|
|
8076
|
+
Normal sync refreshes the full lessons recorded in the manifest, not just the
|
|
8077
|
+
three selected skills. \`--all\` broadens scope to unlocked lessons and is not needed
|
|
8078
|
+
for this exercise. Missing managed files should be repaired; local edits should
|
|
8079
|
+
remain visible as conflicts or preserved files. Read all report outcomes and
|
|
8080
|
+
resource counts even if exit is 0: skipped conflicts alone are not process errors.
|
|
8081
|
+
Do not equate an unchanged remote digest with intact local files.
|
|
8082
|
+
|
|
8083
|
+
For one conflicting skill, inspect the diff and back up local work before retrying
|
|
8084
|
+
its filtered get in an interactive terminal with the same course/tool/lang. Preserve
|
|
8085
|
+
the user's resolution choice. If a CLI hint omits context, restore these flags in
|
|
8086
|
+
your proposed command. Never run automatic \`--force\`; it can overwrite local
|
|
8087
|
+
skill/prompt edits and does not bypass protected rules or safe removal. Config
|
|
8088
|
+
templates remain create-only. Cleanup preserves modified/untracked files and
|
|
8089
|
+
files owned elsewhere; do not manually sweep a skill directory after sync.
|
|
8090
|
+
|
|
8091
|
+
Three updates are independent: changing the npm/binary version updates the CLI;
|
|
8092
|
+
repeating pinned public \`skills add\` with a deliberately chosen new retained SHA
|
|
8093
|
+
updates a public helper; CLI sync updates CLI-owned course skills. It does not
|
|
8094
|
+
update the executable or public installer-owned helper copies.
|
|
8095
|
+
|
|
8096
|
+
## Channels: both helpers are available through two routes
|
|
8097
|
+
|
|
8098
|
+
The public on-demand route works before CLI/auth and installs one project helper
|
|
8099
|
+
at a selected source SHA. The CLI route uses authenticated filtered get once helper
|
|
8100
|
+
content is published and m1l1 is accessible. Follow the exact commands and guards
|
|
8101
|
+
in the reference for \`10x-cli-setup\` and \`10x-cli-guide\`; install only what is needed.
|
|
8102
|
+
Both routes deliver each helper's own \`references/compatibility.md\`.
|
|
8103
|
+
|
|
8104
|
+
Use one owner per installed copy. Inspect destination paths/symlinks, CLI manifest
|
|
8105
|
+
and the public installer's project registration before writing. If a helper is
|
|
8106
|
+
already CLI-owned, use that copy and sync. For a public→CLI takeover, back up the
|
|
8107
|
+
whole helper and metadata outside managed trees, unregister only that helper using
|
|
8108
|
+
the original pinned installer's project/agent remove flow, verify registration and
|
|
8109
|
+
destination are absent, then filtered get. Merge local edits consciously from backup.
|
|
8110
|
+
If either owner remains, stop the takeover. CLI→public has no verified per-skill
|
|
8111
|
+
unregister contract: use a new isolated project instead of hand-editing manifests.
|
|
8112
|
+
|
|
8113
|
+
## Profiles and troubleshooting
|
|
8114
|
+
|
|
8115
|
+
Full skill trees land under the selected profile's \`skills/<canonical-name>/\`:
|
|
8116
|
+
|
|
8117
|
+
| Profile | Tool directory | Rules file for full lesson delivery |
|
|
8118
|
+
|---|---|---|
|
|
8119
|
+
| claude-code | \`.claude/\` | \`CLAUDE.md\` |
|
|
8120
|
+
| cursor | \`.cursor/\` | \`.cursor/rules/10x-course.mdc\` |
|
|
8121
|
+
| copilot | \`.github/\` | \`.github/copilot-instructions.md\` |
|
|
8122
|
+
| codex | \`.agents/\` | \`AGENTS.md\` |
|
|
8123
|
+
| devin-desktop | \`.devin/\` | \`AGENTS.md\` |
|
|
8124
|
+
| gemini | \`.gemini/\` | \`GEMINI.md\` |
|
|
8125
|
+
| generic | \`.ai/\` | \`AGENTS.md\` |
|
|
8126
|
+
|
|
8127
|
+
Profile changes may offer migrate, delete eligible managed files, or keep both;
|
|
8128
|
+
none means deleting arbitrary user content or switching the course edition.
|
|
8129
|
+
Legacy windsurf aliases and orphan handling should follow the selected version's
|
|
8130
|
+
help/output. These path mappings are not evidence of a completed Windows or
|
|
8131
|
+
other-agent walkthrough. Translate shell syntax to the user's actual shell.
|
|
8132
|
+
|
|
8133
|
+
Run \`10x_cli doctor --json\` when diagnosis is useful; inspect its complete
|
|
8134
|
+
\`data.overall\` and \`data.checks\` as well as exit status. It checks the configured
|
|
8135
|
+
profile, not a \`--tool\` or \`--course\` argument. Before first get, a missing tool
|
|
8136
|
+
directory can be expected; explain only that failure and keep other failures
|
|
8137
|
+
visible. Doctor exit 78 can coexist with outer JSON \`status: "ok"\`.
|
|
8138
|
+
|
|
8139
|
+
| Symptom | Next step |
|
|
8140
|
+
|---|---|
|
|
8141
|
+
| Missing/expired auth | Inspect auth status and live-access result; let the user complete login through setup. Login may send email. |
|
|
8142
|
+
| No email received | Offer \`10x_cli auth --method circle\`; let the user request the message. |
|
|
8143
|
+
| \`circle_login_disabled\` | Circle is unavailable; use \`10x_cli auth --method email\`. |
|
|
8144
|
+
| \`dm_rejected\` | Enable Circle direct messages or use email login. |
|
|
8145
|
+
| \`circle_login_expired\` | Ask for a fresh Circle login or use email; never auto-resend. |
|
|
8146
|
+
| Denied course access | Confirm selected course and membership; changing tool/reinstalling does not grant access. |
|
|
8147
|
+
| Locked or unpublished v4 | Inspect module availability/release evidence; do not bypass the gate or fall back to v3. |
|
|
8148
|
+
| Unsupported name/missing index | Verify exact CLI package and content release; preserve the error for the release owner. |
|
|
8149
|
+
| Network/API failure | Keep diagnostics, retry the same context when service returns; no config reset. |
|
|
8150
|
+
| Wrong directory/profile | Recheck cwd and explicit flags; a fresh project may legitimately have no tool directory. |
|
|
8151
|
+
| Signature/release mismatch | Preserve failure and source identity; do not disable verification or reuse unrelated bytes. |
|
|
8152
|
+
| Edition/manifest conflict | Preserve binding and manifests for repair; use a separate v4 project rather than deleting them. |
|
|
8153
|
+
| File conflict or permission failure | Inspect affected paths and local edits, retain backup and resolve the specific issue. No broad chmod/reset/force. |
|
|
8154
|
+
|
|
8155
|
+
Use \`--verbose\` only when needed, and redact credentials before sharing diagnostics.
|
|
8156
|
+
For unrelated day-to-day commands such as \`bench\`, inspect this runner's matching
|
|
8157
|
+
help; do not fetch arbitrary master README as an authority for an older binary.
|
|
8158
|
+
`;
|
|
8159
|
+
|
|
8160
|
+
// skills/10x-cli-guide/references/compatibility.md
|
|
8161
|
+
var compatibility_default2 = `# CLI compatibility, channels and command context
|
|
8162
|
+
|
|
8163
|
+
This reference is packaged inside each helper. Both copies must have identical
|
|
8164
|
+
bytes in the authoring repository. It defines the guided filtered-download contract;
|
|
8165
|
+
verify the selected published CLI and live content before executing that path.
|
|
8166
|
+
|
|
8167
|
+
## Version and capability check
|
|
8168
|
+
|
|
8169
|
+
Record four independent identities: CLI runner/version, CLI package source,
|
|
8170
|
+
public helper source revision, and the course content release. Updating one does
|
|
8171
|
+
not automatically update the others.
|
|
8172
|
+
|
|
8173
|
+
| Evidence | What it establishes | What it does not establish |
|
|
8174
|
+
|---|---|---|
|
|
8175
|
+
| Actual executable \`--version\`, command help | The runner and syntax in use | Working API, entitlement or a published helper revision |
|
|
8176
|
+
| npm version, \`dist.integrity\`, \`gitHead\`, matching packaged README/source | Origin of that published package | Publication of changes on a development branch |
|
|
8177
|
+
| Full helper commit retained on public CLI master | Reproducible public helper source | Installation in this project or course publication |
|
|
8178
|
+
| Successful named download and complete local tree/manifest | Actual package/API/content behavior for this context | A successful agent task or another profile/language |
|
|
8179
|
+
|
|
8180
|
+
The earlier planning shorthand \`get SKILL_NAME\` was incorrect. Released CLI
|
|
8181
|
+
uses a lesson reference plus \`--type skills --name NAME\`; there is no standalone
|
|
8182
|
+
skill-name positional command or independent skill-owner sync contract. On 2026-09-14, CLI \`1.21.0\` was published with v4, filtered skill downloads
|
|
8183
|
+
and Circle login; production m1 EN/PL and sync were verified. Its npm \`gitHead\`
|
|
8184
|
+
is \`2cc510fe690ba820937602d702564985087ded46\`. These revised helpers have their
|
|
8185
|
+
own source/content identity and are not implied by installing CLI 1.21.0. A local
|
|
8186
|
+
source build can carry an old version label; do not identify features from that
|
|
8187
|
+
label alone.
|
|
8188
|
+
|
|
8189
|
+
For a known installed version, read its npm metadata (replace the shell variable
|
|
8190
|
+
with the observed version) and use the matching source revision for documentation:
|
|
8191
|
+
|
|
8192
|
+
\`\`\`bash
|
|
8193
|
+
: "\${CLI_VERSION:?Set the actual published CLI version}"
|
|
8194
|
+
npm view "@przeprogramowani/10x-cli@$CLI_VERSION" version engines gitHead dist.integrity dist.tarball --json
|
|
8195
|
+
\`\`\`
|
|
8196
|
+
|
|
8197
|
+
Use that exact package's README or
|
|
8198
|
+
\`https://raw.githubusercontent.com/przeprogramowani/10x-cli/<gitHead>/README.md\`,
|
|
8199
|
+
with the real \`gitHead\` substituted. For a standalone binary, use its actual
|
|
8200
|
+
release tag/asset, published verification information and matching source. Do not
|
|
8201
|
+
invent a source SHA if metadata is absent. The installed help wins for supported
|
|
8202
|
+
flags; a help/README mismatch must remain visible and be checked against matching
|
|
8203
|
+
source, not resolved by fetching arbitrary master instructions.
|
|
8204
|
+
|
|
8205
|
+
Before the filtered-download journey, verify \`get --help\` and matching source/release evidence
|
|
8206
|
+
for \`get m1l1 --type skills --name NAME\` and lesson-scoped sync. A successful \`--help\` exit alone does
|
|
8207
|
+
not prove skill-filter support. If support or release evidence is missing, prepare the
|
|
8208
|
+
public helpers and handoff, but pause filtered commands with a precise explanation.
|
|
8209
|
+
Once supported, a filtered dry-run verifies the actual API/content selection before
|
|
8210
|
+
writing. Report unsupported reference, missing skill/index, locked module, denied
|
|
8211
|
+
access and network errors separately; do not silently use a lesson or v3 instead.
|
|
8212
|
+
|
|
8213
|
+
## Keep one runner and one project context
|
|
8214
|
+
|
|
8215
|
+
The examples below use a pinned npx runner in macOS/zsh or another POSIX shell.
|
|
8216
|
+
Set \`CLI_VERSION\` from verified release evidence, then use this function in that
|
|
8217
|
+
shell session. If the user's existing verified global/standalone \`10x\` works,
|
|
8218
|
+
substitute its exact executable for \`10x_cli\`; no reinstall is required.
|
|
8219
|
+
|
|
8220
|
+
\`\`\`bash
|
|
8221
|
+
: "\${CLI_VERSION:?Set the actual published CLI version}"
|
|
8222
|
+
10x_cli() { npx --yes "@przeprogramowani/10x-cli@$CLI_VERSION" "$@"; }
|
|
8223
|
+
10x_cli --version
|
|
8224
|
+
10x_cli --help
|
|
8225
|
+
10x_cli get --help
|
|
8226
|
+
10x_cli sync --help
|
|
8227
|
+
10x_cli auth --help
|
|
8228
|
+
10x_cli auth --status
|
|
8229
|
+
10x_cli list --course 10xdevs4
|
|
8230
|
+
\`\`\`
|
|
8231
|
+
|
|
8232
|
+
Run commands from the intended project root. The target guided context is
|
|
8233
|
+
\`--course 10xdevs4 --tool claude-code --lang pl\`; preserve it in downloads,
|
|
8234
|
+
previews, updates and recovery. \`list\` takes \`--course\`, not tool/lang flags.
|
|
8235
|
+
Use another context only when the user chose it. Record any language fallback
|
|
8236
|
+
reported by the CLI rather than calling English output Polish.
|
|
8237
|
+
|
|
8238
|
+
The project edition is stored in \`.10x-cli.json\` after a validated write and shared
|
|
8239
|
+
across profiles; existing supported manifests also carry edition information.
|
|
8240
|
+
Course selection is explicit flag → project edition → live API recommendation.
|
|
8241
|
+
An explicit course does not authorize changing a bound project's edition. Retain
|
|
8242
|
+
the v3 project and start a separate v4 directory for this journey. Preserve unknown,
|
|
8243
|
+
corrupt or conflicting manifests; never delete a binding to force migration.
|
|
8244
|
+
|
|
8245
|
+
Verified releases with the project-binding safeguards preserve project files and
|
|
8246
|
+
tool/language preferences during \`list\`, \`get --print\`, \`get --dry-run\`,
|
|
8247
|
+
\`sync --dry-run\` and \`doctor\`. Auth token refresh can still update the credential
|
|
8248
|
+
store. Verify the selected release's contract before describing a preview as
|
|
8249
|
+
read-only; do not generalize older source bugs to the target release.
|
|
8250
|
+
|
|
8251
|
+
## Two helper channels, one owner per installed copy
|
|
8252
|
+
|
|
8253
|
+
The public authoring source is \`przeprogramowani/10x-cli\`, under
|
|
8254
|
+
\`skills/10x-cli-setup/\` and \`skills/10x-cli-guide/\`. Toolkit distributes controlled
|
|
8255
|
+
copies through course content. Each helper includes \`SKILL.md\` and its own
|
|
8256
|
+
\`references/compatibility.md\`; neither may rely on an installed sibling helper.
|
|
8257
|
+
|
|
8258
|
+
Before either installer writes, inspect the destination directory, its path
|
|
8259
|
+
components/symlink targets, the tool's \`.10x-cli-manifest.json\`, and the skills
|
|
8260
|
+
installer's project registration/lock. Do not infer ownership solely from a
|
|
8261
|
+
directory name. If ownership is mixed or unknown, preserve local files and
|
|
8262
|
+
resolve it before writing; use a separate project to try the other channel.
|
|
8263
|
+
|
|
8264
|
+
### Bundled public copies (unreleased command)
|
|
8265
|
+
|
|
8266
|
+
The next CLI release adds \`10x helpers install --tool copilot\` (use the user's
|
|
8267
|
+
chosen profile). This command is absent from the 1.21.0 and 1.22.0 master
|
|
8268
|
+
baselines. Verify \`10x helpers --help\` on the actual runner; a source build may
|
|
8269
|
+
still report the baseline version. Do not claim npm availability from this text.
|
|
8270
|
+
|
|
8271
|
+
When supported, run from the intended project:
|
|
8272
|
+
|
|
8273
|
+
\`\`\`bash
|
|
8274
|
+
10x helpers install --tool copilot --dry-run
|
|
8275
|
+
10x helpers install --tool copilot
|
|
8276
|
+
\`\`\`
|
|
8277
|
+
|
|
8278
|
+
Both helpers and their own compatibility references are embedded in the same npm
|
|
8279
|
+
bundle/standalone executable. No auth, network, external skills installer or
|
|
8280
|
+
global installation is involved. \`--tool\` is required; Copilot writes to
|
|
8281
|
+
\`.github/skills/\`, Claude Code to \`.claude/skills/\`, and other profiles follow the
|
|
8282
|
+
CLI profile table. Do not carry \`--agent github-copilot\` from the external
|
|
8283
|
+
installer into this command.
|
|
8284
|
+
|
|
8285
|
+
Existing identical files are unchanged; missing files are created. Any differing
|
|
8286
|
+
helper file blocks the entire preflight with exit 1, preserving both helpers and
|
|
8287
|
+
local extras. Never remove a user's files merely to make a retry pass. Keep an
|
|
8288
|
+
existing copy, or let the user deliberately back it up outside managed trees
|
|
8289
|
+
before replacement. Course-owned copies stay with get/sync; this command writes
|
|
8290
|
+
no course manifest or binding. Filesystem errors also exit 1 and report that
|
|
8291
|
+
already created files remain; unsupported options/targets exit 2. Preview uses
|
|
8292
|
+
the same checks without writes. This is a public bundled snapshot, not an
|
|
8293
|
+
automatic updater; another CLI version may contain different helper bytes and
|
|
8294
|
+
will preserve differing installed files as conflicts. Neither npm installation
|
|
8295
|
+
alone nor running this command activates the helpers in the agent.
|
|
8296
|
+
|
|
8297
|
+
For older CLI releases use the pinned public installer below with an explicit
|
|
8298
|
+
agent and Project scope. For Copilot that is \`--agent github-copilot --copy\`,
|
|
8299
|
+
which \`skills@1.5.26\` places in project \`.agents/skills/\`. Do not add \`-g\` or
|
|
8300
|
+
\`--all\`. Confirm the complete tree and the actual source selected by Copilot.
|
|
8301
|
+
|
|
8302
|
+
### Public on-demand channel
|
|
8303
|
+
|
|
8304
|
+
This channel can bootstrap before CLI installation or course authentication.
|
|
8305
|
+
Select a full, retained public CLI master commit containing these helper trees;
|
|
8306
|
+
record it as \`CLI_SKILLS_REF\`. Do not use an unmerged branch SHA as the permanent
|
|
8307
|
+
reference. The installer is separately pinned to the inspected \`skills@1.5.26\`.
|
|
8308
|
+
|
|
8309
|
+
\`\`\`bash
|
|
8310
|
+
: "\${CLI_SKILLS_REF:?Set the full public CLI master SHA containing the helpers}"
|
|
8311
|
+
npx --yes skills@1.5.26 add "https://github.com/przeprogramowani/10x-cli/tree/$CLI_SKILLS_REF/skills" --skill 10x-cli-setup --agent claude-code --copy
|
|
8312
|
+
npx --yes skills@1.5.26 add "https://github.com/przeprogramowani/10x-cli/tree/$CLI_SKILLS_REF/skills" --skill 10x-cli-guide --agent claude-code --copy
|
|
8313
|
+
\`\`\`
|
|
8314
|
+
|
|
8315
|
+
Run only the needed helper's command, from the project root. Project scope is the
|
|
8316
|
+
default; do not add \`--global\`/\`-g\`. \`--copy\` requests a project copy instead of a
|
|
8317
|
+
symlink. \`npx --yes\` accepts running the pinned npm tool; there is deliberately no
|
|
8318
|
+
\`--yes\` argument to \`skills add\`, so its own prompts are retained. Confirm the
|
|
8319
|
+
installer's actual paths and complete references after installation. A helper
|
|
8320
|
+
already managed by CLI should be used/updated through CLI, not overwritten here.
|
|
8321
|
+
|
|
8322
|
+
### CLI channel
|
|
8323
|
+
|
|
8324
|
+
Use this channel after setup/auth and only with verified skill-filter support and
|
|
8325
|
+
available v4 content. These helpers and the launch chain \`10x-init\`, \`10x-shape\`, \`10x-prd\` belong to m1l1
|
|
8326
|
+
and inherit course membership and module availability. Their source membership
|
|
8327
|
+
does not prove that the content has been published or unlocked.
|
|
8328
|
+
|
|
8329
|
+
In a separate project from the public copies, or after the explicit takeover
|
|
8330
|
+
below, use the same verified \`10x_cli\` runner:
|
|
8331
|
+
|
|
8332
|
+
\`\`\`bash
|
|
8333
|
+
10x_cli get m1l1 --type skills --name 10x-cli-setup --course 10xdevs4 --tool claude-code --lang pl --dry-run
|
|
8334
|
+
10x_cli get m1l1 --type skills --name 10x-cli-setup --course 10xdevs4 --tool claude-code --lang pl
|
|
8335
|
+
10x_cli get m1l1 --type skills --name 10x-cli-guide --course 10xdevs4 --tool claude-code --lang pl --dry-run
|
|
8336
|
+
10x_cli get m1l1 --type skills --name 10x-cli-guide --course 10xdevs4 --tool claude-code --lang pl
|
|
8337
|
+
\`\`\`
|
|
8338
|
+
|
|
8339
|
+
Each successful filtered skill download should materialize
|
|
8340
|
+
\`.claude/skills/<canonical-name>/SKILL.md\` and
|
|
8341
|
+
\`.claude/skills/<canonical-name>/references/compatibility.md\`, under lesson ownership
|
|
8342
|
+
\`lessons.m1l1.skills\` in \`.claude/.10x-cli-manifest.json\`, with hashes in
|
|
8343
|
+
\`files.skills\`. Confirm that complete tree and owner from actual output/files.
|
|
8344
|
+
This filter writes only the selected skill, not course rules or the whole lesson.
|
|
8345
|
+
|
|
8346
|
+
### Changing the owner deliberately
|
|
8347
|
+
|
|
8348
|
+
To move a public copy to CLI, inventory and back up that entire helper outside the
|
|
8349
|
+
managed skill trees, including local changes and installer metadata needed for
|
|
8350
|
+
recovery. Use the original pinned installer's \`remove --help\` and \`remove\` flow to
|
|
8351
|
+
unregister only the selected helper at project scope for the selected agent.
|
|
8352
|
+
Verify that both its registration and destination path/symlink are gone. If
|
|
8353
|
+
anything remains or another owner is present, stop the takeover and preserve it.
|
|
8354
|
+
Then use a filtered skill download and inspect its complete tree and lesson ownership. Merge
|
|
8355
|
+
desired local edits consciously from the backup; do not automatically force them
|
|
8356
|
+
over the downloaded copy. Reopen/read the installed helper after replacement.
|
|
8357
|
+
|
|
8358
|
+
The reverse move has no verified CLI per-skill unregister command in this contract.
|
|
8359
|
+
Use a new isolated project for a public copy; do not hand-edit the CLI manifest or
|
|
8360
|
+
place two updaters over the same files. Normal use does not require any takeover.
|
|
8361
|
+
|
|
8362
|
+
## Download, use, update
|
|
8363
|
+
|
|
8364
|
+
The launch example is lesson 1's existing 10xCards: init → shape → PRD.
|
|
8365
|
+
\`10x-plan\` is not available for the launch demonstration. After capability and
|
|
8366
|
+
content checks for each name, inspect each preview before its corresponding write:
|
|
8367
|
+
|
|
8368
|
+
\`\`\`bash
|
|
8369
|
+
10x_cli get m1l1 --type skills --name 10x-init --course 10xdevs4 --tool claude-code --lang pl --dry-run
|
|
8370
|
+
10x_cli get m1l1 --type skills --name 10x-init --course 10xdevs4 --tool claude-code --lang pl
|
|
8371
|
+
10x_cli get m1l1 --type skills --name 10x-shape --course 10xdevs4 --tool claude-code --lang pl --dry-run
|
|
8372
|
+
10x_cli get m1l1 --type skills --name 10x-shape --course 10xdevs4 --tool claude-code --lang pl
|
|
8373
|
+
10x_cli get m1l1 --type skills --name 10x-prd --course 10xdevs4 --tool claude-code --lang pl --dry-run
|
|
8374
|
+
10x_cli get m1l1 --type skills --name 10x-prd --course 10xdevs4 --tool claude-code --lang pl
|
|
8375
|
+
\`\`\`
|
|
8376
|
+
|
|
8377
|
+
Require the complete three trees and inspect each installed entrypoint/reference.
|
|
8378
|
+
All checks below must succeed before use; stop on any failure:
|
|
8379
|
+
|
|
8380
|
+
\`\`\`bash
|
|
8381
|
+
test -s .claude/skills/10x-init/SKILL.md
|
|
8382
|
+
test -s .claude/skills/10x-shape/SKILL.md
|
|
8383
|
+
test -s .claude/skills/10x-shape/references/prd-schema.md
|
|
8384
|
+
test -s .claude/skills/10x-prd/SKILL.md
|
|
8385
|
+
test -s .claude/skills/10x-prd/../10x-shape/references/prd-schema.md
|
|
8386
|
+
\`\`\`
|
|
8387
|
+
|
|
8388
|
+
PRD reads \`../10x-shape/references/prd-schema.md\` relative to its SKILL.md;
|
|
8389
|
+
isolated PRD download is insufficient. These are the source minimum: preserve
|
|
8390
|
+
additional supporting files in the selected release. Inspect all three names in
|
|
8391
|
+
\`lessons.m1l1.skills\`, their hashes in \`files.skills\`, and the project edition
|
|
8392
|
+
binding. Partial downloads do not establish complete lesson freshness/release identity.
|
|
8393
|
+
Membership in source is candidate evidence; actual filtered availability, full PL
|
|
8394
|
+
references and release identity still need verification for all three names.
|
|
8395
|
+
|
|
8396
|
+
\`CLAUDE-m1l1\` is a separate lesson rule and is not included in these filtered gets.
|
|
8397
|
+
The inspected three skill sources do not require it for the chain. This is not
|
|
8398
|
+
proof that the entire lesson needs no rule: if the learner's lesson instructions
|
|
8399
|
+
require it, inspect an existing rule's provenance, or report the missing
|
|
8400
|
+
prerequisite and ask the lesson/release owner for a supported route before that
|
|
8401
|
+
step. Never invent a command, overwrite a rule or fall back to full lesson get.
|
|
8402
|
+
|
|
8403
|
+
Have the agent explicitly read each installed SKILL.md and its references in
|
|
8404
|
+
order: init preserves/scaffolds context directories; shape conducts the actual
|
|
8405
|
+
10xCards discovery with the learner and writes
|
|
8406
|
+
\`context/foundation/shape-notes.md\`; after the learner approves those notes, PRD
|
|
8407
|
+
uses them and the sibling schema to produce \`context/foundation/prd.md\`.
|
|
8408
|
+
Ask for missing lesson inputs; do not manufacture a task.md, product decisions or
|
|
8409
|
+
a finished plan. Respect existing-file collision choices and report actual output
|
|
8410
|
+
paths. Inspect the notes, schema compliance, open questions and preserved local
|
|
8411
|
+
work. Stop at PRD, without stack selection or implementation. Download alone is
|
|
8412
|
+
not use; native slash/$ discovery needs separate agent evidence. Keep private
|
|
8413
|
+
lesson text out of public fixtures. The guide supplies the detailed agent steps.
|
|
8414
|
+
|
|
8415
|
+
Sync below refreshes entire recorded lessons, not only the three skill filters.
|
|
8416
|
+
Preview may include other skills, prompts, configs and course rules; apply only
|
|
8417
|
+
when the user accepts that scope. For a narrow update, repeat the selected skill
|
|
8418
|
+
filter instead. Never use sync to silently bypass a missing lesson-rule prerequisite.
|
|
8419
|
+
|
|
8420
|
+
\`\`\`bash
|
|
8421
|
+
10x_cli sync --course 10xdevs4 --tool claude-code --lang pl --dry-run
|
|
8422
|
+
10x_cli sync --course 10xdevs4 --tool claude-code --lang pl
|
|
8423
|
+
\`\`\`
|
|
8424
|
+
|
|
8425
|
+
Normal sync refreshes downloaded owners, including the full lessons that own previously downloaded skills. Avoid \`--all\` for this small journey. Inspect updated,
|
|
8426
|
+
unchanged, conflict/preserved and error outcomes even when exit is 0. Preserve
|
|
8427
|
+
local edits; do not use automatic \`--force\`. Recovery commands must retain the
|
|
8428
|
+
same runner/course/tool/lang, even if an older report omits that context.
|
|
8429
|
+
|
|
8430
|
+
Filtered lesson get (\`m1l1 --type skills --name ...\`) is the supported command
|
|
8431
|
+
used throughout this guide. It preserves other previously downloaded artifacts
|
|
8432
|
+
through partial writes; normal sync later operates at lesson scope. \`--print\` is an
|
|
8433
|
+
inspection surface, not installation: human TTY output can show only SKILL.md,
|
|
8434
|
+
while non-TTY output is JSON. Never redirect it into SKILL.md as a full package.
|
|
8435
|
+
|
|
8436
|
+
| Item to update | Correct channel |
|
|
8437
|
+
|---|---|
|
|
8438
|
+
| npx CLI | Choose and verify a new published version, update the runner pin |
|
|
8439
|
+
| Global npm CLI | \`npm install -g "@przeprogramowani/10x-cli@$CLI_VERSION"\` after selecting/verifying the version |
|
|
8440
|
+
| Standalone CLI | Replace through its verified release asset procedure, then check the actual executable |
|
|
8441
|
+
| Public helper copy | Inspect local changes/ownership; rerun its selected \`skills add\` command with a deliberate new full source SHA |
|
|
8442
|
+
| CLI-owned helper or exercise skill | Repeat its filtered get for a narrow update; \`sync\` refreshes full recorded lessons after preview |
|
|
8443
|
+
|
|
8444
|
+
\`skills update\` is not a substitute for proving an exact selected helper revision;
|
|
8445
|
+
it may follow a different ref/latest. npm install includes helper source files in
|
|
8446
|
+
the package but does not install them into an agent. CLI sync cannot update the
|
|
8447
|
+
CLI executable or a public installer-owned helper.
|
|
8448
|
+
|
|
8449
|
+
## Diagnostics and evidence boundaries
|
|
8450
|
+
|
|
8451
|
+
Doctor performs auth/access, API, config, version and configured-tool checks.
|
|
8452
|
+
It can return 78 with an outer JSON \`status: "ok"\`; inspect \`data.overall\` and all
|
|
8453
|
+
\`data.checks\`. A missing tool directory before first get can be expected. Explain
|
|
8454
|
+
only that failure as pre-download state; do not ignore auth/network/permissions.
|
|
8455
|
+
The inspected doctor has no \`--tool\` or \`--course\` flags and may report a different
|
|
8456
|
+
configured profile/course from this journey's explicit command context.
|
|
8457
|
+
|
|
8458
|
+
Configuration is under \`$XDG_CONFIG_HOME/10x-cli\` on macOS/Linux when nonempty,
|
|
8459
|
+
otherwise \`~/.config/10x-cli\`. Windows uses \`%APPDATA%/10x-cli\`, falling back to
|
|
8460
|
+
the user's \`AppData/Roaming/10x-cli\`. Inspect only needed nonsecret preferences;
|
|
8461
|
+
do not dump credentials or reset the entire config directory. Auth validity and
|
|
8462
|
+
live course access are distinct: inspect \`access_checked\`/access errors, not only
|
|
8463
|
+
the status exit. Login is user-operated and may send email.
|
|
8464
|
+
|
|
8465
|
+
Full acceptance needs real package/version/integrity/source and endpoint/content
|
|
8466
|
+
release evidence, both helper channels, complete support files, and an actual
|
|
8467
|
+
agent task transcript for macOS/zsh/Claude Code/PL. Local builds and fixtures can
|
|
8468
|
+
check structure/conflicts but cannot prove publication, course unlock or this
|
|
8469
|
+
user's entitlement. Other platforms/profiles and EN/PL transformed content need
|
|
8470
|
+
their own evidence; do not imply a Windows or translated-content walkthrough ran.
|
|
8471
|
+
`;
|
|
8472
|
+
|
|
8473
|
+
// src/lib/bundled-helpers.ts
|
|
8474
|
+
var BUNDLED_HELPERS = {
|
|
8475
|
+
"10x-cli-setup": { "SKILL.md": SKILL_default, "references/compatibility.md": compatibility_default },
|
|
8476
|
+
"10x-cli-guide": { "SKILL.md": SKILL_default2, "references/compatibility.md": compatibility_default2 }
|
|
8477
|
+
};
|
|
8478
|
+
|
|
8479
|
+
// src/commands/helpers.ts
|
|
8480
|
+
function registerHelpersCommand(cli) {
|
|
8481
|
+
cli.command("helpers <action>", "Install both bundled public CLI helpers into this project (action: install)").option("--tool <tool>", `Choose the target explicitly: ${Object.keys(PROFILES).join(", ")}`).option("--dry-run", "Check paths and conflicts without writing files").action((action, flags) => {
|
|
8482
|
+
const ctx = resolveContext(flags);
|
|
8483
|
+
const profile = typeof flags.tool === "string" ? getToolProfile(flags.tool) : undefined;
|
|
8484
|
+
if (action !== "install" || !profile || typeof profile.toolId !== "string") {
|
|
8485
|
+
outputError(ctx, "usage", "Choose install and a supported target tool explicitly.", ExitCodes.USAGE, "Run '10x helpers install --tool copilot' from your project, or choose another tool from '10x helpers --help'.");
|
|
8486
|
+
}
|
|
8487
|
+
const root = process.cwd();
|
|
8488
|
+
try {
|
|
8489
|
+
const files = Object.entries(BUNDLED_HELPERS).flatMap(([name, tree]) => Object.entries(tree).map(([file, content]) => {
|
|
8490
|
+
const path = join11(profile.skillDir(name), file);
|
|
8491
|
+
const absolute = resolve3(root, path);
|
|
8492
|
+
assertProjectFilePath(root, absolute);
|
|
8493
|
+
const state = !existsSync10(absolute) ? "missing" : readFileSync9(absolute).equals(Buffer.from(content)) ? "unchanged" : "conflict";
|
|
8494
|
+
return { path, absolute, content, state };
|
|
8495
|
+
}));
|
|
8496
|
+
const conflicts = files.filter((file) => file.state === "conflict");
|
|
8497
|
+
if (conflicts.length) {
|
|
8498
|
+
outputError(ctx, "helper_conflict", `Existing helper files differ: ${conflicts.map((f2) => f2.path).join(", ")}. No files were written.`, ExitCodes.ERROR, "Keep your existing helpers, or back them up outside the skill directories before retrying '10x helpers install --tool " + profile.toolId + "'.");
|
|
8499
|
+
}
|
|
8500
|
+
const results = [];
|
|
8501
|
+
for (const file of files) {
|
|
8502
|
+
if (file.state === "missing" && !flags.dryRun) {
|
|
8503
|
+
assertProjectFilePath(root, file.absolute);
|
|
8504
|
+
mkdirSync6(dirname6(file.absolute), { recursive: true });
|
|
8505
|
+
assertProjectFilePath(root, file.absolute);
|
|
8506
|
+
writeFileSync6(file.absolute, file.content, { flag: "wx" });
|
|
8507
|
+
}
|
|
8508
|
+
results.push({ path: file.path, action: file.state === "unchanged" ? "unchanged" : flags.dryRun ? "would_create" : "created" });
|
|
8509
|
+
}
|
|
8510
|
+
output(ctx, `${flags.dryRun ? "Helper preview" : "Helpers ready"} for ${profile.displayName} in this project.
|
|
8511
|
+
${results.map((f2) => `${f2.action}: ${f2.path}`).join(`
|
|
8512
|
+
`)}`, { version: package_default.version, scope: "project", tool: profile.toolId, dryRun: !!flags.dryRun, files: results });
|
|
8513
|
+
} catch (error) {
|
|
8514
|
+
outputError(ctx, "helper_install_failed", `Could not complete helper installation: ${error instanceof Error ? error.message : String(error)}.`, ExitCodes.ERROR, "Inspect the reported path and preserve existing files; any files already created remain available when you retry '10x helpers install --tool " + profile.toolId + "'.");
|
|
8515
|
+
}
|
|
8516
|
+
});
|
|
8517
|
+
}
|
|
8518
|
+
|
|
7441
8519
|
// src/commands/list.ts
|
|
7442
8520
|
function registerListCommand(cli) {
|
|
7443
8521
|
cli.command("list [module]", "Browse available modules and lessons").option("--course <course>", "Select course ID or slug (default: project edition or API recommendation)").action(async (moduleArg, options) => {
|
|
@@ -7588,11 +8666,11 @@ function renderModuleDetail(ctx, module, course, reason) {
|
|
|
7588
8666
|
}
|
|
7589
8667
|
|
|
7590
8668
|
// src/commands/sync.ts
|
|
7591
|
-
import { join as
|
|
8669
|
+
import { join as join13 } from "node:path";
|
|
7592
8670
|
|
|
7593
8671
|
// src/lib/sync-freshness.ts
|
|
7594
|
-
import { existsSync as
|
|
7595
|
-
import { join as
|
|
8672
|
+
import { existsSync as existsSync11, readFileSync as readFileSync10 } from "node:fs";
|
|
8673
|
+
import { join as join12 } from "node:path";
|
|
7596
8674
|
function isLessonFresh(root, manifest, id, profile, lang, courseRules) {
|
|
7597
8675
|
const lesson = manifest?.lessons?.[id];
|
|
7598
8676
|
const representation = lesson?.representation;
|
|
@@ -7600,25 +8678,25 @@ function isLessonFresh(root, manifest, id, profile, lang, courseRules) {
|
|
|
7600
8678
|
return false;
|
|
7601
8679
|
const matches = (path, hash) => {
|
|
7602
8680
|
assertProjectFilePath(root, path);
|
|
7603
|
-
return !!hash &&
|
|
8681
|
+
return !!hash && existsSync11(path) && contentHash(readFileSync10(path)) === hash;
|
|
7604
8682
|
};
|
|
7605
8683
|
try {
|
|
7606
8684
|
for (const [name, skill] of Object.entries(lesson.skills)) {
|
|
7607
8685
|
if (!isSafeName(name))
|
|
7608
8686
|
return false;
|
|
7609
8687
|
for (const file of skill.files)
|
|
7610
|
-
if (!isSafeSkillFilePath(file) || !matches(
|
|
8688
|
+
if (!isSafeSkillFilePath(file) || !matches(join12(root, profile.skillDir(name), file), manifest.files.skills[name]?.contentHashes?.[file]))
|
|
7611
8689
|
return false;
|
|
7612
8690
|
}
|
|
7613
8691
|
for (const name of lesson.prompts)
|
|
7614
|
-
if (!isSafeName(name) || !matches(
|
|
8692
|
+
if (!isSafeName(name) || !matches(join12(root, profile.promptPath(name.replace(/\.md$/, ""))), manifest.files.promptHashes?.[name]))
|
|
7615
8693
|
return false;
|
|
7616
8694
|
for (const name of lesson.configs)
|
|
7617
|
-
if (!isSafeName(name) || !matches(
|
|
8695
|
+
if (!isSafeName(name) || !matches(join12(root, profile.configPath(name)), manifest.files.configHashes?.[name]))
|
|
7618
8696
|
return false;
|
|
7619
|
-
const rulesPath =
|
|
8697
|
+
const rulesPath = join12(root, profile.rulesFile);
|
|
7620
8698
|
assertProjectFilePath(root, rulesPath);
|
|
7621
|
-
const existing =
|
|
8699
|
+
const existing = existsSync11(rulesPath) ? readFileSync10(rulesPath, "utf8") : "";
|
|
7622
8700
|
const block = inspectRulesBlock(existing, profile.sentinelBegin, profile.sentinelEnd);
|
|
7623
8701
|
if (representation.rules) {
|
|
7624
8702
|
const rules = manifest.managedRules;
|
|
@@ -7677,7 +8755,7 @@ async function runSync(ctx, options) {
|
|
|
7677
8755
|
}
|
|
7678
8756
|
return true;
|
|
7679
8757
|
});
|
|
7680
|
-
const manifest = readManifest(
|
|
8758
|
+
const manifest = readManifest(join13(process.cwd(), profile.manifestDir));
|
|
7681
8759
|
const manifestLessonIds = new Set(manifest?.lessons ? Object.keys(manifest.lessons) : manifest ? [manifest.lessonId] : []);
|
|
7682
8760
|
let targets = unlocked;
|
|
7683
8761
|
if (moduleFilter !== undefined)
|
|
@@ -7735,7 +8813,7 @@ async function runSync(ctx, options) {
|
|
|
7735
8813
|
}
|
|
7736
8814
|
}
|
|
7737
8815
|
async function syncLesson(ctx, lesson, opts) {
|
|
7738
|
-
const currentManifest = readManifest(
|
|
8816
|
+
const currentManifest = readManifest(join13(process.cwd(), opts.profile.manifestDir));
|
|
7739
8817
|
const stored = currentManifest?.lessons?.[lesson.lessonId]?.catalogContentHash;
|
|
7740
8818
|
if (!opts.force && lesson.contentHash !== undefined && stored !== undefined && lesson.contentHash === stored && isLessonFresh(process.cwd(), currentManifest, lesson.lessonId, opts.profile, opts.lang, opts.applyCourseRules)) {
|
|
7741
8819
|
verbose(ctx, `${lesson.lessonId}: upstream unchanged (digest match) — skipping fetch`);
|
|
@@ -8080,6 +9158,7 @@ cli.option("--json", "Output as JSON (auto-detected when piped)");
|
|
|
8080
9158
|
cli.option("--verbose", "Show detailed output on stderr");
|
|
8081
9159
|
registerAuthCommand(cli);
|
|
8082
9160
|
registerGetCommand(cli);
|
|
9161
|
+
registerHelpersCommand(cli);
|
|
8083
9162
|
registerListCommand(cli);
|
|
8084
9163
|
registerSyncCommand(cli);
|
|
8085
9164
|
registerDoctorCommand(cli);
|