@przeprogramowani/10x-cli 1.21.0 → 1.22.1

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@przeprogramowani/10x-cli",
3
- "version": "1.21.0",
3
+ "version": "1.22.1",
4
4
  "description": "Open-source CLI for 10xDevs course content",
5
5
  "repository": {
6
6
  "type": "git",
@@ -27,7 +27,8 @@
27
27
  "generate-types": "bun run scripts/generate-types.ts",
28
28
  "typecheck": "tsc --noEmit",
29
29
  "test": "bun test",
30
- "lint": "bun run --bun node_modules/oxlint/bin/oxlint ."
30
+ "lint": "bun run --bun node_modules/oxlint/bin/oxlint .",
31
+ "validate:cli-skills": "node scripts/validate-cli-skills.mjs"
31
32
  },
32
33
  "dependencies": {
33
34
  "@clack/prompts": "0.9.1",
@@ -52,4 +53,4 @@
52
53
  "publishConfig": {
53
54
  "access": "public"
54
55
  }
55
- }
56
+ }
@@ -1,273 +1,277 @@
1
1
  ---
2
2
  name: 10x-cli-guide
3
- description: "Invoke this skill when the user asks how to USE the 10x-cli day-to-day — fetching lessons, listing modules, switching AI tools, troubleshooting errors, understanding where artifacts land, checking the 10xBench model leaderboard, or working on a specific OS (Windows, Linux, macOS). Covers commands (get, list, doctor, auth --status/--logout, bench), tool profiles, artifact locations, common errors, and platform-specific tips. Excludes: first-time installation and onboarding (use 10x-cli-setup instead), developing or contributing to 10x-cli source code, and general programming help."
3
+ 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."
4
4
  ---
5
5
 
6
- # 10x-cli Daily Usage Guide
6
+ # 10x-cli: download, use, update
7
7
 
8
- This skill helps users work with `@przeprogramowani/10x-cli` after it is already installed and authenticated. If the user has not installed or authenticated yet, hand off to the **10x-cli-setup** skill instead.
8
+ Read the bundled [compatibility and channel reference](references/compatibility.md)
9
+ before issuing commands. It contains the pinned runner setup, version checks, both
10
+ helper channels and ownership safeguards. Commands use the released lesson-scoped
11
+ skill filter; verify the actual selected package and content before using it. A local
12
+ build or source membership is not proof that a feature has shipped.
9
13
 
10
- ## Step 1: Detect the user's environment
14
+ The next CLI release also provides project-only bundled installation through
15
+ `10x helpers install --tool <chosen-profile>`. This command is **unreleased** and
16
+ absent from the 1.21.0/1.22.0 master baselines: check the actual runner's
17
+ `helpers --help` first. Follow **Bundled public copies** in the local reference
18
+ for complete files, explicit targets and conflict handling; keep the existing
19
+ pinned public route when the runner does not support it.
11
20
 
12
- Before giving any guidance, gather context silently — run these checks and remember the results. Do not print raw output to the user.
21
+ ## Environment
13
22
 
14
- ### Operating system
23
+ Reuse the setup handoff: project root, course, tool, language, runner/version,
24
+ auth/access status, update method and helper channel/path. If anything is absent,
25
+ inspect only that item. A working installed CLI needs no reinstall. If setup is
26
+ needed, locate its actual SKILL.md and references or install that helper through
27
+ the public channel; do not invoke a missing sibling by name.
15
28
 
