@przeprogramowani/10x-cli 1.20.0 → 1.21.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -44,7 +44,7 @@ Once installed, just tell your agent to **set up 10x-cli** and it will pick up t
44
44
  ## Quick Start
45
45
 
46
46
  ```bash
47
- 10x auth # Authenticate with your email
47
+ 10x auth # Authenticate with your email (magic link or Circle message)
48
48
  10x list # Browse available modules and lessons
49
49
  10x get m1l1 # Fetch and apply lesson artifacts
50
50
  10x sync # Update everything you've downloaded; show what changed
@@ -57,6 +57,7 @@ Once installed, just tell your agent to **set up 10x-cli** and it will pick up t
57
57
  | Command | Description |
58
58
  |---------|-------------|
59
59
  | `10x auth` | Magic-link login with your Circle-registered email |
60
+ | `10x auth --method circle` | No email received? Get the approval link as a Circle message instead |
60
61
  | `10x list` | Browse modules and lessons in your course |
61
62
  | `10x get <ref>` | Fetch a lesson and apply artifacts to your workspace |
62
63
  | `10x sync` | Bulk-download / refresh lessons and report what changed upstream |
@@ -73,8 +74,8 @@ Once installed, just tell your agent to **set up 10x-cli** and it will pick up t
73
74
  | `--type <type>` | Filter by artifact type: `skills`, `prompts`, `rules`, `configs` |
74
75
  | `--name <name>` | Filter by artifact name (requires `--type`) |
75
76
  | `--dry-run` | Show what would be written without touching the filesystem |
76
- | `--course <slug>` | Override the course slug (default: `10xdevs3`) |
77
- | `--no-course-rules` | Skip the course rules block in your rules file (`CLAUDE.md`/`AGENTS.md`); strips an existing one. Use `--course-rules` to re-enable. |
77
+ | `--course <slug>` | Select an entitled course ID or slug; default is the project edition or API recommendation |
78
+ | `--no-course-rules` | Skip the course rules block in your rules file (`CLAUDE.md`/`AGENTS.md`); removes an unchanged block whose ownership and baseline are known. Use `--course-rules` to re-enable. |
78
79
 
79
80
  #### Examples
80
81
 
@@ -96,7 +97,7 @@ Once installed, just tell your agent to **set up 10x-cli** and it will pick up t
96
97
  10x get m1l1 --tool cursor
97
98
 
98
99
  # Skip the course rules block (use only your rules). Persisted across runs;
99
- # a previously-applied block is stripped. Re-enable later with --course-rules.
100
+ # an unchanged block with a known baseline is removed. Re-enable later with --course-rules.
100
101
  10x get m1l1 --no-course-rules
101
102
  10x get m1l2 --course-rules
102
103
 
@@ -117,17 +118,17 @@ already downloaded; `--all` pulls every unlocked lesson at once.
117
118
 
118
119
  Unchanged lessons are skipped **without a download** — the catalog advertises a
119
120
  per-lesson `contentHash` that the CLI compares against what it last applied, so the
120
- common "nothing changed" case is a single catalog request.
121
+ common "nothing changed" case avoids lesson downloads. Skipping also requires the same language/tool/rules representation and intact tracked local files; missing files are repaired and local edits still surface as conflicts.
121
122
 
122
123
  | Flag | Description |
123
124
  |------|-------------|
124
125
  | `--all` | Sync every unlocked lesson, not just the ones you've downloaded |
125
126
  | `--module <m>` | Limit to one module (e.g. `m2` or `2`) |
126
127
  | `--dry-run` | Preview what would change without writing anything |
127
- | `--force` | Ignore the cheap-skip digest and overwrite local edits with upstream |
128
+ | `--force` | Fetch again and overwrite local skill/prompt edits; protected rules and config templates remain guarded |
128
129
  | `--tool <tool>` | AI coding tool (same set as `get`) |
129
130
  | `--lang <lang>` | Content language: `en` (default) or `pl` |
130
- | `--course <slug>` | Override the course slug (default: `10xdevs3`) |
131
+ | `--course <slug>` | Select an entitled course ID or slug; default is the project edition or API recommendation |
131
132
  | `--no-course-rules` | Skip the course rules block (same semantics as `get`) |
132
133
 
133
134
  ```bash
