@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 +36 -0
- package/dist/index.cjs +37 -0
- package/dist/index.d.cts +22 -1
- package/dist/index.d.ts +22 -1
- package/dist/index.js +32 -0
- package/package.json +2 -1
- package/starter-skills/README.md +98 -0
- package/starter-skills/coding.klickd +177 -0
- package/starter-skills/manifest.json +45 -0
- package/starter-skills/research.klickd +175 -0
- package/starter-skills/student.klickd +193 -0
- package/starter-skills/user.klickd +161 -0
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
|
-
|
|
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
|
-
|
|
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.
|
|
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
|
+
}
|