@profile-as-code/cli 0.3.0 → 0.3.5

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
@@ -15,11 +15,14 @@ pasco --version # the bin — prints the installed version
15
15
  The install adds one global bin and nothing else: no post-install script, no
16
16
  server, no account.
17
17
 
18
- > **Published** [OFICIAL] [WEB: registry.npmjs.org, checked 2026-10-09]:
18
+ > **Published** [OFICIAL] [WEB: registry.npmjs.org, checked 2026-10-12]:
19
19
  > `@profile-as-code/cli` is public on npm — the registry is the source of truth
20
- > (`npm view @profile-as-code/cli version`). The `0.2.0` release (published
21
- > 2026-10-09T23:25:23Z; tag `v0.2.0` → `c1ca30c`) was verified running
22
- > (`npx @profile-as-code/cli@0.2.0 --version` → `pasco 0.2.0`).
20
+ > (`npm view @profile-as-code/cli version`). The current release is `0.3.0`
21
+ > (published 2026-10-11T03:43:27Z, dist-tag `latest`; tag `v0.3.0` → `21e4cde`)
22
+ > and the bin was verified running (`node packages/cli/dist/index.js --version`
23
+ > → `pasco 0.3.0` on `main`, 2026-10-12) — a **local-build** check, not a run of the
24
+ > published tarball. No published version carries a
25
+ > provenance attestation while the source repo is private — documented, not pending.
23
26
  > Source install: [User Guide §2](../../docs/USER-GUIDE.md#2-install-the-pasco-cli).
24
27
 
25
28
  ## Get a workspace
@@ -56,27 +59,64 @@ commands above are the standalone path.
56
59
  |---|---|---|
57
60
  | `pasco init [dir]` | Scaffold a profile-data workspace (`content/identity.yaml`, `README.md`, `.pascorc`) — `pasco validate`-clean | ✅ |
58
61
  | `pasco validate [--json]` | Schema **fail** (exit 1) + drift/geo **warn** (exit 0) — D12 | ✅ |
59
- | `pasco build [platform] [--lang]` | Deterministic base texts per platform+lang; platforms with a renderer (github-readme, github-org, kofi) also write `profiles/<platform>/README.md` + bundled media in `profiles/<platform>/assets/` with `assets/manifest.json` (M8/§18.6 — public path-locator artifacts, sha256 at compile; see `docs/media-pipeline.md`). Empty render = no-trace unbuild of that platform's output (pure profiles/, §15.1 — v1.7) | ✅ |
62
+ | `pasco build [platform] [--lang]` | Deterministic base texts per platform+lang; platforms with a renderer (the eight registered in the generated renderer map) write `profiles/<platform>/README.md` + bundled media; renderer-less manual surfaces with a bio row write `profiles/<platform>.md` (#239). Empty render = no-trace unbuild of the generated output, preserving `profiles/<platform>/variants/` (chosen-variant input, #238; pure profiles/, §15.1 — v1.7). Media in `profiles/<platform>/assets/` + `assets/manifest.json` (M8/§18.6 — see `docs/media-pipeline.md`) | ✅ |
60
63
  | `pasco diff [--json]` | Changes since the last `release-*` tag (git-based → CHANGELOG hint) | ✅ |
61
- | `pasco status [platform] [--mark <ledgerKey> <surface>] [--write-checklist]` | Per-entry deploy report — origin · surfaces · in-sync/stale/never + ledger write path (D18, §19) | ✅ |
62
- | `pasco refine <platform> [--lang] [--variants N] [--choose <id>]` | Agent-driven variant flow (D10/D11/D13) | 🚧 template + `--choose` (full flow M3) |
63
- | `pasco check [platform]` | User checks from `content/checks.yaml` (schema-validated catalog) + registry rules (M7/§18.8) + media-transport rules (M8/§18.6) | 🚧 offline rules today (catalog M3/M4) |
64
- | `pasco skills:install <agent>` | Skills-studio projection command (AGOS) | 🚧 prints the projection command |
64
+ | `pasco status [platform] [--mark <ledgerKey> <surface>] [--verify] [--write-checklist] [--completeness]` | Per-entry deploy report — origin · surfaces · in-sync/stale/never · **certification** (verified/attested/unverifiable/out-of-band-drift, §19.5) + the derived **publication truth** per surface (§20.1, #242) + ledger write paths (D18, §19) | ✅ |
65
+ | `pasco refine <platform> [--lang] [--variants N] [--choose <id>]` | Agent-driven variant flow (D10/D11/D13); the chosen body is `profiles/<platform>/variants/<id>.md` (a complete platform artifact), rendered by `pasco build` (#238) | 🚧 template + `--choose` (full flow M3) |
66
+ | `pasco check [platform]` | User checks from `content/checks.yaml` (schema-validated catalog) + registry rules (M7/§18.8) + media-transport rules (M8/§18.6) + offline `max-chars`/`min-chars` over headlines/bios (#240) | 🚧 offline rules today (limits + registry + media; remaining catalog M3/M4) |
67
+ | `pasco post <seed\|task\|choose\|check\|export\|import\|list>` | Week-1 post MVP (#264): a seed at `posts/<seed>/seed.md` → task bundle → chosen variant → check → optional Postiz draft payload; the CLI never calls an LLM | 🚧 experiment (not in the v1 contract; `docs/post-mvp.md`) |
68
+ | `pasco skills:export <dir> [--force] [--list]` | Copy the platform skills this package ships into a directory you name (`--list` shows them; no per-agent paths are invented — #254) | ✅ |
65
69
 
66
70
  The partial commands are explicit, and each one says what still owns the rest:
67
71
 
68
72
  - **`refine`** — without `--choose` it emits the **agent task template** the
69
73
  executing agent works from (the CLI never calls an LLM and never wires the hub);
70
- `--choose` records the pick in `content/active.yaml`. The full variant flow is
71
- M3 (`src/commands/refine.ts`).
74
+ `--choose` records the pick in `content/active.yaml`. The platform skill ships
75
+ **inside this package**, so the template prints its real path on an npm install
76
+ (and says `no skill for <platform>` vs `skills not shipped` distinctly —
77
+ #253). The full variant flow is M3 (`src/commands/refine.ts`).
72
78
  - **`check`** — executes the offline rules that exist today: the brand handle
73
- matrix (brand flavor only, D15/§17), the evidence-registry checks (M7/§18.8)
74
- and the media-transport rules (M8/§18.6). The per-platform rows declared in
75
- `content/checks.yaml` are listed and reported as *not executed* — rule
76
- execution for those ships with the skills `checks.yaml` union (M3) and the full
77
- `pasco check` (M4). It prints its `owner` line (`src/commands/check.ts`).
78
- - **`skills:install`** — prints the skills-studio projection command; projecting
79
- is the studio's job (AGOS), not the CLI's (`src/commands/skills-install.ts`).
79
+ matrix (brand flavor only, D15/§17), the evidence-registry checks (M7/§18.8),
80
+ the media-transport rules (M8/§18.6), and the `max-chars` / `min-chars` rows
81
+ declared in `content/checks.yaml` over the headline/bio rows that exist
82
+ (offline, warn-class, #240). The remaining per-platform rules in the catalog
83
+ ship with the skills `checks.yaml` union (M3) and the full `pasco check` (M4).
84
+ It prints its `owner` line (`src/commands/check.ts`).
85
+ - **`skills:export`** — copies the platform skills this package ships into the
86
+ directory the user names (`--list` first; an existing non-empty directory needs
87
+ `--force`). It replaces the earlier projection stub: the CLI never invents a
88
+ per-agent destination and never points at tooling the reader cannot open
89
+ (`src/commands/skills-export.ts`, #254).
90
+ - **`post`** — the week-1 experiment (#264/#265): a CLI subcommand family over
91
+ the `posts/` store; it never calls an LLM, emits the agent task, records the
92
+ choice, checks limits/URLs/refs and exports a Postiz draft. It reads the
93
+ `skills/` bundled with the package (set `PASCO_SKILLS_DIR` only to point at a
94
+ custom tree), and it is **not part of the v1 contract yet** (`docs/post-mvp.md`).
95
+
96
+ ### Publication truth (derived — SPEC §20.1, #242)
97
+
98
+ The `status` report ends with one line per surface that has a ledger record or an
99
+ artifact on disk (`--completeness` prints the coverage phrase only; `--selection`
100
+ is a different view, and `--mark`/`--verify` are the write paths):
101
+
102
+ ```
103
+ github-readme: in-sync · artifact: matches-SSOT · limits: ok
104
+ ```
105
+
106
+ - `sync` — the §19 ledger (`in-sync` / `stale` / `never`), unchanged.
107
+ - `artifact` — the artifact on disk vs what the SSOT renders **today**
108
+ (`matches-SSOT` / `diverges` / `absent`). Offline: no fetch. `pasco build`
109
+ repairs a divergence; §19.5's `out-of-band-drift` (a live page that no longer
110
+ matches) forces `diverges` and is found by the opt-in `--verify`.
111
+ - `limits` — the offline `max-chars` catalog (§18.8/#240); the finding is printed
112
+ under the line with its cited source.
113
+
114
+ It is **derived and never stored**: `--json` carries it as the additive
115
+ `publication` array, `--completeness` folds it in as *coverage of publication*
116
+ (the weighted percentage never moves because a surface drifted), and
117
+ `--write-checklist` writes the coverage phrase into the generated `CHECKLIST.md`.
118
+ The path is `src/publication.ts` (one home for artifact resolution and the three
119
+ axes) and `src/limits.ts` (the cap executor `check` and `status` share).
80
120
 
81
121
  ## Usage
82
122
 
@@ -88,12 +128,23 @@ pasco build github-readme --lang en
88
128
  pasco diff
89
129
  pasco status # what's published where — per entry
90
130
  pasco status linkedin # filter one surface
91
- pasco status --mark identity linkedin # confirm a paste (records the current contentHash)
131
+ pasco status --mark identity linkedin # confirm a paste (records the current contentHash + attested)
132
+ pasco status --verify # §19.5 C1: does the live page still match? (the only network path)
133
+ # a surface with no extractor reports unverifiable: no-extractor
134
+ # (a DECLARED reason is stated, never written: only an attempt is recorded)
92
135
  pasco status --write-checklist # regenerate CHECKLIST.md from the ledger
136
+ pasco status # …also prints the derived publication-truth line:
137
+ # github-readme: in-sync · artifact: matches-SSOT · limits: ok
93
138
  pasco refine linkedin --variants 3 # emits the agent task template (full flow M3)
94
139
  pasco refine linkedin --choose li-en-2 # records the chosen variant in content/active.yaml
95
140
  pasco check github-readme
96
- pasco skills:install pi
141
+ pasco post seed demo --text seed.md # week-1 experiment: posts/<seed>/seed.md
142
+ pasco post task demo --channel linkedin,x # task bundles (no LLM call)
143
+ pasco post choose demo --channel linkedin --variant linkedin-1
144
+ pasco post check demo # limits + URLs + {{fact:...}} refs
145
+ pasco post export demo --target postiz # POST /posts draft payload
146
+ pasco skills:export --list # skill channels shipped with this package
147
+ pasco skills:export ./pasco-skills # copy them to a directory you choose
97
148
  ```
98
149
 
99
150
  ## Workspace resolution (D14)