wicked-crew-api-types 0.33.0 → 0.34.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.
Files changed (2) hide show
  1. package/index.d.ts +50 -4
  2. package/package.json +2 -2
package/index.d.ts CHANGED
@@ -1785,6 +1785,40 @@ export interface SkillBaselineRecord {
1785
1785
  venv: SkillVenvState;
1786
1786
  }
1787
1787
 
1788
+ /**
1789
+ * Why a skill's text cannot be followed on a non-Claude CLI (F-079, api-types 0.34.0; design W4
1790
+ * §5.1 — the same tokens wicked-garden's own lint reports):
1791
+ *
1792
+ * - `plugin-root` — the text contains `${CLAUDE_PLUGIN_ROOT}` (only Claude Code substitutes it);
1793
+ * - `skill-dir-var` — the text contains `${CLAUDE_SKILL_DIR}` (likewise Claude-only);
1794
+ * - `cwd-script` — an interpreter invokes a plugin script by a path relative to the worktree cwd
1795
+ * (`python3 scripts/domain/extract_loop.py`) instead of the `wicked-garden run …` launcher;
1796
+ * - `relative-link` — a `../` link whose target exists in the bundle (the flat `<name>/SKILL.md`
1797
+ * layout of every non-Claude install cannot follow it);
1798
+ * - `cross-skill-path` — a path (plugin-root or `../`) that lands in ANOTHER skill's directory;
1799
+ * the portable form names that skill (`wicked-garden-<x>`) instead;
1800
+ * - `requires-harness:claude` — the author declared `metadata.requires-harness: claude` in the
1801
+ * frontmatter: the skill genuinely needs the Claude harness (not an authoring defect).
1802
+ */
1803
+ export type SkillPortabilityReason =
1804
+ | 'plugin-root'
1805
+ | 'skill-dir-var'
1806
+ | 'cwd-script'
1807
+ | 'relative-link'
1808
+ | 'cross-skill-path'
1809
+ | 'requires-harness:claude';
1810
+
1811
+ /** Per-reason portability of a skill (F-079, api-types 0.34.0) — reported beside `portable`. */
1812
+ export interface SkillPortability {
1813
+ /** The same value as `SkillEntry.portable`: `reasons.length === 0`. */
1814
+ portable: boolean;
1815
+ /** Sorted, unique. Empty when portable. */
1816
+ reasons: SkillPortabilityReason[];
1817
+ /** Up to five anchors, `<plugin-relative file>:<line>`, one per hit in file order — where the
1818
+ * offending text sits (the drawer's "why" and the operator's path to the line). */
1819
+ evidence?: string[];
1820
+ }
1821
+
1788
1822
  export interface SkillEntry {
1789
1823
  /** Plugin-relative directory, nested layout preserved (`skills/engineering/frontend`). Never
1790
1824
  * renamed — sibling `../` links depend on it. */
@@ -1794,11 +1828,17 @@ export interface SkillEntry {
1794
1828
  * daemon knows (core drop-ins, crew-generated, user-registered) or a skill one of those names in
1795
1829
  * its SKILL.md (repo-learn → search, mem). Disabling or renaming it is blocking. */
1796
1830
  core: boolean;
1797
- /** `false` when the skill's files resolve `${CLAUDE_PLUGIN_ROOT}`, invoke a script relative to
1798
- * the cwd (`python3 -u scripts/x.py`, `./scripts/x`, …), or link `../` — Claude-only by nature:
1799
- * excluded from the snapshot's `views/copilot/` and from the per-launch skill lists core builds
1800
- * for the other CLIs. `portable` is the admission key for every non-Claude view (design v3.2). */
1831
+ /** `false` when the skill's files carry any `SkillPortabilityReason` — Claude-only: excluded from
1832
+ * the snapshot's `views/copilot/` and from the per-launch skill lists core builds for the other
1833
+ * CLIs. `portable` is the admission key for every non-Claude view (design v3.2); the reasons
1834
+ * are reported per token in `portability` (api-types 0.34.0). wicked-garden ≥ 12.33 authors
1835
+ * every skill portably, so a non-portable row there is either an older garden or a skill that
1836
+ * declares `requires-harness: claude`. */
1801
1837
  portable: boolean;
1838
+ /** Per-reason portability (F-079, api-types 0.34.0): `portable` again, the sorted unique
1839
+ * `reasons`, and up to five `file:line` anchors. Absent on manifests written by a daemon older
1840
+ * than 0.7.30 — treat absence as "reasons unknown". */
1841
+ portability?: SkillPortability;
1802
1842
  /** Manifest state, orthogonal to content: a disabled skill's files stay in `effective/` and are
1803
1843
  * excluded from the next published snapshot. Reset never flips it. */
1804
1844
  enabled: boolean;
@@ -1917,6 +1957,9 @@ export type SkillFindingKind =
1917
1957
  | 'core-rename'
1918
1958
  | 'core-missing'
1919
1959
  | 'support-file-edit'
1960
+ /** A write made (or would make) the skill non-portable — a WARNING, one finding PER REASON per
1961
+ * file (api-types 0.34.0), anchored `file:line` at the first hit and carrying the token in
1962
+ * `portabilityReason`. The skill leaves every non-Claude delivery view. */
1920
1963
  | 'non-portable'
1921
1964
  /** A `${CLAUDE_PLUGIN_ROOT}/<p>` or `../<p>` reference in an enabled skill's files that does not
1922
1965
  * resolve inside the would-be snapshot. Severity follows the TARGET (design v3.4 §1): a reference
@@ -2002,6 +2045,9 @@ export interface SkillConflictFinding {
2002
2045
  evidence: string;
2003
2046
  /** Why it matters. */
2004
2047
  explanation: string;
2048
+ /** On a `non-portable` finding: WHICH reason this finding reports (one finding per reason per
2049
+ * file). Absent on every other kind (api-types 0.34.0). */
2050
+ portabilityReason?: SkillPortabilityReason;
2005
2051
  }
2006
2052
 
2007
2053
  /** `POST /skills/analyze` 200 body (a PURE dry run of the publish validation: nothing persisted,
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "wicked-crew-api-types",
3
- "version": "0.33.0",
4
- "description": "The wire contract of the wicked-crew daemon's /api/v1 REST surface and /ws CoreEvent frames \u2014 types only, zero runtime",
3
+ "version": "0.34.0",
4
+ "description": "The wire contract of the wicked-crew daemon's /api/v1 REST surface and /ws CoreEvent frames — types only, zero runtime",
5
5
  "type": "module",
6
6
  "types": "./index.d.ts",
7
7
  "exports": {