16
- ```bash
17
- echo "$OSTYPE" 2>/dev/null || echo "win32"
18
- ```
19
-
20
- Use the result to tailor path separators, shell syntax, and clipboard commands throughout your answers:
21
-
22
- | OS | Shell | Home var | Clipboard | Temp dir |
23
- |----|-------|----------|-----------|----------|
24
- | macOS (`darwin*`) | zsh / bash | `$HOME` | `pbcopy` | `$TMPDIR` |
25
- | Linux (`linux-gnu*`) | bash / zsh | `$HOME` | `xclip -selection clipboard` or `xsel --clipboard` | `/tmp` |
26
- | Windows (`win32` / MSYS / Git Bash) | PowerShell / cmd | `%USERPROFILE%` | `clip.exe` | `%TEMP%` |
27
-
28
- ### Active AI tool
29
-
30
- ```bash
31
- 10x doctor --json 2>/dev/null | head -1
32
- ```
33
-
34
- Also check which tool profile is configured:
35
-
36
- ```bash
37
- cat ~/.config/10x-cli/config.json 2>/dev/null || cat "$APPDATA/10x-cli/config.json" 2>/dev/null || echo "{}"
38
- ```
39
-
40
- If the config contains a `"tool"` key, that is the active profile. If not, the default is `claude-code`.
41
-
42
- ### CLI version
43
-
44
- ```bash
45
- 10x --version
46
- ```
47
-
48
- ## Step 2: Answer the user's question using the reference below
49
-
50
- Use the environment context from Step 1 to personalize every answer. Always use the OS-appropriate shell syntax, paths, and commands. Never show macOS-specific commands to a Windows user or vice versa.
51
-
52
- ---
53
-
54
- ## Command Reference
55
-
56
- ### `10x get <ref>` — Fetch and apply lesson artifacts
57
-
58
- The primary daily command. Fetches a lesson bundle from the API and writes skills, prompts, rules, and config templates to the project directory.
59
-
60
- ```bash
61
- 10x get m1l1 # Fetch module 1, lesson 1
62
- 10x get m2l3 # Fetch module 2, lesson 3
63
- 10x get m1l1 --dry-run # Preview what would be written
64
- 10x get m1l1 --tool cursor # Use a different AI tool profile
65
- 10x get m1l1 --lang pl # Fetch Polish content
66
- ```
67
-
68
- **Filtering artifacts:**
69
-
70
- ```bash
71
- 10x get m1l1 --type skills # Only skills
72
- 10x get m1l1 --type skills --name code-review # One specific skill
73
- 10x get m1l1 --print --type skills --name code-review # Print to stdout
74
- ```
75
-
76
- **Where artifacts land** (depends on the active tool profile):
77
-
78
- | Tool | Skills | Prompts | Rules file | Config templates |
79
- |------|--------|---------|------------|------------------|
80
- | Claude Code | `.claude/skills/<name>/SKILL.md` | `.claude/prompts/<name>.md` | `CLAUDE.md` | `.claude/config-templates/<name>` |
81
- | Cursor | `.cursor/skills/<name>/SKILL.md` | `.cursor/prompts/<name>.md` | `.cursor/rules/10x-course.mdc` | `.cursor/config-templates/<name>` |
82
- | GitHub Copilot | `.github/skills/<name>/SKILL.md` | `.github/prompts/<name>.md` | `.github/copilot-instructions.md` | `.github/config-templates/<name>` |
83
- | Codex CLI | `.agents/skills/<name>/SKILL.md` | `.agents/prompts/<name>.md` | `AGENTS.md` | `.agents/config-templates/<name>` |
84
- | Devin Desktop | `.devin/skills/<name>/SKILL.md` | `.devin/prompts/<name>.md` | `AGENTS.md` | `.devin/config-templates/<name>` |
85
- | Generic | `.ai/skills/<name>/SKILL.md` | `.ai/prompts/<name>.md` | `AGENTS.md` | `.ai/config-templates/<name>` |
86
-
87
- **Re-applying a lesson** updates clean managed files and preserves local edits unless explicitly resolved. Config templates are create-only. Course rules with local edits or an unknown baseline require explicit resolution, even with `--force` or when opting out. Text outside the managed markers stays intact.
88
-
89
- **Switching lessons** accumulates downloaded artifacts. Cleanup is scoped to the lesson being updated and removes only unchanged files with known hashes and no remaining owner. User files, modified files and files without a baseline are preserved.
90
-
91
- ### `10x list [module]` — Browse available content
92
-
93
- ```bash
94
- 10x list # Show all modules with lock state
95
- 10x list m1 # Show lessons in module 1
96
- ```
97
-
98
- Locked modules show their unlock date. Use this to see what is available before fetching.
99
-
100
- ### `10x doctor` — Diagnose problems
101
-
102
- Runs 5 checks: Auth status, API connectivity, Config directory, CLI version, and tool directory presence.
103
-
104
- ```bash
105
- 10x doctor # Human-readable output
106
- 10x doctor --json # Machine-readable for scripting
107
- ```
108
-
109
- Exit code 78 means at least one check failed.
29
+ The guided acceptance context is macOS/zsh, Claude Code, 10xdevs4 and Polish.
30
+ Determine the actual OS and shell from the environment, not a POSIX command that
31
+ labels every failure Windows. Select the intended project root before any write.
32
+ For v4, retain an existing v3 project and use a separate directory; ordinary get,
33
+ sync and profile changes do not migrate editions. Preserve `.10x-cli.json` and
34
+ all manifests if their versions/courses conflict.
110
35
 
