@klickd/core 4.0.0 → 4.0.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/README.md CHANGED
@@ -110,6 +110,42 @@ const recovered = await loadKlickd(
110
110
 
111
111
  See `SPEC.md §33` and `examples/v4-preview/` for preview-track details.
112
112
 
113
+ ### Starter `.klickd` skills (v4.0 envelope — non-normative)
114
+
115
+ Four real, structured, downloadable starter `.klickd` skills ship under [`examples/v4/starter-skills/`](https://github.com/Davincc77/klickdskill/tree/main/examples/v4/starter-skills):
116
+
117
+ - [`user.klickd`](https://github.com/Davincc77/klickdskill/blob/main/examples/v4/starter-skills/user.klickd) — `x.klickd/user` (transversal base)
118
+ - [`student.klickd`](https://github.com/Davincc77/klickdskill/blob/main/examples/v4/starter-skills/student.klickd) — `x.klickd/student` (education)
119
+ - [`research.klickd`](https://github.com/Davincc77/klickdskill/blob/main/examples/v4/starter-skills/research.klickd) — `x.klickd/research` (research / evidence discipline)
120
+ - [`coding.klickd`](https://github.com/Davincc77/klickdskill/blob/main/examples/v4/starter-skills/coding.klickd) — `x.klickd/coding` (software engineering)
121
+
122
+ Each skill carries `base_transversal_core`, framework-anchored `competencies[]` (ESCO / DigComp / LifeComp / EQF / CEFR / SFIA), `levels[]`, `mastery[]` (pointer-only), `source_policy`, `evidence_policy`, `verification_gates`, `human_authority`, and a `structured_memory` slice scoped to `memory.x_klickd.<pack>`. They are **non-normative**, **do not claim v4.1 GA**, and trigger **no release**. SHA-256 manifest in [`manifest.json`](https://github.com/Davincc77/klickdskill/blob/main/examples/v4/starter-skills/manifest.json); offline verifier `scripts/verify_starter_skills.py`.
123
+
124
+ #### Bundled in `@klickd/core` 4.0.1
125
+
126
+ Starting with **`@klickd/core` 4.0.1** (a packaging-only patch — the stable
127
+ spec release remains **v4.0.0**), these four starter `.klickd` skills are
128
+ shipped inside the npm tarball under `starter-skills/` and exposed through a
129
+ small helper API. The on-the-wire `.klickd` format, the bundled JSON schemas,
130
+ and the spec are unchanged from v4.0.0. This patch does **not** ship any v4.1
131
+ material and does **not** carry any Chimera branding.
132
+
133
+ ```typescript
134
+ import {
135
+ listStarterSkills,
136
+ getStarterSkillBytes,
137
+ getStarterSkillsManifest,
138
+ getStarterSkillsDir,
139
+ } from '@klickd/core';
140
+
141
+ listStarterSkills();
142
+ // → ['coding.klickd', 'research.klickd', 'student.klickd', 'user.klickd']
143
+
144
+ const bytes = getStarterSkillBytes('user.klickd');
145
+ const manifest = getStarterSkillsManifest();
146
+ const dir = getStarterSkillsDir(); // absolute path to bundled starter-skills/
147
+ ```
148
+
113
149
  ---
114
150
 
115
151
  ## Cryptographic specification (v3.0)
package/dist/index.cjs CHANGED
@@ -33,7 +33,11 @@ __export(index_exports, {
33
33
  HTTP_STATUS: () => HTTP_STATUS,
34
34
  KlickdError: () => KlickdError,
35
35
  getBundledSchema: () => getBundledSchema,
36
+ getStarterSkillBytes: () => getStarterSkillBytes,
37
+ getStarterSkillsDir: () => getStarterSkillsDir,
38
+ getStarterSkillsManifest: () => getStarterSkillsManifest,
36
39
  listBundledSchemas: () => listBundledSchemas,
40
+ listStarterSkills: () => listStarterSkills,
37
41
  loadKlickd: () => loadKlickd,
38
42
  migratePayload: () => migratePayload,
39
43
  migratePayloadIterWarnings: () => migratePayloadIterWarnings,
@@ -576,12 +580,45 @@ function migratePayloadIterWarnings(payload) {
576
580
  }
577
581
  return warnings;
578
582
  }
583
+
584
+ // src/starter-skills.ts
585
+ var import_node_url = require("url");
586
+ var import_node_path = require("path");
587
+ var import_node_fs = require("fs");
588
+ var import_meta = {};
589
+ function starterSkillsDir() {
590
+ const here = (0, import_node_path.dirname)((0, import_node_url.fileURLToPath)(import_meta.url));
591
+ return (0, import_node_path.join)(here, "..", "starter-skills");
592
+ }
593
+ function getStarterSkillsDir() {
594
+ return starterSkillsDir();
595
+ }
596
+ function listStarterSkills() {
597
+ return (0, import_node_fs.readdirSync)(starterSkillsDir()).filter((name) => name.endsWith(".klickd")).sort();
598
+ }
599
+ function getStarterSkillBytes(name) {
600
+ if (!name.endsWith(".klickd")) {
601
+ throw new Error(`starter skill name must end with .klickd: ${name}`);
602
+ }
603
+ if (name.includes("/") || name.includes("\\") || name.includes("..")) {
604
+ throw new Error(`invalid starter skill name: ${name}`);
605
+ }
606
+ return new Uint8Array((0, import_node_fs.readFileSync)((0, import_node_path.join)(starterSkillsDir(), name)));
607
+ }
608
+ function getStarterSkillsManifest() {
609
+ const raw = (0, import_node_fs.readFileSync)((0, import_node_path.join)(starterSkillsDir(), "manifest.json"), "utf8");
610
+ return JSON.parse(raw);
611
+ }
579
612
  // Annotate the CommonJS export names for ESM import in node:
580
613
  0 && (module.exports = {
581
614
  HTTP_STATUS,
582
615
  KlickdError,
583
616
  getBundledSchema,
617
+ getStarterSkillBytes,
618
+ getStarterSkillsDir,
619
+ getStarterSkillsManifest,
584
620
  listBundledSchemas,
621
+ listStarterSkills,
585
622
  loadKlickd,
586
623
  migratePayload,
587
624
  migratePayloadIterWarnings,
package/dist/index.d.cts CHANGED
@@ -290,4 +290,25 @@ declare function migratePayload(payload: unknown, options?: MigrateOptions): Jso
290
290
  */
291
291
  declare function migratePayloadIterWarnings(payload: unknown): MigrationWarning[];
292
292
 
293
- export { type CipherName, HTTP_STATUS, type KdfName, type KlickdCipher, type KlickdClaimSources, type KlickdContext, type KlickdDomain, type KlickdEnvelope, KlickdError, type KlickdErrorCode, type KlickdGateEntry, type KlickdGateLevel, type KlickdHumanVetoPolicy, type KlickdIdentity, type KlickdKdf, type KlickdKdfArgon2id, type KlickdKdfPbkdf2, type KlickdKnowledge, type KlickdMediaModality, type KlickdMediaProfileEntry, type KlickdMediaProfileEntryHash, type KlickdMediaProfileV1, type KlickdMemoryEntry, type KlickdMigrationV1, type KlickdPayload, type KlickdVerificationGatesV1, type LoadKlickdOptions, type MemoryModality, type MemoryRole, type MigrateOptions, type MigrationWarning, type SaveKlickdOptions, type ValidateOptions, type ValidationIssue, type ValidationTarget, getBundledSchema, listBundledSchemas, loadKlickd, migratePayload, migratePayloadIterWarnings, needsMigration, saveKlickd, validate, validateIterErrors };
293
+ interface StarterSkillEntry {
294
+ id: string;
295
+ file: string;
296
+ pack_version: string;
297
+ bytes: number;
298
+ sha256_file: string;
299
+ sha256_canonical_json: string;
300
+ }
301
+ interface StarterSkillManifest {
302
+ manifest_version: string;
303
+ kind: string;
304
+ non_normative: boolean;
305
+ claims_v41_ga: boolean;
306
+ packs: StarterSkillEntry[];
307
+ [key: string]: unknown;
308
+ }
309
+ declare function getStarterSkillsDir(): string;
310
+ declare function listStarterSkills(): string[];
311
+ declare function getStarterSkillBytes(name: string): Uint8Array;
312
+ declare function getStarterSkillsManifest(): StarterSkillManifest;
313
+
314
+ export { type CipherName, HTTP_STATUS, type KdfName, type KlickdCipher, type KlickdClaimSources, type KlickdContext, type KlickdDomain, type KlickdEnvelope, KlickdError, type KlickdErrorCode, type KlickdGateEntry, type KlickdGateLevel, type KlickdHumanVetoPolicy, type KlickdIdentity, type KlickdKdf, type KlickdKdfArgon2id, type KlickdKdfPbkdf2, type KlickdKnowledge, type KlickdMediaModality, type KlickdMediaProfileEntry, type KlickdMediaProfileEntryHash, type KlickdMediaProfileV1, type KlickdMemoryEntry, type KlickdMigrationV1, type KlickdPayload, type KlickdVerificationGatesV1, type LoadKlickdOptions, type MemoryModality, type MemoryRole, type MigrateOptions, type MigrationWarning, type SaveKlickdOptions, type StarterSkillEntry, type StarterSkillManifest, type ValidateOptions, type ValidationIssue, type ValidationTarget, getBundledSchema, getStarterSkillBytes, getStarterSkillsDir, getStarterSkillsManifest, listBundledSchemas, listStarterSkills, loadKlickd, migratePayload, migratePayloadIterWarnings, needsMigration, saveKlickd, validate, validateIterErrors };
package/dist/index.d.ts CHANGED
@@ -290,4 +290,25 @@ declare function migratePayload(payload: unknown, options?: MigrateOptions): Jso
290
290
  */
291
291
  declare function migratePayloadIterWarnings(payload: unknown): MigrationWarning[];
292
292
 
293
- export { type CipherName, HTTP_STATUS, type KdfName, type KlickdCipher, type KlickdClaimSources, type KlickdContext, type KlickdDomain, type KlickdEnvelope, KlickdError, type KlickdErrorCode, type KlickdGateEntry, type KlickdGateLevel, type KlickdHumanVetoPolicy, type KlickdIdentity, type KlickdKdf, type KlickdKdfArgon2id, type KlickdKdfPbkdf2, type KlickdKnowledge, type KlickdMediaModality, type KlickdMediaProfileEntry, type KlickdMediaProfileEntryHash, type KlickdMediaProfileV1, type KlickdMemoryEntry, type KlickdMigrationV1, type KlickdPayload, type KlickdVerificationGatesV1, type LoadKlickdOptions, type MemoryModality, type MemoryRole, type MigrateOptions, type MigrationWarning, type SaveKlickdOptions, type ValidateOptions, type ValidationIssue, type ValidationTarget, getBundledSchema, listBundledSchemas, loadKlickd, migratePayload, migratePayloadIterWarnings, needsMigration, saveKlickd, validate, validateIterErrors };
293
+ interface StarterSkillEntry {
294
+ id: string;
295
+ file: string;
296
+ pack_version: string;
297
+ bytes: number;
298
+ sha256_file: string;
299
+ sha256_canonical_json: string;
300
+ }
301
+ interface StarterSkillManifest {
302
+ manifest_version: string;
303
+ kind: string;
304
+ non_normative: boolean;
305
+ claims_v41_ga: boolean;
306
+ packs: StarterSkillEntry[];
307
+ [key: string]: unknown;
308
+ }
309
+ declare function getStarterSkillsDir(): string;
310
+ declare function listStarterSkills(): string[];
311
+ declare function getStarterSkillBytes(name: string): Uint8Array;
312
+ declare function getStarterSkillsManifest(): StarterSkillManifest;
313
+
314
+ export { type CipherName, HTTP_STATUS, type KdfName, type KlickdCipher, type KlickdClaimSources, type KlickdContext, type KlickdDomain, type KlickdEnvelope, KlickdError, type KlickdErrorCode, type KlickdGateEntry, type KlickdGateLevel, type KlickdHumanVetoPolicy, type KlickdIdentity, type KlickdKdf, type KlickdKdfArgon2id, type KlickdKdfPbkdf2, type KlickdKnowledge, type KlickdMediaModality, type KlickdMediaProfileEntry, type KlickdMediaProfileEntryHash, type KlickdMediaProfileV1, type KlickdMemoryEntry, type KlickdMigrationV1, type KlickdPayload, type KlickdVerificationGatesV1, type LoadKlickdOptions, type MemoryModality, type MemoryRole, type MigrateOptions, type MigrationWarning, type SaveKlickdOptions, type StarterSkillEntry, type StarterSkillManifest, type ValidateOptions, type ValidationIssue, type ValidationTarget, getBundledSchema, getStarterSkillBytes, getStarterSkillsDir, getStarterSkillsManifest, listBundledSchemas, listStarterSkills, loadKlickd, migratePayload, migratePayloadIterWarnings, needsMigration, saveKlickd, validate, validateIterErrors };
package/dist/index.js CHANGED
@@ -530,11 +530,43 @@ function migratePayloadIterWarnings(payload) {
530
530
  }
531
531
  return warnings;
532
532
  }
533
+
534
+ // src/starter-skills.ts
535
+ import { fileURLToPath } from "url";
536
+ import { dirname, join } from "path";
537
+ import { readFileSync, readdirSync } from "fs";
538
+ function starterSkillsDir() {
539
+ const here = dirname(fileURLToPath(import.meta.url));
540
+ return join(here, "..", "starter-skills");
541
+ }
542
+ function getStarterSkillsDir() {
543
+ return starterSkillsDir();
544
+ }
545
+ function listStarterSkills() {
546
+ return readdirSync(starterSkillsDir()).filter((name) => name.endsWith(".klickd")).sort();
547
+ }
548
+ function getStarterSkillBytes(name) {
549
+ if (!name.endsWith(".klickd")) {
550
+ throw new Error(`starter skill name must end with .klickd: ${name}`);
551
+ }
552
+ if (name.includes("/") || name.includes("\\") || name.includes("..")) {
553
+ throw new Error(`invalid starter skill name: ${name}`);
554
+ }
555
+ return new Uint8Array(readFileSync(join(starterSkillsDir(), name)));
556
+ }
557
+ function getStarterSkillsManifest() {
558
+ const raw = readFileSync(join(starterSkillsDir(), "manifest.json"), "utf8");
559
+ return JSON.parse(raw);
560
+ }
533
561
  export {
534
562
  HTTP_STATUS,
535
563
  KlickdError,
536
564
  getBundledSchema,
565
+ getStarterSkillBytes,
566
+ getStarterSkillsDir,
567
+ getStarterSkillsManifest,
537
568
  listBundledSchemas,
569
+ listStarterSkills,
538
570
  loadKlickd,
539
571
  migratePayload,
540
572
  migratePayloadIterWarnings,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@klickd/core",
3
- "version": "4.0.0",
3
+ "version": "4.0.1",
4
4
  "description": "Official JavaScript/TypeScript library for reading and writing .klickd portable AI context files",
5
5
  "keywords": [
6
6
  "klickd",
@@ -29,6 +29,7 @@
29
29
  },
30
30
  "files": [
31
31
  "dist",
32
+ "starter-skills",
32
33
  "README.md",
33
34
  "LICENSE"
34
35
  ],
@@ -0,0 +1,98 @@
1
+ # `examples/v4/starter-skills/` — Starter `.klickd` skills
2
+
3
+ > **Status:** Starter / sample artefacts. **Non-normative.** **Pre-release.** **Not v4.1 GA.**
4
+ >
5
+ > **Triggers no release.** No tag, no `latest` on npm or PyPI, no DOI on Zenodo, no IANA action, no SDK bump.
6
+
7
+ This directory ships four real, structured `.klickd` files — starter skills on top of the **v4.0 envelope**. They are downloadable starter `.klickd` files — not relabelled v4-preview personas, not host-side skills, not v4.1 GA packs.
8
+
9
+ ## Files
10
+
11
+ | File | Skill id | Domain | Hash (sha256_file) |
12
+ |---|---|---|---|
13
+ | [`user.klickd`](./user.klickd) | `x.klickd/user` | transversal (base) | `19121af045f6dd3537aa9bd4372edfaed5097b8436f026a8e9c585abbac6c80a` |
14
+ | [`student.klickd`](./student.klickd) | `x.klickd/student` | education | `ffea74552ecedc9076d6468cb10214586632163f073a8c7975642e272464dba4` |
15
+ | [`research.klickd`](./research.klickd) | `x.klickd/research` | research / evidence | `571bd07773caff23d08fe6857bbf696dd6e49f701aab750fa7b261345285ce63` |
16
+ | [`coding.klickd`](./coding.klickd) | `x.klickd/coding` | software engineering | `1aab06122d8b6c7ed45737aa3b6becad3ae33badb5ad893cc7788ad6dd1481f4` |
17
+ | [`manifest.json`](./manifest.json) | — | sha256 manifest of the four skills above | (regenerable via `scripts/verify_starter_skills.py`) |
18
+
19
+ ## What these skills *are*
20
+
21
+ Each file is a real structured JSON document that carries:
22
+
23
+ - the **v4.0 envelope** (`klickd_version`, `payload_schema_version`, `domain`, `profile_kind`, `created_at`, `encrypted`) — so an existing v4.0 reader round-trips it without breaking;
24
+ - the **`x_klickd_pack` block** carrying:
25
+ - `pack`, `pack_version`, `spec_ref`, `publisher`
26
+ - `frameworks[]` (ESCO / DigComp / LifeComp / EQF / CEFR / SFIA depending on the skill)
27
+ - `base_transversal_core`
28
+ - domain-specific `competencies[]` anchored to authoritative framework IRIs
29
+ - `levels[]` with framework-anchored `level_label` (e.g. `EQF level 4`, `EQF level 6`, `EQF level 7`)
30
+ - `mastery[]` (empty in starter; pointer-only when populated by a carrier)
31
+ - `source_policy`, `evidence_policy` (RFC-002 §8b)
32
+ - `verification_gates` and per-skill `gates.verification_gates_default` (RFC-002, `raise_only: true`)
33
+ - `human_authority` (`final_decision_owner: human_carrier`, `agent_role: advisory`)
34
+ - `structured_memory` block scoped to `memory.x_klickd.<pack>`
35
+ - `router_cost` (deterministic heuristic, RFC-003)
36
+ - `forbidden_fields` literal (enforces the carrier-vs-skill split)
37
+
38
+ ## What these skills are NOT
39
+
40
+ - **Not v4.1 GA.** `klickd_version: "4.0"`, `_pack_metadata.claims_v41_ga: false`. No public catalog is implied.
41
+ - **Not relabelled personas.** They are *new artefacts* authored against frameworks. They do **not** harvest `knowledge.mastered[]` / `mastered_topics` from the v4-preview persona fixtures under [`../personas/`](../personas/) (clean-architecture invariant).
42
+ - **Not host-side skills.** The `forbidden_fields` literal is the carrier-vs-skill firewall. Pedagogy, scoring rubrics, prompt strategies, tone rules — those belong in a `host_skill` on the agent side, not in the starter file.
43
+ - **Not personal data.** No PII, no secrets, no real user state. `display_name: null`, `school_or_institution_ref: null`, `mastery: []`, `history: []`. The starter files are *publisher-owned starter shapes* a carrier can adopt and personalise locally.
44
+
45
+ ## How to verify
46
+
47
+ Offline verification of structure, fields, anti-PII guard, anti-host_skill guard, and hash stability:
48
+
49
+ ```bash
50
+ python3 scripts/verify_starter_skills.py
51
+ # or via pytest
52
+ pytest tests/test_starter_skills.py
53
+ ```
54
+
55
+ The general starter-pack validator (`scripts/validate_starter_packs.py`) is
56
+ v4.1-native by default — it expects the v4.1-shaped fields at the top level
57
+ of each file. For the v4.0 starter `.klickd` files in this directory (which
58
+ nest those fields under `x_klickd_pack` so the v4.0 envelope round-trips
59
+ unchanged) run it with the `--v40-envelope` flag:
60
+
61
+ ```bash
62
+ # v4.0-envelope mode — unwraps `x_klickd_pack` before validation
63
+ python3 scripts/validate_starter_packs.py \
64
+ --dir examples/v4/starter-skills \
65
+ --v40-envelope
66
+ ```
67
+
68
+ The two scripts are complementary: `verify_starter_skills.py` covers the v4.0
69
+ envelope, persona-isolation, and hash-stability checks specific to this
70
+ directory; `validate_starter_packs.py --v40-envelope` covers the shared
71
+ v4.1-shaped field/forbidden-field/PII checks against the same files.
72
+
73
+ ## How to use
74
+
75
+ These are downloadable starter `.klickd` files. A carrier can:
76
+
77
+ 1. Open the file matching their context (`user.klickd` as the always-on base, plus one of `student.klickd` / `research.klickd` / `coding.klickd`).
78
+ 2. Personalise *locally* — fill in `language_proficiency[]`, `subjects[].current_chapter_ref`, mastery entries (pointer-only), exam targets, etc. Personalisation never weakens gates (`raise_only: true`).
79
+ 3. Carry the file between agents. `human_authority.final_decision_owner = "human_carrier"` is non-negotiable across hosts.
80
+
81
+ ## Relation to internal spec work
82
+
83
+ These starter `.klickd` files implement the **shape** described in the internal spec work at [`docs/rfcs/RFC-009-chimera-v4.1.md`](../../../docs/rfcs/RFC-009-chimera-v4.1.md) on top of the **v4.0 envelope**. They are starter artefacts for reviewers and integrators to see the architecture working end-to-end *before* the strict v4.1 schema is promoted past `Draft`. Promotion of the strict v4.1 schema and any catalog surface remains gated by `ACCEPTANCE_CHECKLIST_V4.md`.
84
+
85
+ ## Relation to existing personas
86
+
87
+ | `examples/v4/personas/*.klickd` | `examples/v4/starter-skills/*.klickd` |
88
+ |---|---|
89
+ | Persona anchors / v4-preview demo fixtures. | Starter `.klickd` skills on the v4.0 envelope. |
90
+ | Free-text `knowledge.mastered[]`, narrative `level`. | Framework-anchored `competencies[]`, framework-anchored `levels[]`. |
91
+ | Carry tutor-style fields (`teaching_mode`, `agent_instructions`). | Carry **state only**; `forbidden_fields` block forbids host-side skill fields. |
92
+ | Inspiration material for skill authors. | Real downloadable starter `.klickd` files. |
93
+
94
+ The personas remain non-normative anchors. The starter `.klickd` files in this directory are the canonical starter artefacts going forward.
95
+
96
+ ## Release status
97
+
98
+ No tag, no release. The live npm package (`@klickd/core`) and PyPI package (`klickd`) **do not yet ship these starter `.klickd` files as package data** — a future patch release will be required to update those live pages. This directory and the GitHub raw URLs are the source of truth until then.
@@ -0,0 +1,177 @@
1
+ {
2
+ "klickd_version": "4.0",
3
+ "preview": "4.0.0-chimera-starter.1",
4
+ "payload_schema_version": "4.0.0-preview.1",
5
+ "domain_schema_version": "chimera-starter-1.0",
6
+ "created_at": "2026-05-26T00:00:00Z",
7
+ "encrypted": false,
8
+ "domain": "software_engineering",
9
+ "profile_kind": "developer",
10
+ "_pack_metadata": {
11
+ "kind": "chimera_starter_pack",
12
+ "non_normative": true,
13
+ "claims_v41_ga": false,
14
+ "contains_real_pii": false,
15
+ "contains_secrets": false,
16
+ "see_readme": "examples/v4/starter-skills/README.md",
17
+ "spec_ref": "docs/rfcs/RFC-009-chimera-v4.1.md",
18
+ "note": "Real structured Chimera-aligned starter pack on the v4.0 envelope. Not a v4.1 GA pack."
19
+ },
20
+ "x_klickd_pack": {
21
+ "pack": "x.klickd/coding",
22
+ "pack_version": "0.1.0-starter",
23
+ "spec_ref": "docs/rfcs/RFC-009-chimera-v4.1.md",
24
+ "publisher": {
25
+ "name": "klickd",
26
+ "ref": "https://klickd.app"
27
+ },
28
+ "frameworks": [
29
+ {
30
+ "scheme": "esco",
31
+ "version": "v1.1.1",
32
+ "iri_prefix": "http://data.europa.eu/esco/skill/",
33
+ "canonical_url": "https://esco.ec.europa.eu/en/classification/skill_main"
34
+ },
35
+ {
36
+ "scheme": "digcomp",
37
+ "version": "2.2",
38
+ "iri_prefix": "https://joint-research-centre.ec.europa.eu/digcomp/2.2/",
39
+ "canonical_url": "https://joint-research-centre.ec.europa.eu/digcomp_en"
40
+ },
41
+ {
42
+ "scheme": "sfia",
43
+ "version": "8",
44
+ "iri_prefix": "https://sfia-online.org/en/sfia-8/",
45
+ "canonical_url": "https://sfia-online.org/en/sfia-8"
46
+ },
47
+ {
48
+ "scheme": "eqf",
49
+ "version": "2017",
50
+ "iri_prefix": "https://europa.eu/europass/eqf/",
51
+ "canonical_url": "https://europa.eu/europass/en/europass-tools/european-qualifications-framework"
52
+ }
53
+ ],
54
+ "base_transversal_core": {
55
+ "frameworks": [
56
+ { "scheme": "esco", "version": "v1.1.1" },
57
+ { "scheme": "digcomp", "version": "2.2" },
58
+ { "scheme": "eqf", "version": "2017" }
59
+ ],
60
+ "transversal_refs": [
61
+ { "competency_ref": "esco:S5", "scheme": "esco", "prefLabel": "working with computers" },
62
+ { "competency_ref": "digcomp:3.4", "scheme": "digcomp", "prefLabel": "Programming" },
63
+ { "competency_ref": "digcomp:4.2", "scheme": "digcomp", "prefLabel": "Protecting personal data and privacy" }
64
+ ]
65
+ },
66
+ "competencies": [
67
+ { "competency_ref": "esco:S5", "scheme": "esco", "prefLabel": "working with computers" },
68
+ { "competency_ref": "digcomp:3.4", "scheme": "digcomp", "prefLabel": "Programming" },
69
+ { "competency_ref": "digcomp:4.1", "scheme": "digcomp", "prefLabel": "Protecting devices" },
70
+ { "competency_ref": "digcomp:4.2", "scheme": "digcomp", "prefLabel": "Protecting personal data and privacy" },
71
+ { "competency_ref": "sfia:PROG", "scheme": "sfia", "prefLabel": "Programming/software development" },
72
+ { "competency_ref": "sfia:TEST", "scheme": "sfia", "prefLabel": "Systems and software testing" }
73
+ ],
74
+ "levels": [
75
+ {
76
+ "framework_ref": "https://europa.eu/europass/eqf/level/6",
77
+ "level_label": "EQF level 6",
78
+ "effective_at": "2026-05-26"
79
+ }
80
+ ],
81
+ "language_proficiency": [],
82
+ "mastery": [],
83
+ "engineering_discipline": {
84
+ "code_review_required_before_merge": true,
85
+ "tests_required_for_new_logic": true,
86
+ "typecheck_required_for_typed_languages": true,
87
+ "secrets_handling": "pointer_only_never_inline",
88
+ "supply_chain_awareness": "verify_provenance_when_adding_dependency",
89
+ "reversibility_default": "prefer_reversible_changes"
90
+ },
91
+ "gates": {
92
+ "verification_gates_default": {
93
+ "raise_only": true,
94
+ "claim_grounding_required": true,
95
+ "reversibility_threshold": "low"
96
+ },
97
+ "human_veto_policy": {
98
+ "owner": "human_carrier",
99
+ "scope": ["force_push", "dependency_addition", "secret_handling", "production_deploy"]
100
+ }
101
+ },
102
+ "human_authority": {
103
+ "final_decision_owner": "human_carrier",
104
+ "agent_role": "advisory",
105
+ "escalation": "human_carrier_only"
106
+ },
107
+ "memory_scope": "memory.x_klickd.coding",
108
+ "structured_memory": {
109
+ "scope": "memory.x_klickd.coding",
110
+ "policy": "pack_scoped_only",
111
+ "entries": []
112
+ },
113
+ "evidence_policy": {
114
+ "required_for_claims": true,
115
+ "pointer_only": true,
116
+ "attestation_shape_ref": "rfc-002#8b"
117
+ },
118
+ "source_policy": {
119
+ "frameworks_offline_bundle": "docs/rfcs/chimera/frameworks/base_transversal_core.bundle.json",
120
+ "allow_inline_definitions": false,
121
+ "language_tags": ["en", "fr"]
122
+ },
123
+ "verification_gates": {
124
+ "version": 1,
125
+ "user_default": "silent",
126
+ "gates": [
127
+ {
128
+ "id": "force-push",
129
+ "action_class": "force_push",
130
+ "level": "block",
131
+ "reason": "Force push is destructive; requires explicit human authorisation."
132
+ },
133
+ {
134
+ "id": "dependency-add",
135
+ "action_class": "dependency_addition",
136
+ "level": "confirm",
137
+ "reason": "New dependencies expand the supply-chain surface; confirm provenance before adding."
138
+ },
139
+ {
140
+ "id": "secrets",
141
+ "action_class": "secret_handling",
142
+ "level": "block",
143
+ "reason": "Secrets never inline; pointer-only handling enforced at gate level."
144
+ },
145
+ {
146
+ "id": "production-deploy",
147
+ "action_class": "production_deploy",
148
+ "level": "block",
149
+ "reason": "Deploys touch shared infrastructure; reversibility threshold low."
150
+ },
151
+ {
152
+ "id": "destructive-git",
153
+ "action_class": "destructive_git",
154
+ "level": "confirm",
155
+ "reason": "Destructive git operations (reset --hard, branch -D) require confirmation."
156
+ }
157
+ ]
158
+ },
159
+ "router_cost": {
160
+ "tokens_estimate": 900,
161
+ "baseline": "base_plus_one",
162
+ "source_row": "docs/rfcs/chimera/packs/router_cost.md"
163
+ },
164
+ "forbidden_fields": [
165
+ "pedagogy",
166
+ "teaching_method",
167
+ "socratic_steps",
168
+ "prompt_strategy",
169
+ "scoring_rubric",
170
+ "intervention_policy",
171
+ "tone_rules",
172
+ "system_prompt_overrides",
173
+ "knowledge.mastered",
174
+ "mastered_topics"
175
+ ]
176
+ }
177
+ }
@@ -0,0 +1,45 @@
1
+ {
2
+ "manifest_version": "1.0",
3
+ "kind": "klickd_starter_skill_manifest",
4
+ "non_normative": true,
5
+ "claims_v41_ga": false,
6
+ "spec_ref": "docs/rfcs/RFC-009-chimera-v4.1.md",
7
+ "see_readme": "examples/v4/starter-skills/README.md",
8
+ "generated_at": "2026-05-26T00:00:00Z",
9
+ "hash_algo": "sha256",
10
+ "note": "Hashes are reproducible offline. sha256_file is over the raw bytes of the file as stored. sha256_canonical_json is over json.dumps(obj, sort_keys=True, separators=(',', ':'), ensure_ascii=False).encode('utf-8') and is stable across whitespace-only edits to the source file.",
11
+ "packs": [
12
+ {
13
+ "id": "x.klickd/user",
14
+ "file": "user.klickd",
15
+ "pack_version": "0.1.0-starter",
16
+ "bytes": 6020,
17
+ "sha256_file": "19121af045f6dd3537aa9bd4372edfaed5097b8436f026a8e9c585abbac6c80a",
18
+ "sha256_canonical_json": "09dfb1f9af44ac2e25d37ad87139388ea714f7b1d8ab79b5bc9ecf8f130cb1c6"
19
+ },
20
+ {
21
+ "id": "x.klickd/student",
22
+ "file": "student.klickd",
23
+ "pack_version": "0.1.0-starter",
24
+ "bytes": 6554,
25
+ "sha256_file": "ffea74552ecedc9076d6468cb10214586632163f073a8c7975642e272464dba4",
26
+ "sha256_canonical_json": "72c542ae92db5bf8ba76c8b5449eb99dfceb4ab6886c944414473ba8b99fcd0e"
27
+ },
28
+ {
29
+ "id": "x.klickd/research",
30
+ "file": "research.klickd",
31
+ "pack_version": "0.1.0-starter",
32
+ "bytes": 6274,
33
+ "sha256_file": "571bd07773caff23d08fe6857bbf696dd6e49f701aab750fa7b261345285ce63",
34
+ "sha256_canonical_json": "f668a1069b9bf85cbe190052f029ac7430910ca2bf0caf2cf28035542b1e2d9c"
35
+ },
36
+ {
37
+ "id": "x.klickd/coding",
38
+ "file": "coding.klickd",
39
+ "pack_version": "0.1.0-starter",
40
+ "bytes": 6305,
41
+ "sha256_file": "1aab06122d8b6c7ed45737aa3b6becad3ae33badb5ad893cc7788ad6dd1481f4",
42
+ "sha256_canonical_json": "b1ae3d57998c69ec41ad2fe88fa2b1920e31ab64cab71c38a7661edc3b14c38c"
43
+ }
44
+ ]
45
+ }
@@ -0,0 +1,175 @@
1
+ {
2
+ "klickd_version": "4.0",
3
+ "preview": "4.0.0-chimera-starter.1",
4
+ "payload_schema_version": "4.0.0-preview.1",
5
+ "domain_schema_version": "chimera-starter-1.0",
6
+ "created_at": "2026-05-26T00:00:00Z",
7
+ "encrypted": false,
8
+ "domain": "research",
9
+ "profile_kind": "researcher",
10
+ "_pack_metadata": {
11
+ "kind": "chimera_starter_pack",
12
+ "non_normative": true,
13
+ "claims_v41_ga": false,
14
+ "contains_real_pii": false,
15
+ "contains_secrets": false,
16
+ "see_readme": "examples/v4/starter-skills/README.md",
17
+ "spec_ref": "docs/rfcs/RFC-009-chimera-v4.1.md",
18
+ "note": "Real structured Chimera-aligned starter pack on the v4.0 envelope. Not a v4.1 GA pack."
19
+ },
20
+ "x_klickd_pack": {
21
+ "pack": "x.klickd/research",
22
+ "pack_version": "0.1.0-starter",
23
+ "spec_ref": "docs/rfcs/RFC-009-chimera-v4.1.md",
24
+ "publisher": {
25
+ "name": "klickd",
26
+ "ref": "https://klickd.app"
27
+ },
28
+ "frameworks": [
29
+ {
30
+ "scheme": "esco",
31
+ "version": "v1.1.1",
32
+ "iri_prefix": "http://data.europa.eu/esco/skill/",
33
+ "canonical_url": "https://esco.ec.europa.eu/en/classification/skill_main"
34
+ },
35
+ {
36
+ "scheme": "digcomp",
37
+ "version": "2.2",
38
+ "iri_prefix": "https://joint-research-centre.ec.europa.eu/digcomp/2.2/",
39
+ "canonical_url": "https://joint-research-centre.ec.europa.eu/digcomp_en"
40
+ },
41
+ {
42
+ "scheme": "lifecomp",
43
+ "version": "2020",
44
+ "iri_prefix": "https://joint-research-centre.ec.europa.eu/lifecomp/2020/",
45
+ "canonical_url": "https://joint-research-centre.ec.europa.eu/lifecomp_en"
46
+ },
47
+ {
48
+ "scheme": "eqf",
49
+ "version": "2017",
50
+ "iri_prefix": "https://europa.eu/europass/eqf/",
51
+ "canonical_url": "https://europa.eu/europass/en/europass-tools/european-qualifications-framework"
52
+ }
53
+ ],
54
+ "base_transversal_core": {
55
+ "frameworks": [
56
+ { "scheme": "esco", "version": "v1.1.1" },
57
+ { "scheme": "digcomp", "version": "2.2" },
58
+ { "scheme": "lifecomp", "version": "2020" },
59
+ { "scheme": "eqf", "version": "2017" }
60
+ ],
61
+ "transversal_refs": [
62
+ { "competency_ref": "esco:S2", "scheme": "esco", "prefLabel": "information skills" },
63
+ { "competency_ref": "digcomp:1.2", "scheme": "digcomp", "prefLabel": "Evaluating data, information and digital content" },
64
+ { "competency_ref": "lifecomp:L2", "scheme": "lifecomp", "prefLabel": "Critical thinking" }
65
+ ]
66
+ },
67
+ "competencies": [
68
+ { "competency_ref": "esco:S2", "scheme": "esco", "prefLabel": "information skills" },
69
+ { "competency_ref": "digcomp:1.2", "scheme": "digcomp", "prefLabel": "Evaluating data, information and digital content" },
70
+ { "competency_ref": "digcomp:1.3", "scheme": "digcomp", "prefLabel": "Managing data, information and digital content" },
71
+ { "competency_ref": "lifecomp:L2", "scheme": "lifecomp", "prefLabel": "Critical thinking" }
72
+ ],
73
+ "levels": [
74
+ {
75
+ "framework_ref": "https://europa.eu/europass/eqf/level/7",
76
+ "level_label": "EQF level 7",
77
+ "effective_at": "2026-05-26"
78
+ }
79
+ ],
80
+ "language_proficiency": [],
81
+ "mastery": [],
82
+ "claim_grounding": {
83
+ "policy": "every_factual_claim_with_date_or_attribution_requires_source",
84
+ "preferred_sources": ["peer_reviewed", "primary_source", "official_registry"],
85
+ "fallback_sources": ["tool:web_search"],
86
+ "forbidden_sources": ["unverified_social_media"],
87
+ "citation_shape_ref": "rfc-002#8b",
88
+ "replication_expected_when": "quantitative_result_or_dated_event"
89
+ },
90
+ "verification_artifacts_policy": {
91
+ "shape_ref": "rfc-003#verification_artifacts",
92
+ "required_for": ["empirical_claim", "quantitative_result", "policy_recommendation"],
93
+ "pointer_only": true
94
+ },
95
+ "gates": {
96
+ "verification_gates_default": {
97
+ "raise_only": true,
98
+ "claim_grounding_required": true,
99
+ "reversibility_threshold": "low"
100
+ },
101
+ "human_veto_policy": {
102
+ "owner": "human_carrier",
103
+ "scope": ["publication", "claim_attribution", "data_release"]
104
+ }
105
+ },
106
+ "human_authority": {
107
+ "final_decision_owner": "human_carrier",
108
+ "agent_role": "advisory",
109
+ "escalation": "human_carrier_only"
110
+ },
111
+ "memory_scope": "memory.x_klickd.research",
112
+ "structured_memory": {
113
+ "scope": "memory.x_klickd.research",
114
+ "policy": "pack_scoped_only",
115
+ "entries": []
116
+ },
117
+ "evidence_policy": {
118
+ "required_for_claims": true,
119
+ "pointer_only": true,
120
+ "attestation_shape_ref": "rfc-002#8b"
121
+ },
122
+ "source_policy": {
123
+ "frameworks_offline_bundle": "docs/rfcs/chimera/frameworks/base_transversal_core.bundle.json",
124
+ "allow_inline_definitions": false,
125
+ "language_tags": ["en", "fr"]
126
+ },
127
+ "verification_gates": {
128
+ "version": 1,
129
+ "user_default": "silent",
130
+ "gates": [
131
+ {
132
+ "id": "uncited-claim",
133
+ "action_class": "factual_claim_without_citation",
134
+ "level": "block",
135
+ "reason": "Research pack: every factual claim must carry a source pointer."
136
+ },
137
+ {
138
+ "id": "quantitative-result",
139
+ "action_class": "quantitative_result",
140
+ "level": "confirm",
141
+ "reason": "Quantitative results require verification artefact (RFC-003 §verification_artifacts)."
142
+ },
143
+ {
144
+ "id": "publication",
145
+ "action_class": "publication",
146
+ "level": "block",
147
+ "reason": "No publication step from the agent; human authority required."
148
+ },
149
+ {
150
+ "id": "data-release",
151
+ "action_class": "data_release",
152
+ "level": "block",
153
+ "reason": "Data release requires explicit human consent; reversibility threshold low."
154
+ }
155
+ ]
156
+ },
157
+ "router_cost": {
158
+ "tokens_estimate": 800,
159
+ "baseline": "base_plus_one",
160
+ "source_row": "docs/rfcs/chimera/packs/router_cost.md"
161
+ },
162
+ "forbidden_fields": [
163
+ "pedagogy",
164
+ "teaching_method",
165
+ "socratic_steps",
166
+ "prompt_strategy",
167
+ "scoring_rubric",
168
+ "intervention_policy",
169
+ "tone_rules",
170
+ "system_prompt_overrides",
171
+ "knowledge.mastered",
172
+ "mastered_topics"
173
+ ]
174
+ }
175
+ }
@@ -0,0 +1,193 @@
1
+ {
2
+ "klickd_version": "4.0",
3
+ "preview": "4.0.0-chimera-starter.1",
4
+ "payload_schema_version": "4.0.0-preview.1",
5
+ "domain_schema_version": "chimera-starter-1.0",
6
+ "created_at": "2026-05-26T00:00:00Z",
7
+ "encrypted": false,
8
+ "domain": "education",
9
+ "profile_kind": "learner",
10
+ "_pack_metadata": {
11
+ "kind": "chimera_starter_pack",
12
+ "non_normative": true,
13
+ "claims_v41_ga": false,
14
+ "contains_real_pii": false,
15
+ "contains_secrets": false,
16
+ "see_readme": "examples/v4/starter-skills/README.md",
17
+ "spec_ref": "docs/rfcs/RFC-009-chimera-v4.1.md",
18
+ "note": "Real structured Chimera-aligned starter pack on the v4.0 envelope. Not a v4.1 GA pack."
19
+ },
20
+ "x_klickd_pack": {
21
+ "pack": "x.klickd/student",
22
+ "pack_version": "0.1.0-starter",
23
+ "spec_ref": "docs/rfcs/chimera/packs/student.md",
24
+ "publisher": {
25
+ "name": "klickd",
26
+ "ref": "https://klickd.app"
27
+ },
28
+ "frameworks": [
29
+ {
30
+ "scheme": "esco",
31
+ "version": "v1.1.1",
32
+ "iri_prefix": "http://data.europa.eu/esco/skill/",
33
+ "canonical_url": "https://esco.ec.europa.eu/en/classification/skill_main"
34
+ },
35
+ {
36
+ "scheme": "digcomp",
37
+ "version": "2.2",
38
+ "iri_prefix": "https://joint-research-centre.ec.europa.eu/digcomp/2.2/",
39
+ "canonical_url": "https://joint-research-centre.ec.europa.eu/digcomp_en"
40
+ },
41
+ {
42
+ "scheme": "lifecomp",
43
+ "version": "2020",
44
+ "iri_prefix": "https://joint-research-centre.ec.europa.eu/lifecomp/2020/",
45
+ "canonical_url": "https://joint-research-centre.ec.europa.eu/lifecomp_en"
46
+ },
47
+ {
48
+ "scheme": "eqf",
49
+ "version": "2017",
50
+ "iri_prefix": "https://europa.eu/europass/eqf/",
51
+ "canonical_url": "https://europa.eu/europass/en/europass-tools/european-qualifications-framework"
52
+ },
53
+ {
54
+ "scheme": "cefr",
55
+ "version": "2020",
56
+ "iri_prefix": "https://www.coe.int/cefr/",
57
+ "canonical_url": "https://www.coe.int/en/web/common-european-framework-reference-languages"
58
+ }
59
+ ],
60
+ "base_transversal_core": {
61
+ "frameworks": [
62
+ { "scheme": "esco", "version": "v1.1.1" },
63
+ { "scheme": "digcomp", "version": "2.2" },
64
+ { "scheme": "lifecomp", "version": "2020" },
65
+ { "scheme": "eqf", "version": "2017" }
66
+ ],
67
+ "transversal_refs": [
68
+ { "competency_ref": "esco:S2", "scheme": "esco", "prefLabel": "information skills" },
69
+ { "competency_ref": "digcomp:1.2", "scheme": "digcomp", "prefLabel": "Evaluating data, information and digital content" },
70
+ { "competency_ref": "lifecomp:L2", "scheme": "lifecomp", "prefLabel": "Critical thinking" },
71
+ { "competency_ref": "lifecomp:L3", "scheme": "lifecomp", "prefLabel": "Managing learning" }
72
+ ]
73
+ },
74
+ "identity": {
75
+ "pack_role": "student",
76
+ "display_name": null,
77
+ "school_or_institution_ref": null,
78
+ "enrolment_period": null
79
+ },
80
+ "competencies": [
81
+ { "competency_ref": "esco:S2", "scheme": "esco", "prefLabel": "information skills" },
82
+ { "competency_ref": "digcomp:1.2", "scheme": "digcomp", "prefLabel": "Evaluating data, information and digital content" },
83
+ { "competency_ref": "digcomp:3.1", "scheme": "digcomp", "prefLabel": "Developing digital content" },
84
+ { "competency_ref": "lifecomp:L3", "scheme": "lifecomp", "prefLabel": "Managing learning" }
85
+ ],
86
+ "levels": [
87
+ {
88
+ "framework_ref": "https://europa.eu/europass/eqf/level/4",
89
+ "level_label": "EQF level 4",
90
+ "effective_at": "2026-05-26"
91
+ }
92
+ ],
93
+ "language_proficiency": [],
94
+ "curriculum_refs": [],
95
+ "subjects": [
96
+ {
97
+ "subject_ref": "http://data.europa.eu/esco/isced-f/0541",
98
+ "prefLabel": "Mathematics",
99
+ "started_at": null,
100
+ "current_chapter_ref": null,
101
+ "coursework_pointer": null
102
+ }
103
+ ],
104
+ "mastery": [],
105
+ "preferences": {
106
+ "preferred_languages": [],
107
+ "pace_preference": null,
108
+ "modality_preference": [],
109
+ "feedback_cadence_preference": null,
110
+ "time_budget_per_week_minutes": null
111
+ },
112
+ "accessibility": {
113
+ "needs": [],
114
+ "accommodations": [],
115
+ "consent_to_disclose_to_agent": false
116
+ },
117
+ "exam_targets": [],
118
+ "history": [],
119
+ "gates": {
120
+ "verification_gates_default": {
121
+ "raise_only": true,
122
+ "claim_grounding_required": true,
123
+ "reversibility_threshold": "medium"
124
+ },
125
+ "human_veto_policy": {
126
+ "owner": "human_carrier",
127
+ "scope": ["mastery_writes", "exam_target_changes", "accommodations_changes"]
128
+ }
129
+ },
130
+ "human_authority": {
131
+ "final_decision_owner": "human_carrier",
132
+ "agent_role": "advisory",
133
+ "escalation": "guardian_then_school"
134
+ },
135
+ "memory_scope": "memory.x_klickd.student",
136
+ "structured_memory": {
137
+ "scope": "memory.x_klickd.student",
138
+ "policy": "pack_scoped_only",
139
+ "entries": []
140
+ },
141
+ "evidence_policy": {
142
+ "required_for_claims": true,
143
+ "pointer_only": true,
144
+ "attestation_shape_ref": "rfc-002#8b"
145
+ },
146
+ "source_policy": {
147
+ "frameworks_offline_bundle": "docs/rfcs/chimera/frameworks/x.klickd.student.bundle.json",
148
+ "allow_inline_definitions": false,
149
+ "language_tags": ["en", "fr"]
150
+ },
151
+ "verification_gates": {
152
+ "version": 1,
153
+ "user_default": "silent",
154
+ "gates": [
155
+ {
156
+ "id": "exam-claim",
157
+ "action_class": "factual_claim_with_date",
158
+ "level": "confirm",
159
+ "reason": "Exam dates and curriculum claims require grounding before assertion."
160
+ },
161
+ {
162
+ "id": "mastery-write",
163
+ "action_class": "carrier_state_write",
164
+ "level": "confirm",
165
+ "reason": "Writing to mastery[] changes carrier-recorded competence and requires explicit consent."
166
+ },
167
+ {
168
+ "id": "public-post",
169
+ "action_class": "public_post",
170
+ "level": "block",
171
+ "reason": "No public posting from a learner pack; minor-safe default."
172
+ }
173
+ ]
174
+ },
175
+ "router_cost": {
176
+ "tokens_estimate": 850,
177
+ "baseline": "base_plus_one",
178
+ "source_row": "docs/rfcs/chimera/packs/router_cost.md#32-xklickdstudent-derivation"
179
+ },
180
+ "forbidden_fields": [
181
+ "pedagogy",
182
+ "teaching_method",
183
+ "socratic_steps",
184
+ "prompt_strategy",
185
+ "scoring_rubric",
186
+ "intervention_policy",
187
+ "tone_rules",
188
+ "system_prompt_overrides",
189
+ "knowledge.mastered",
190
+ "mastered_topics"
191
+ ]
192
+ }
193
+ }
@@ -0,0 +1,161 @@
1
+ {
2
+ "klickd_version": "4.0",
3
+ "preview": "4.0.0-chimera-starter.1",
4
+ "payload_schema_version": "4.0.0-preview.1",
5
+ "domain_schema_version": "chimera-starter-1.0",
6
+ "created_at": "2026-05-26T00:00:00Z",
7
+ "encrypted": false,
8
+ "domain": "transversal",
9
+ "profile_kind": "carrier_base",
10
+ "_pack_metadata": {
11
+ "kind": "chimera_starter_pack",
12
+ "non_normative": true,
13
+ "claims_v41_ga": false,
14
+ "contains_real_pii": false,
15
+ "contains_secrets": false,
16
+ "see_readme": "examples/v4/starter-skills/README.md",
17
+ "spec_ref": "docs/rfcs/RFC-009-chimera-v4.1.md",
18
+ "note": "Real structured Chimera-aligned starter pack on the v4.0 envelope. Not a v4.1 GA pack."
19
+ },
20
+ "x_klickd_pack": {
21
+ "pack": "x.klickd/user",
22
+ "pack_version": "0.1.0-starter",
23
+ "spec_ref": "docs/rfcs/RFC-009-chimera-v4.1.md",
24
+ "publisher": {
25
+ "name": "klickd",
26
+ "ref": "https://klickd.app"
27
+ },
28
+ "frameworks": [
29
+ {
30
+ "scheme": "esco",
31
+ "version": "v1.1.1",
32
+ "iri_prefix": "http://data.europa.eu/esco/skill/",
33
+ "canonical_url": "https://esco.ec.europa.eu/en/classification/skill_main"
34
+ },
35
+ {
36
+ "scheme": "digcomp",
37
+ "version": "2.2",
38
+ "iri_prefix": "https://joint-research-centre.ec.europa.eu/digcomp/2.2/",
39
+ "canonical_url": "https://joint-research-centre.ec.europa.eu/digcomp_en"
40
+ },
41
+ {
42
+ "scheme": "lifecomp",
43
+ "version": "2020",
44
+ "iri_prefix": "https://joint-research-centre.ec.europa.eu/lifecomp/2020/",
45
+ "canonical_url": "https://joint-research-centre.ec.europa.eu/lifecomp_en"
46
+ },
47
+ {
48
+ "scheme": "eqf",
49
+ "version": "2017",
50
+ "iri_prefix": "https://europa.eu/europass/eqf/",
51
+ "canonical_url": "https://europa.eu/europass/en/europass-tools/european-qualifications-framework"
52
+ }
53
+ ],
54
+ "base_transversal_core": {
55
+ "frameworks": [
56
+ { "scheme": "esco", "version": "v1.1.1" },
57
+ { "scheme": "digcomp", "version": "2.2" },
58
+ { "scheme": "lifecomp", "version": "2020" },
59
+ { "scheme": "eqf", "version": "2017" }
60
+ ],
61
+ "transversal_refs": [
62
+ { "competency_ref": "esco:S1", "scheme": "esco", "prefLabel": "communication, collaboration and creativity" },
63
+ { "competency_ref": "esco:S2", "scheme": "esco", "prefLabel": "information skills" },
64
+ { "competency_ref": "esco:S5", "scheme": "esco", "prefLabel": "working with computers" },
65
+ { "competency_ref": "digcomp:1.1", "scheme": "digcomp", "prefLabel": "Browsing, searching, filtering data, information and digital content" },
66
+ { "competency_ref": "digcomp:1.2", "scheme": "digcomp", "prefLabel": "Evaluating data, information and digital content" },
67
+ { "competency_ref": "lifecomp:L2", "scheme": "lifecomp", "prefLabel": "Critical thinking" },
68
+ { "competency_ref": "lifecomp:L3", "scheme": "lifecomp", "prefLabel": "Managing learning" }
69
+ ]
70
+ },
71
+ "competencies": [
72
+ { "competency_ref": "esco:S1", "scheme": "esco", "prefLabel": "communication, collaboration and creativity" },
73
+ { "competency_ref": "esco:S2", "scheme": "esco", "prefLabel": "information skills" },
74
+ { "competency_ref": "esco:S5", "scheme": "esco", "prefLabel": "working with computers" },
75
+ { "competency_ref": "digcomp:1.1", "scheme": "digcomp", "prefLabel": "Browsing, searching, filtering data, information and digital content" },
76
+ { "competency_ref": "digcomp:1.2", "scheme": "digcomp", "prefLabel": "Evaluating data, information and digital content" }
77
+ ],
78
+ "levels": [
79
+ {
80
+ "framework_ref": "https://europa.eu/europass/eqf/level/4",
81
+ "level_label": "EQF level 4",
82
+ "effective_at": "2026-05-26"
83
+ }
84
+ ],
85
+ "language_proficiency": [],
86
+ "mastery": [],
87
+ "gates": {
88
+ "verification_gates_default": {
89
+ "raise_only": true,
90
+ "claim_grounding_required": true,
91
+ "reversibility_threshold": "medium"
92
+ },
93
+ "human_veto_policy": {
94
+ "owner": "human_carrier",
95
+ "scope": ["public_post", "identity_assertion", "irreversible_action"]
96
+ }
97
+ },
98
+ "human_authority": {
99
+ "final_decision_owner": "human_carrier",
100
+ "agent_role": "advisory",
101
+ "escalation": "human_carrier_only"
102
+ },
103
+ "memory_scope": "memory.x_klickd.user",
104
+ "structured_memory": {
105
+ "scope": "memory.x_klickd.user",
106
+ "policy": "pack_scoped_only",
107
+ "entries": []
108
+ },
109
+ "evidence_policy": {
110
+ "required_for_claims": true,
111
+ "pointer_only": true,
112
+ "attestation_shape_ref": "rfc-002#8b"
113
+ },
114
+ "source_policy": {
115
+ "frameworks_offline_bundle": "docs/rfcs/chimera/frameworks/base_transversal_core.bundle.json",
116
+ "allow_inline_definitions": false,
117
+ "language_tags": ["en", "fr"]
118
+ },
119
+ "verification_gates": {
120
+ "version": 1,
121
+ "user_default": "silent",
122
+ "gates": [
123
+ {
124
+ "id": "factual-claim",
125
+ "action_class": "factual_claim_with_date",
126
+ "level": "confirm",
127
+ "reason": "Claims with dates require grounding (RFC-002 §8b)."
128
+ },
129
+ {
130
+ "id": "public-post",
131
+ "action_class": "public_post",
132
+ "level": "confirm",
133
+ "reason": "Public posting requires explicit human authorisation."
134
+ },
135
+ {
136
+ "id": "irreversible-action",
137
+ "action_class": "irreversible_action",
138
+ "level": "block",
139
+ "reason": "Irreversible actions blocked at base level; pack may raise but not lower."
140
+ }
141
+ ]
142
+ },
143
+ "router_cost": {
144
+ "tokens_estimate": 600,
145
+ "baseline": "base_plus_one",
146
+ "source_row": "docs/rfcs/chimera/packs/router_cost.md#31-xklickduser-derivation"
147
+ },
148
+ "forbidden_fields": [
149
+ "pedagogy",
150
+ "teaching_method",
151
+ "socratic_steps",
152
+ "prompt_strategy",
153
+ "scoring_rubric",
154
+ "intervention_policy",
155
+ "tone_rules",
156
+ "system_prompt_overrides",
157
+ "knowledge.mastered",
158
+ "mastered_topics"
159
+ ]
160
+ }
161
+ }