@@ -158,9 +159,7 @@ m2l3 — conflicts (1 skipped)
158
159
  ```
159
160
 
160
161
  Run that `10x get …` to take a single update, or `10x sync --force` to take them
161
- all. **Change visibility covers skills and prompts** — configs are create-only
162
- (never overwritten) and rules are sentinel-managed, so they aren't part of the
163
- "what changed" report.
162
+ all for skills and prompts. Config templates are create-only. Course rules retain a separate upstream baseline: local edits or a missing baseline require explicit resolution, including when `--force` or `--no-course-rules` is used. Text outside the managed markers is preserved.
164
163
 
165
164
  **Exit code is worst-outcome:** `0` when everything is clean/unchanged (a skipped
166
165
  conflict is reported, not a failure), `1` if any lesson failed to fetch. The full
@@ -243,7 +242,7 @@ On first run, the CLI prompts you to choose your AI coding tool. Artifacts are w
243
242
  | Gemini CLI | `.gemini/` | `GEMINI.md` |
244
243
  | Generic | `.ai/` | `AGENTS.md` |
245
244
 
246
- Override anytime with `--tool <name>`. Your choice is saved in `~/.config/10x-cli/config.json`.
245
+ Override with `--tool <name>`. Validated writing commands save your choice in `~/.config/10x-cli/config.json`. Previews leave it unchanged.
247
246
  The former `windsurf` ID remains accepted as an alias and is upgraded to
248
247
  `devin-desktop`; existing `.windsurf/` artifacts can be migrated by the normal
249
248
  tool-switch prompt.
@@ -272,3 +271,46 @@ CI runs lint, typecheck, tests, and build checks on every PR. Releases are autom
272
271
  ## License
273
272
 
274
273
  MIT
274
+
275
+ ## Course selection and project edition
276
+
277
+ `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.
278
+
279
+ 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.
280
+
281
+ 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.
282
+
283
+ `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.
284
+
285
+
286
+ ## Candidate verification and v4 release
287
+
288
+ Using v4 requires a CLI version with course discovery and project edition binding.
289
+ Existing v3 projects remain usable without a new flag or an edition migration.
290
+ Start v4 in a separate project directory; this release includes no edition migration
291
+ command. Support files inside each skill directory are downloaded together with
292
+ `SKILL.md`, including selector and stack-assessment references.
293
+
294
+ Before publication, CI tests the exact CLI and Toolkit candidate commits together
295
+ on Linux and Windows using real local auth callback, polling and token refresh.
296
+ It also exercises the actual released npm 1.20.0 CLI against the candidate API and
297
+ this candidate against existing v2/v3-manifest projects. Automated fixtures send no
298
+ emails. npm latest or a different branch cannot stand in for the candidate binary.
299
+
300
+ The private Toolkit release runbook `docs/how-to/release-10xdevs4-cli.md` documents
301
+ the required full candidate SHA pair, vetted v3 fixture artifact, exact v4 stage
302
+ and secured preparation Worker/content revisions. Publication depends on the
303
+ coordinated gate plus normal Linux/Windows tests, builds and smoke checks. The
304
+ operator must still verify secured production access and final v4 content before
305
+ npm publication; passing a local test does not execute that rollout.
306
+
307
+ For deterministic contract checks, export `/openapi.json` from the exact local
308
+ candidate Worker, then run:
309
+
310
+ ```bash
311
+ OPENAPI_SPEC_PATH=/absolute/candidate-openapi.json bun run generate-types --check
312
+ ```
313
+
314
+ Check mode reads that file and compares the generated result without changing
315
+ `src/generated/api-types.ts`. To regenerate, omit `--check` while keeping the same
316
+ source file. Do not regenerate candidate contracts from the production API.