111
- ### `10x auth` — Session management
36
+ Use the verified `10x_cli` runner defined in the reference, or the user's exact
37
+ verified global/standalone executable:
112
38
 
113
39
  ```bash
114
- 10x auth # Interactive: choose email magic link or Circle message
115
- 10x auth --method email # Magic-link login (default when piped / --json)
116
- 10x auth --method circle # Approval link sent as a Circle message — use when no email arrives
117
- 10x auth --status # Check current session (shows the login method when known)
118
- 10x auth --logout # Clear credentials
40
+ 10x_cli --version
41
+ 10x_cli get --help
42
+ 10x_cli sync --help
43
+ 10x_cli auth --status
44
+ 10x_cli list --course 10xdevs4
119
45
  ```
120
46
 
121
- `--method circle` sends a direct message in Circle with a one-time approval link; open it in Circle on any device and the terminal signs in within a few seconds. The link expires after 15 minutes and the CLI never resends it by itself — run the command again for a fresh message, or fall back to `--method email`. In non-interactive mode (`--json` or piped output) pass `--email` and an explicit `--method circle`; the CLI never prompts there.
122
-
123
- Sessions refresh transparently — if a token is near expiry, the next command refreshes it automatically. You only need to re-auth manually if the session has fully expired.
47
+ Check source/release evidence for lesson reference, skill filter and lesson-scoped sync, then use the
48
+ filtered preview below to check the endpoint. Do not treat a successful help exit as
49
+ capability proof. Keep unsupported CLI syntax, unpublished/missing content, locked
50
+ module, membership denial and network failure distinct. Missing final release
51
+ evidence need not block preparing the public helpers or the exercise files.
124
52
 
125
- ### `10x bench` — 10xBench model leaderboard
53
+ Read only needed nonsecret preferences from `config.json`. On macOS/Linux its
54
+ base is nonempty `$XDG_CONFIG_HOME`, otherwise `~/.config`; on Windows it is
55
+ `%APPDATA%`, otherwise the user's `AppData/Roaming`. Append `10x-cli/config.json`.
56
+ Do not print `auth.json`, discard stderr, truncate doctor JSON or erase config to
57
+ repair an unknown problem. An explicit course/tool/language in this journey takes
58
+ precedence over saved defaults for that command.
126
59
 
127
- ```bash
128
- 10x bench # Top 10 AI models with color-coded score bars
129
- 10x bench --limit 5 # Just the top 5
130
- 10x bench --json # Machine-readable envelope (also when piped)
131
- ```
60
+ ## Session management
132
61
 
133
- Shows the live leaderboard from [10xbench.ai](https://10xbench.ai) — AI models
134
- benchmarked on vibe-coding the Przeprogramowani.pl website. Each row has the
135
- average score, number of runs, cost per run where measured, and the agent
136
- harness used. **No authentication needed** — this works before `10x auth`.
137
- Data updates when new benchmark results are published; superseded model
138
- versions are already filtered out upstream. If it reports the leaderboard as
139
- unavailable, the site may be mid-deploy — retry in a few minutes.
140
-
141
- ---
142
-
143
- ## Switching Tools
144
-
145
- To change your AI tool (e.g., from Claude Code to Cursor):
62
+ When login is needed, let the user choose the delivery channel and complete it:
146
63
 
147
64
  ```bash
148
- 10x get m1l1 --tool cursor
65
+ 10x_cli auth # Interactive: choose email or Circle
66
+ 10x_cli auth --method email # Email magic link; default for piped/JSON output
67
+ 10x_cli auth --method circle # One-time approval link delivered in Circle
68
+ 10x_cli auth --status
69
+ 10x_cli auth --logout
149
70
  ```
150
71
 
151
- The CLI will detect that artifacts from the old tool exist and offer three options:
152
-
153
- 1. **Migrate** (default) — transfer eligible managed files to the new profile, preserving modified or conflicting source files and their ownership.
154
- 2. **Delete** — remove only unchanged managed files with known hashes and no other owner; preserve user files and edits.
155
- 3. **Keep both** — retain the existing profile and dismiss its repeated orphan prompt.
156
-
157
- Tool switching cannot change a project's course edition. If profiles disagree about the course or a manifest is corrupt, preserve the files and resolve that conflict before writing.
158
-
159
- The tool choice is saved in the config file (`~/.config/10x-cli/config.json` on macOS/Linux, `%APPDATA%/10x-cli/config.json` on Windows). Future `get` commands will use the new tool without needing `--tool` again.
160
-
161
- ---
162
-
163
- ## Platform-Specific Tips
164
-
165
- ### Windows
166
-
167
- - **Use PowerShell** (not cmd.exe). The CLI outputs ANSI colors and Unicode symbols that render correctly in Windows Terminal + PowerShell but may garble in legacy cmd.
168
- - **npx works fine**: `npx @przeprogramowani/10x-cli get m1l1` — no global install needed. Node 20+ is the only prerequisite.
169
- - **Clipboard**: Skills that copy to clipboard use `clip.exe` on Windows. If a skill outputs a clipboard command, it will fall back silently if `clip.exe` is unavailable.
170
- - **Config location**: `%APPDATA%\10x-cli\config.json` and `%APPDATA%\10x-cli\auth.json`. The CLI creates these automatically.
171
- - **Path separators**: The CLI uses Node's `path.join()` internally, so forward slashes in command output (like `.claude/skills/code-review/SKILL.md`) work fine on Windows — no need to convert them.
172
-
173
- ### Linux
174
-
175
- - **Clipboard**: Skills use `xclip -selection clipboard` or `xsel --clipboard`. If neither is installed, clipboard operations fail silently. Install with `sudo apt install xclip` (Debian/Ubuntu) or `sudo dnf install xclip` (Fedora).
176
- - **Config location**: `~/.config/10x-cli/` (respects `$XDG_CONFIG_HOME` if set).
177
-
178
- ### macOS
179
-
180
- - **Clipboard**: Skills use `pbcopy` — works out of the box.
181
- - **Config location**: `~/.config/10x-cli/`.
182
-
183
- ---
184
-
185
- ## Troubleshooting
72
+ Circle is useful when the email does not arrive. The approval link expires after
73
+ 15 minutes; the CLI does not resend it automatically. In non-interactive mode,
74
+ provide the user's email with `--email` and choose `--method circle` explicitly.
75
+ Do not send a login message until the user requests authentication. Sessions
76
+ refresh transparently; re-login is needed only when refresh cannot recover them.
186
77
 
187
- When the user reports a problem, follow this sequence:
78
+ ## Download
188
79
 
189
- ### 1. Run doctor first
80
+ The launch exercise follows lesson 1, “Od pomysłu do PRD”, using its existing
81
+ 10xCards example. `10x-plan` is not part of this launch demonstration.
82
+ Prepare all four lesson skills: `10x-idea-check`, `10x-init`, `10x-shape` and
83
+ `10x-prd`. Idea assessment is optional to run; its files should still be available
84
+ when preparing lesson 1. If the user requested only a specific skill, retain that
85
+ narrower scope. After checking each name's capability and availability, download
86
+ four separate complete selected skill trees. Inspect each dry-run before its corresponding write:
190
87
 
191
88
  ```bash
192
- 10x doctor
89
+ 10x_cli get m1l1 --type skills --name 10x-idea-check --course 10xdevs4 --tool claude-code --lang pl --dry-run
90
+ 10x_cli get m1l1 --type skills --name 10x-idea-check --course 10xdevs4 --tool claude-code --lang pl
91
+ 10x_cli get m1l1 --type skills --name 10x-init --course 10xdevs4 --tool claude-code --lang pl --dry-run
92
+ 10x_cli get m1l1 --type skills --name 10x-init --course 10xdevs4 --tool claude-code --lang pl
93
+ 10x_cli get m1l1 --type skills --name 10x-shape --course 10xdevs4 --tool claude-code --lang pl --dry-run
94
+ 10x_cli get m1l1 --type skills --name 10x-shape --course 10xdevs4 --tool claude-code --lang pl
95
+ 10x_cli get m1l1 --type skills --name 10x-prd --course 10xdevs4 --tool claude-code --lang pl --dry-run
96
+ 10x_cli get m1l1 --type skills --name 10x-prd --course 10xdevs4 --tool claude-code --lang pl
193
97
  ```
194
98
 
195
- This catches the most common issues. Read the output and address each failing check.
196
-
197
- ### 2. Common problems and fixes
198
-
199
- | Symptom | Likely cause | Fix |
200
- |---------|-------------|-----|
201
- | "You're not signed in" | No auth or expired session | `10x auth` |
202
- | "Session expired" | Token past expiry and auto-refresh failed | `10x auth` (re-login) |
203
- | No email received after `10x auth` | Magic link filtered or delayed | `10x auth --method circle` — approval link arrives as a Circle message |
204
- | "Circle login is currently unavailable" (`circle_login_disabled`) | Circle channel switched off server-side | `10x auth --method email` |
205
- | "Circle refused to deliver the login message" (`dm_rejected`) | Direct messages disabled in Circle settings | Enable DMs in Circle, or `10x auth --method email` |
206
- | "The Circle login expired" (`circle_login_expired`) | Approval link not opened within 15 minutes | `10x auth --method circle` again, or `10x auth --method email` |
207
- | API unreachable / timeout | Network issue or API outage | Check internet; retry in a few minutes |
208
- | "Module is locked" | Content not yet released | `10x list` to see unlock date |
209
- | `.claude/` not found (doctor fail) | Running from wrong directory or wrong tool profile | `cd` to project root; check `10x doctor --json` for which tool is configured |
210
- | "403 Forbidden" on `10x get` | Module locked or no membership | Check `10x list` for module state; verify enrollment |
211
- | Orphaned artifact prompt on `get` | Switching tools mid-lesson | Choose "migrate" to move files, or "delete" to clean up |
212
- | Permission denied writing files | Directory not writable | Check directory permissions; on POSIX: `chmod u+w <dir>` |
213
-
214
- ### 3. Verbose mode for deeper debugging
99
+ Inspect each report and the complete supporting tree, not just SKILL.md. In the
100
+ chosen macOS/zsh exercise directory, each of these checks must succeed before use
101
+ (stop on any failure; do not infer success from the last check alone):
215
102
 
216
103
  ```bash
217
- 10x get m1l1 --verbose
218
- 10x doctor --verbose
104
+ test -s .claude/skills/10x-idea-check/SKILL.md
105
+ test -s .claude/skills/10x-idea-check/references/examples.md
106
+ test -s .claude/skills/10x-idea-check/references/assessment-guide.md
107
+ test -s .claude/skills/10x-idea-check/references/10xdevs-4-dates.md
108
+ test -s .claude/skills/10x-idea-check/references/10xdevs-4-certification.md
109
+ test -s .claude/skills/10x-init/SKILL.md
110
+ test -s .claude/skills/10x-shape/SKILL.md
111
+ test -s .claude/skills/10x-shape/references/prd-schema.md
112
+ test -s .claude/skills/10x-prd/SKILL.md
113
+ test -s .claude/skills/10x-prd/../10x-shape/references/prd-schema.md
219
114
  ```
220
115
 
221
- This prints request/response diagnostics to stderr, useful for diagnosing API or network issues.
222
-
223
- ### 4. Nuclear reset
116
+ The PRD entrypoint resolves `../10x-shape/references/prd-schema.md` relative to its
117
+ own directory. A standalone PRD tree is insufficient. Read all installed
118
+ entrypoints and every reference they require; the paths above are the known
119
+ source minimum, not permission to discard extra files from a published bundle.
120
+ Also inspect `.claude/.10x-cli-manifest.json`: `lessons.m1l1.skills` must include
121
+ all four names, with file hashes in `files.skills`. These are lesson-owned
122
+ partial downloads, not independent owners. Inspect `.10x-cli.json` for the course
123
+ binding; partial downloads do not establish a complete lesson release identity.
124
+
125
+ CLI 1.21.0 is published with v4 and filtered skill downloads; production m1l1 EN/PL
126
+ contains idea-check/init/shape/prd and their references. These revised helpers are a separate
127
+ source change, not proof that their course copies have been published.
128
+ Verify all four names against the actual selected release. If any name, schema,
129
+ owner or release is missing/mismatched, preserve the precise error and stop the
130
+ exercise; never silently substitute a whole lesson, another course or filtered get.
131
+
132
+ `CLAUDE-m1l1` is a separate lesson rule, not delivered by these filtered skill gets.
133
+ The inspected init/shape/prd sources do not require that rule to run this chain.
134
+ This does not establish that every step of the full lesson works without it.
135
+ Use the learner's existing lesson 1 inputs and instructions: if they require the
136
+ rule, inspect the existing project rule and its provenance. If absent, report the
137
+ missing prerequisite and obtain the supported route from the lesson/release owner
138
+ before that step. Do not invent a rule command or download a full lesson to bypass
139
+ it. Do not overwrite an existing project rule.
140
+
141
+ For browsing use `10x_cli list m1 --course 10xdevs4`. The commands above filter
142
+ one lesson by skill name; `get 10x-init` is not supported. `--print` is inspection:
143
+ TTY Markdown can contain only SKILL.md; non-TTY output is a JSON envelope. Never
144
+ redirect print output into SKILL.md as a package installation.
145
+
146
+ ## Use: 10xCards, from idea to PRD
147
+
148
+ Downloading the trees is only preparation. Use the existing 10xCards example and
149
+ the learner's actual answers from lesson 1. If those inputs are absent, ask for
150
+ them; do not invent product requirements, a replacement task.md or a ready-made
151
+ plan. Keep private lesson text out of public fixtures and transcripts.
152
+ Do not assume native slash/$ discovery or automatic activation from npm install.
153
+ Give the agent explicit local paths. If the learner wants to assess whether an
154
+ idea fits their experience, time and course goals, first read
155
+ `.claude/skills/10x-idea-check/SKILL.md` and its references and follow that skill.
156
+ Do not make assessment a prerequisite when the learner is ready to shape.
157
+ Then work through these steps separately:
158
+
159
+ 1. Read `.claude/skills/10x-init/SKILL.md` and follow it in the chosen project.
160
+ Inspect the create-if-absent context/changes, context/archive and
161
+ context/foundation directories and their READMEs. Preserve existing files.
162
+ 2. Read `.claude/skills/10x-shape/SKILL.md` and
163
+ `.claude/skills/10x-shape/references/prd-schema.md`. Follow the skill's discovery
164
+ with the learner's 10xCards inputs. Let the learner answer and approve the
165
+ checkpoint; do not answer for them. Inspect
166
+ `context/foundation/shape-notes.md` against those answers before proceeding.
167
+ 3. Read `.claude/skills/10x-prd/SKILL.md` and its sibling schema, then generate the
168
+ draft from the actual `context/foundation/shape-notes.md`. Inspect
169
+ `context/foundation/prd.md` against that input and the installed schema;
170
+ unresolved domain choices stay open. Respect the skill's existing-file
171
+ collision choice (a versioned file may be the appropriate result).
172
+
173
+ Success requires the learner's notes and a schema-conformant PRD, with gaps
174
+ explicit and original project work preserved. A transcript of downloads alone
175
+ is insufficient. Stop after reviewing the PRD; do not chain into stack selection,
176
+ bootstrap or implementation. If a different global/local skill copy was read,
177
+ correct the path before accepting the result. Record the actual agent, profile,
178
+ language, output paths and checks; use a fresh isolated exercise directory for the
179
+ two canonical output filenames instead of forcing an overwrite.
180
+
181
+ ## Update
182
+
183
+ Use the same runner, directory, course, tool and language. Sync updates entire
184
+ downloaded lessons, including m1l1 after these filtered gets. Its preview may
185
+ include other skills, prompts, configs and course rules. Inspect that expanded
186
+ scope and apply only when the user accepts it; to update only one skill, repeat
187
+ its filtered preview/get instead. Do not use sync as a hidden rule prerequisite
188
+ workaround:
224
189
 
225
- If config is corrupted:
226
-
227
- On macOS/Linux:
228
190
  ```bash
229
- rm -rf ~/.config/10x-cli
230
- 10x auth
231
- ```
232
-
233
- On Windows (PowerShell):
234
- ```powershell
235
- Remove-Item -Recurse -Force "$env:APPDATA\10x-cli"
236
- 10x auth
191
+ 10x_cli sync --course 10xdevs4 --tool claude-code --lang pl --dry-run
192
+ 10x_cli sync --course 10xdevs4 --tool claude-code --lang pl
237
193
  ```
238
194
 
239
- This clears auth and tool preference. The next `10x auth` recreates everything.
240
-
241
- ---
242
-
243
- ## Important Principles
244
-
245
- - **Answer with the user's OS and tool in mind.** Never show `pbcopy` to a Windows user. Never show `%APPDATA%` to a macOS user.
246
- - **Run `10x doctor` before speculating.** It catches 80% of issues.
247
- - **Don't guess command syntax from memory.** If unsure about a flag or behavior, fetch the latest README: `https://raw.githubusercontent.com/przeprogramowani/10x-cli/refs/heads/master/README.md`
248
- - **Distinguish tool profile issues from CLI issues.** If artifacts land in the wrong directory, it is a tool profile question. If the command itself fails, it is a CLI/auth/network question.
249
-
250
- ## Course selection and project edition
251
-
252
- `get`, `list`, and `sync` select the explicit `--course` first, then the project's edition, then the live API recommendation. A new project with only v3 access selects v3, with only v4 selects v4, and with both selects published, available v4. An unpublished v4 can leave v3 as the recommendation; network or backend failures are reported instead of falling back. Output includes the course and selection reason.
253
-
254
- The first validated write records `{ "version": 1, "course": "10xdevs4" }` (or `10xdevs3`) in the root `.10x-cli.json`, shared across AI tool profiles. Existing supported v2/v3 manifests preserve their recorded edition. All profiles, including legacy Windsurf, must agree. Corrupt, unknown-version, or conflicting manifests block writes and must be preserved for repair. Artifact names never infer an edition.
255
-
256
- Ordinary `get` and `sync` cannot change a bound project's edition. Start v4 in a separate directory while retaining the v3 project. Read-only inspection of another entitled edition is allowed with `--course`. Do not delete the binding or manifests to bypass an edition conflict. Course edition and manifest schema version are separate concepts.
257
-
258
- `list`, `get --print`, `get --dry-run`, `sync --dry-run`, and `doctor` preserve project files and tool/language preferences, including interactive tool choices. Auth token rotation may update only the credential store. Failed download, signature, course, or path validation leaves a new project unbound. Once writing starts, its binding remains even if an I/O operation fails, so retry stays on the same edition. `auth --status` and `doctor` distinguish token expiry from live course access.
259
-
260
-
261
- ## v3 compatibility and v4 rollout
262
-
263
- Upgrade the CLI to use v4 capabilities. Existing v3 users can continue `auth`,
264
- `list`, `get` and `sync` without compulsory course flags or project migration.
265
- A new v4 purchase does not switch a bound v3 project; create a separate directory
266
- for v4. Complete skill directories are installed, including references and scripts;
267
- `--print` in human mode shows only `SKILL.md` and explains how to download the rest.
268
-
269
- The first v4 delivery release does not include a course-edition migration command.
270
- Do not recommend deleting a binding or manifest to force another edition. Warnings
271
- about using old binaries on edition-migrated projects belong to the later migration
272
- release. If v4 is unavailable, distinguish its publication/unlock state from course
273
- membership; do not claim that reinstalling or changing a tool grants access.
195
+ Normal sync refreshes the full lessons recorded in the manifest, not just the
196
+ four selected skills. `--all` broadens scope to unlocked lessons and is not needed
197
+ for this exercise. Missing managed files should be repaired; local edits should
198
+ remain visible as conflicts or preserved files. Read all report outcomes and
199
+ resource counts even if exit is 0: skipped conflicts alone are not process errors.
200
+ Do not equate an unchanged remote digest with intact local files.
201
+
202
+ For one conflicting skill, inspect the diff and back up local work before retrying
203
+ its filtered get in an interactive terminal with the same course/tool/lang. Preserve
204
+ the user's resolution choice. If a CLI hint omits context, restore these flags in
205
+ your proposed command. Never run automatic `--force`; it can overwrite local
206
+ skill/prompt edits and does not bypass protected rules or safe removal. Config
207
+ templates remain create-only. Cleanup preserves modified/untracked files and
208
+ files owned elsewhere; do not manually sweep a skill directory after sync.
209
+
210
+ Three updates are independent: changing the npm/binary version updates the CLI;
211
+ repeating pinned public `skills add` with a deliberately chosen new retained SHA
212
+ updates a public helper; CLI sync updates CLI-owned course skills. It does not
213
+ update the executable or public installer-owned helper copies.
214
+
215
+ ## Channels: both helpers are available through two routes
216
+
217
+ The public on-demand route works before CLI/auth and installs one project helper
218
+ at a selected source SHA. The CLI route uses authenticated filtered get once helper
219
+ content is published and m1l1 is accessible. Follow the exact commands and guards
220
+ in the reference for `10x-cli-setup` and `10x-cli-guide`; install only what is needed.
221
+ Both routes deliver each helper's own `references/compatibility.md`.
222
+
223
+ Use one owner per installed copy. Inspect destination paths/symlinks, CLI manifest
224
+ and the public installer's project registration before writing. If a helper is
225
+ already CLI-owned, use that copy and sync. For a public→CLI takeover, back up the
226
+ whole helper and metadata outside managed trees, unregister only that helper using
227
+ the original pinned installer's project/agent remove flow, verify registration and
228
+ destination are absent, then filtered get. Merge local edits consciously from backup.
229
+ If either owner remains, stop the takeover. CLI→public has no verified per-skill
230
+ unregister contract: use a new isolated project instead of hand-editing manifests.
231
+
232
+ ## Profiles and troubleshooting
233
+
234
+ Full skill trees land under the selected profile's `skills/<canonical-name>/`:
235
+
236
+ | Profile | Tool directory | Rules file for full lesson delivery |
237
+ |---|---|---|
238
+ | claude-code | `.claude/` | `CLAUDE.md` |
239
+ | cursor | `.cursor/` | `.cursor/rules/10x-course.mdc` |
240
+ | copilot | `.github/` | `.github/copilot-instructions.md` |
241
+ | codex | `.agents/` | `AGENTS.md` |
242
+ | devin-desktop | `.devin/` | `AGENTS.md` |
243
+ | gemini | `.gemini/` | `GEMINI.md` |
244
+ | generic | `.ai/` | `AGENTS.md` |
245
+
246
+ Profile changes may offer migrate, delete eligible managed files, or keep both;
247
+ none means deleting arbitrary user content or switching the course edition.
248
+ Legacy windsurf aliases and orphan handling should follow the selected version's
249
+ help/output. These path mappings are not evidence of a completed Windows or
250
+ other-agent walkthrough. Translate shell syntax to the user's actual shell.
251
+
252
+ Run `10x_cli doctor --json` when diagnosis is useful; inspect its complete
253
+ `data.overall` and `data.checks` as well as exit status. It checks the configured
254
+ profile, not a `--tool` or `--course` argument. Before first get, a missing tool
255
+ directory can be expected; explain only that failure and keep other failures
256
+ visible. Doctor exit 78 can coexist with outer JSON `status: "ok"`.
257
+
258
+ | Symptom | Next step |
259
+ |---|---|
260
+ | Missing/expired auth | Inspect auth status and live-access result; let the user complete login through setup. Login may send email. |
261
+ | No email received | Offer `10x_cli auth --method circle`; let the user request the message. |
262
+ | `circle_login_disabled` | Circle is unavailable; use `10x_cli auth --method email`. |
263
+ | `dm_rejected` | Enable Circle direct messages or use email login. |
264
+ | `circle_login_expired` | Ask for a fresh Circle login or use email; never auto-resend. |
265
+ | Denied course access | Confirm selected course and membership; changing tool/reinstalling does not grant access. |
266
+ | Locked or unpublished v4 | Inspect module availability/release evidence; do not bypass the gate or fall back to v3. |
267
+ | Unsupported name/missing index | Verify exact CLI package and content release; preserve the error for the release owner. |
268
+ | Network/API failure | Keep diagnostics, retry the same context when service returns; no config reset. |
269
+ | Missing `10x-idea-check` after setup | Older helper journeys selected only init/shape/prd. Check the actual commands, selected profile path and manifest; use the idea-check preview/get above to add its complete tree. If the files already exist, read that exact SKILL.md and check the agent's discovery/reload behavior before reinstalling. An absent slash command alone does not prove missing files. |
270
+ | Wrong directory/profile | Recheck cwd and explicit flags; a fresh project may legitimately have no tool directory. |
271
+ | Signature/release mismatch | Preserve failure and source identity; do not disable verification or reuse unrelated bytes. |
272
+ | Edition/manifest conflict | Preserve binding and manifests for repair; use a separate v4 project rather than deleting them. |
273
+ | File conflict or permission failure | Inspect affected paths and local edits, retain backup and resolve the specific issue. No broad chmod/reset/force. |
274
+
275
+ Use `--verbose` only when needed, and redact credentials before sharing diagnostics.
276
+ For unrelated day-to-day commands such as `bench`, inspect this runner's matching
277
+ help; do not fetch arbitrary master README as an authority for an older binary.