@klickd/core 4.0.0 → 4.0.2
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 +746 -8
- package/dist/index.d.cts +22 -1
- package/dist/index.d.ts +22 -1
- package/dist/index.js +741 -8
- package/package.json +4 -2
- package/starter-skills/README.md +98 -0
- package/starter-skills/coding.klickd +226 -0
- package/starter-skills/manifest.json +44 -0
- package/starter-skills/research.klickd +230 -0
- package/starter-skills/student.klickd +240 -0
- package/starter-skills/user.klickd +224 -0
- package/dist/klickd-payload-v4-preview.schema-W7RY72VP.json +0 -98
- package/dist/klickd-payload-v4.schema-7UPTEJOY.json +0 -354
- package/dist/klickd-v4-preview.schema-QHITWMK6.json +0 -95
- package/dist/klickd-v4.schema-ZZGRYTLY.json +0 -129
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@klickd/core",
|
|
3
|
-
"version": "4.0.
|
|
3
|
+
"version": "4.0.2",
|
|
4
4
|
"description": "Official JavaScript/TypeScript library for reading and writing .klickd portable AI context files",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"klickd",
|
|
@@ -29,12 +29,14 @@
|
|
|
29
29
|
},
|
|
30
30
|
"files": [
|
|
31
31
|
"dist",
|
|
32
|
+
"starter-skills",
|
|
32
33
|
"README.md",
|
|
33
34
|
"LICENSE"
|
|
34
35
|
],
|
|
35
36
|
"scripts": {
|
|
36
|
-
"build": "tsup src/index.ts --format esm,cjs --dts --external argon2 --external argon2-browser --external ajv
|
|
37
|
+
"build": "tsup src/index.ts --format esm,cjs --dts --external argon2 --external argon2-browser --external ajv",
|
|
37
38
|
"test": "node --experimental-vm-modules node_modules/.bin/jest",
|
|
39
|
+
"verify:tarball": "node scripts/verify-tarball.mjs",
|
|
38
40
|
"prepublishOnly": "npm run build"
|
|
39
41
|
},
|
|
40
42
|
"dependencies": {
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
# `examples/v4/starter-skills/` — Starter `.klickd` skills
|
|
2
|
+
|
|
3
|
+
> **Status:** Starter / sample artefacts. **Non-normative.** **Pre-release.**
|
|
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 and not host-side skills.
|
|
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
|
+
- **Stable v4.0 envelope.** `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`) by
|
|
56
|
+
default expects the structured fields at the top level of each file. For the
|
|
57
|
+
v4.0 starter `.klickd` files in this directory (which nest those fields
|
|
58
|
+
under `x_klickd_pack` so the v4.0 envelope round-trips unchanged) run it
|
|
59
|
+
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
|
+
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 sit on top of the **v4.0 envelope** and are non-normative starter artefacts for reviewers and integrators. Any future schema promotion and 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,226 @@
|
|
|
1
|
+
{
|
|
2
|
+
"klickd_version": "4.0",
|
|
3
|
+
"payload_schema_version": "4.0.0-preview.1",
|
|
4
|
+
"domain_schema_version": "v4-starter-1.0",
|
|
5
|
+
"created_at": "2026-05-26T00:00:00Z",
|
|
6
|
+
"encrypted": false,
|
|
7
|
+
"domain": "software_engineering",
|
|
8
|
+
"profile_kind": "developer",
|
|
9
|
+
"_pack_metadata": {
|
|
10
|
+
"kind": "starter_skill_pack",
|
|
11
|
+
"non_normative": true,
|
|
12
|
+
"claims_v41_ga": false,
|
|
13
|
+
"contains_real_pii": false,
|
|
14
|
+
"contains_secrets": false,
|
|
15
|
+
"see_readme": "examples/v4/starter-skills/README.md",
|
|
16
|
+
"note": "Non-normative starter skill pack on the v4.0 envelope."
|
|
17
|
+
},
|
|
18
|
+
"x_klickd_pack": {
|
|
19
|
+
"pack": "x.klickd/coding",
|
|
20
|
+
"pack_version": "0.1.0-starter",
|
|
21
|
+
"spec_ref": "examples/v4/starter-skills/README.md",
|
|
22
|
+
"publisher": {
|
|
23
|
+
"name": "klickd",
|
|
24
|
+
"ref": "https://klickd.app"
|
|
25
|
+
},
|
|
26
|
+
"frameworks": [
|
|
27
|
+
{
|
|
28
|
+
"scheme": "esco",
|
|
29
|
+
"version": "v1.1.1",
|
|
30
|
+
"iri_prefix": "http://data.europa.eu/esco/skill/",
|
|
31
|
+
"canonical_url": "https://esco.ec.europa.eu/en/classification/skill_main"
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
"scheme": "digcomp",
|
|
35
|
+
"version": "2.2",
|
|
36
|
+
"iri_prefix": "https://joint-research-centre.ec.europa.eu/digcomp/2.2/",
|
|
37
|
+
"canonical_url": "https://joint-research-centre.ec.europa.eu/digcomp_en"
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
"scheme": "sfia",
|
|
41
|
+
"version": "8",
|
|
42
|
+
"iri_prefix": "https://sfia-online.org/en/sfia-8/",
|
|
43
|
+
"canonical_url": "https://sfia-online.org/en/sfia-8"
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
"scheme": "eqf",
|
|
47
|
+
"version": "2017",
|
|
48
|
+
"iri_prefix": "https://europa.eu/europass/eqf/",
|
|
49
|
+
"canonical_url": "https://europa.eu/europass/en/europass-tools/european-qualifications-framework"
|
|
50
|
+
}
|
|
51
|
+
],
|
|
52
|
+
"base_transversal_core": {
|
|
53
|
+
"frameworks": [
|
|
54
|
+
{
|
|
55
|
+
"scheme": "esco",
|
|
56
|
+
"version": "v1.1.1"
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
"scheme": "digcomp",
|
|
60
|
+
"version": "2.2"
|
|
61
|
+
},
|
|
62
|
+
{
|
|
63
|
+
"scheme": "eqf",
|
|
64
|
+
"version": "2017"
|
|
65
|
+
}
|
|
66
|
+
],
|
|
67
|
+
"transversal_refs": [
|
|
68
|
+
{
|
|
69
|
+
"competency_ref": "esco:S5",
|
|
70
|
+
"scheme": "esco",
|
|
71
|
+
"prefLabel": "working with computers"
|
|
72
|
+
},
|
|
73
|
+
{
|
|
74
|
+
"competency_ref": "digcomp:3.4",
|
|
75
|
+
"scheme": "digcomp",
|
|
76
|
+
"prefLabel": "Programming"
|
|
77
|
+
},
|
|
78
|
+
{
|
|
79
|
+
"competency_ref": "digcomp:4.2",
|
|
80
|
+
"scheme": "digcomp",
|
|
81
|
+
"prefLabel": "Protecting personal data and privacy"
|
|
82
|
+
}
|
|
83
|
+
]
|
|
84
|
+
},
|
|
85
|
+
"competencies": [
|
|
86
|
+
{
|
|
87
|
+
"competency_ref": "esco:S5",
|
|
88
|
+
"scheme": "esco",
|
|
89
|
+
"prefLabel": "working with computers"
|
|
90
|
+
},
|
|
91
|
+
{
|
|
92
|
+
"competency_ref": "digcomp:3.4",
|
|
93
|
+
"scheme": "digcomp",
|
|
94
|
+
"prefLabel": "Programming"
|
|
95
|
+
},
|
|
96
|
+
{
|
|
97
|
+
"competency_ref": "digcomp:4.1",
|
|
98
|
+
"scheme": "digcomp",
|
|
99
|
+
"prefLabel": "Protecting devices"
|
|
100
|
+
},
|
|
101
|
+
{
|
|
102
|
+
"competency_ref": "digcomp:4.2",
|
|
103
|
+
"scheme": "digcomp",
|
|
104
|
+
"prefLabel": "Protecting personal data and privacy"
|
|
105
|
+
},
|
|
106
|
+
{
|
|
107
|
+
"competency_ref": "sfia:PROG",
|
|
108
|
+
"scheme": "sfia",
|
|
109
|
+
"prefLabel": "Programming/software development"
|
|
110
|
+
},
|
|
111
|
+
{
|
|
112
|
+
"competency_ref": "sfia:TEST",
|
|
113
|
+
"scheme": "sfia",
|
|
114
|
+
"prefLabel": "Systems and software testing"
|
|
115
|
+
}
|
|
116
|
+
],
|
|
117
|
+
"levels": [
|
|
118
|
+
{
|
|
119
|
+
"framework_ref": "https://europa.eu/europass/eqf/level/6",
|
|
120
|
+
"level_label": "EQF level 6",
|
|
121
|
+
"effective_at": "2026-05-26"
|
|
122
|
+
}
|
|
123
|
+
],
|
|
124
|
+
"language_proficiency": [],
|
|
125
|
+
"mastery": [],
|
|
126
|
+
"engineering_discipline": {
|
|
127
|
+
"code_review_required_before_merge": true,
|
|
128
|
+
"tests_required_for_new_logic": true,
|
|
129
|
+
"typecheck_required_for_typed_languages": true,
|
|
130
|
+
"secrets_handling": "pointer_only_never_inline",
|
|
131
|
+
"supply_chain_awareness": "verify_provenance_when_adding_dependency",
|
|
132
|
+
"reversibility_default": "prefer_reversible_changes"
|
|
133
|
+
},
|
|
134
|
+
"gates": {
|
|
135
|
+
"verification_gates_default": {
|
|
136
|
+
"raise_only": true,
|
|
137
|
+
"claim_grounding_required": true,
|
|
138
|
+
"reversibility_threshold": "low"
|
|
139
|
+
},
|
|
140
|
+
"human_veto_policy": {
|
|
141
|
+
"owner": "human_carrier",
|
|
142
|
+
"scope": [
|
|
143
|
+
"force_push",
|
|
144
|
+
"dependency_addition",
|
|
145
|
+
"secret_handling",
|
|
146
|
+
"production_deploy"
|
|
147
|
+
]
|
|
148
|
+
}
|
|
149
|
+
},
|
|
150
|
+
"human_authority": {
|
|
151
|
+
"final_decision_owner": "human_carrier",
|
|
152
|
+
"agent_role": "advisory",
|
|
153
|
+
"escalation": "human_carrier_only"
|
|
154
|
+
},
|
|
155
|
+
"memory_scope": "memory.x_klickd.coding",
|
|
156
|
+
"structured_memory": {
|
|
157
|
+
"scope": "memory.x_klickd.coding",
|
|
158
|
+
"policy": "pack_scoped_only",
|
|
159
|
+
"entries": []
|
|
160
|
+
},
|
|
161
|
+
"evidence_policy": {
|
|
162
|
+
"required_for_claims": true,
|
|
163
|
+
"pointer_only": true,
|
|
164
|
+
"attestation_shape_ref": "rfc-002#8b"
|
|
165
|
+
},
|
|
166
|
+
"source_policy": {
|
|
167
|
+
"allow_inline_definitions": false,
|
|
168
|
+
"language_tags": [
|
|
169
|
+
"en",
|
|
170
|
+
"fr"
|
|
171
|
+
]
|
|
172
|
+
},
|
|
173
|
+
"verification_gates": {
|
|
174
|
+
"version": 1,
|
|
175
|
+
"user_default": "silent",
|
|
176
|
+
"gates": [
|
|
177
|
+
{
|
|
178
|
+
"id": "force-push",
|
|
179
|
+
"action_class": "force_push",
|
|
180
|
+
"level": "block",
|
|
181
|
+
"reason": "Force push is destructive; requires explicit human authorisation."
|
|
182
|
+
},
|
|
183
|
+
{
|
|
184
|
+
"id": "dependency-add",
|
|
185
|
+
"action_class": "dependency_addition",
|
|
186
|
+
"level": "confirm",
|
|
187
|
+
"reason": "New dependencies expand the supply-chain surface; confirm provenance before adding."
|
|
188
|
+
},
|
|
189
|
+
{
|
|
190
|
+
"id": "secrets",
|
|
191
|
+
"action_class": "secret_handling",
|
|
192
|
+
"level": "block",
|
|
193
|
+
"reason": "Secrets never inline; pointer-only handling enforced at gate level."
|
|
194
|
+
},
|
|
195
|
+
{
|
|
196
|
+
"id": "production-deploy",
|
|
197
|
+
"action_class": "production_deploy",
|
|
198
|
+
"level": "block",
|
|
199
|
+
"reason": "Deploys touch shared infrastructure; reversibility threshold low."
|
|
200
|
+
},
|
|
201
|
+
{
|
|
202
|
+
"id": "destructive-git",
|
|
203
|
+
"action_class": "destructive_git",
|
|
204
|
+
"level": "confirm",
|
|
205
|
+
"reason": "Destructive git operations (reset --hard, branch -D) require confirmation."
|
|
206
|
+
}
|
|
207
|
+
]
|
|
208
|
+
},
|
|
209
|
+
"router_cost": {
|
|
210
|
+
"tokens_estimate": 900,
|
|
211
|
+
"baseline": "base_plus_one"
|
|
212
|
+
},
|
|
213
|
+
"forbidden_fields": [
|
|
214
|
+
"pedagogy",
|
|
215
|
+
"teaching_method",
|
|
216
|
+
"socratic_steps",
|
|
217
|
+
"prompt_strategy",
|
|
218
|
+
"scoring_rubric",
|
|
219
|
+
"intervention_policy",
|
|
220
|
+
"tone_rules",
|
|
221
|
+
"system_prompt_overrides",
|
|
222
|
+
"knowledge.mastered",
|
|
223
|
+
"mastered_topics"
|
|
224
|
+
]
|
|
225
|
+
}
|
|
226
|
+
}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
{
|
|
2
|
+
"manifest_version": "1.0",
|
|
3
|
+
"kind": "klickd_starter_skill_manifest",
|
|
4
|
+
"non_normative": true,
|
|
5
|
+
"claims_v41_ga": false,
|
|
6
|
+
"see_readme": "examples/v4/starter-skills/README.md",
|
|
7
|
+
"generated_at": "2026-05-26T00:00:00Z",
|
|
8
|
+
"hash_algo": "sha256",
|
|
9
|
+
"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.",
|
|
10
|
+
"packs": [
|
|
11
|
+
{
|
|
12
|
+
"id": "x.klickd/user",
|
|
13
|
+
"file": "user.klickd",
|
|
14
|
+
"pack_version": "0.1.0-starter",
|
|
15
|
+
"bytes": 6294,
|
|
16
|
+
"sha256_file": "514e68223066e05a1b3af8f1d42c9d81c3e30f685259f7cf45c8aa2d50052036",
|
|
17
|
+
"sha256_canonical_json": "f61d52924d34acccf47cf4e8d5f7b6c9d791fad9f5a4f963e062c2230f11a4c9"
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
"id": "x.klickd/student",
|
|
21
|
+
"file": "student.klickd",
|
|
22
|
+
"pack_version": "0.1.0-starter",
|
|
23
|
+
"bytes": 6685,
|
|
24
|
+
"sha256_file": "26d4bed5172a67397af201ca6ff6d96b716ff994f359acf68e29e7fc4a0865ec",
|
|
25
|
+
"sha256_canonical_json": "1a1c783442bc3dccd8ad2fac8e72785d746016fd3a34d0976656efdf9dfda69a"
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
"id": "x.klickd/research",
|
|
29
|
+
"file": "research.klickd",
|
|
30
|
+
"pack_version": "0.1.0-starter",
|
|
31
|
+
"bytes": 6488,
|
|
32
|
+
"sha256_file": "e0da88dbb5c1d0768ca7a05422c4831e0751462ce399c9109ac2a5de61fba2a9",
|
|
33
|
+
"sha256_canonical_json": "f6f7d613ce640421b1902cb93af750ff1c057971c7c05872b7643fe34ca74e16"
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
"id": "x.klickd/coding",
|
|
37
|
+
"file": "coding.klickd",
|
|
38
|
+
"pack_version": "0.1.0-starter",
|
|
39
|
+
"bytes": 6465,
|
|
40
|
+
"sha256_file": "ae022d357ee9b3445afca761c76cf74e47f4ba85fb8ae9470a3ddf8e3cafa07b",
|
|
41
|
+
"sha256_canonical_json": "a872a0bf1abf829d87ca05b73f47dbb3f817aca4152688cf00d2dd0ea24f9a7e"
|
|
42
|
+
}
|
|
43
|
+
]
|
|
44
|
+
}
|
|
@@ -0,0 +1,230 @@
|
|
|
1
|
+
{
|
|
2
|
+
"klickd_version": "4.0",
|
|
3
|
+
"payload_schema_version": "4.0.0-preview.1",
|
|
4
|
+
"domain_schema_version": "v4-starter-1.0",
|
|
5
|
+
"created_at": "2026-05-26T00:00:00Z",
|
|
6
|
+
"encrypted": false,
|
|
7
|
+
"domain": "research",
|
|
8
|
+
"profile_kind": "researcher",
|
|
9
|
+
"_pack_metadata": {
|
|
10
|
+
"kind": "starter_skill_pack",
|
|
11
|
+
"non_normative": true,
|
|
12
|
+
"claims_v41_ga": false,
|
|
13
|
+
"contains_real_pii": false,
|
|
14
|
+
"contains_secrets": false,
|
|
15
|
+
"see_readme": "examples/v4/starter-skills/README.md",
|
|
16
|
+
"note": "Non-normative starter skill pack on the v4.0 envelope."
|
|
17
|
+
},
|
|
18
|
+
"x_klickd_pack": {
|
|
19
|
+
"pack": "x.klickd/research",
|
|
20
|
+
"pack_version": "0.1.0-starter",
|
|
21
|
+
"spec_ref": "examples/v4/starter-skills/README.md",
|
|
22
|
+
"publisher": {
|
|
23
|
+
"name": "klickd",
|
|
24
|
+
"ref": "https://klickd.app"
|
|
25
|
+
},
|
|
26
|
+
"frameworks": [
|
|
27
|
+
{
|
|
28
|
+
"scheme": "esco",
|
|
29
|
+
"version": "v1.1.1",
|
|
30
|
+
"iri_prefix": "http://data.europa.eu/esco/skill/",
|
|
31
|
+
"canonical_url": "https://esco.ec.europa.eu/en/classification/skill_main"
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
"scheme": "digcomp",
|
|
35
|
+
"version": "2.2",
|
|
36
|
+
"iri_prefix": "https://joint-research-centre.ec.europa.eu/digcomp/2.2/",
|
|
37
|
+
"canonical_url": "https://joint-research-centre.ec.europa.eu/digcomp_en"
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
"scheme": "lifecomp",
|
|
41
|
+
"version": "2020",
|
|
42
|
+
"iri_prefix": "https://joint-research-centre.ec.europa.eu/lifecomp/2020/",
|
|
43
|
+
"canonical_url": "https://joint-research-centre.ec.europa.eu/lifecomp_en"
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
"scheme": "eqf",
|
|
47
|
+
"version": "2017",
|
|
48
|
+
"iri_prefix": "https://europa.eu/europass/eqf/",
|
|
49
|
+
"canonical_url": "https://europa.eu/europass/en/europass-tools/european-qualifications-framework"
|
|
50
|
+
}
|
|
51
|
+
],
|
|
52
|
+
"base_transversal_core": {
|
|
53
|
+
"frameworks": [
|
|
54
|
+
{
|
|
55
|
+
"scheme": "esco",
|
|
56
|
+
"version": "v1.1.1"
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
"scheme": "digcomp",
|
|
60
|
+
"version": "2.2"
|
|
61
|
+
},
|
|
62
|
+
{
|
|
63
|
+
"scheme": "lifecomp",
|
|
64
|
+
"version": "2020"
|
|
65
|
+
},
|
|
66
|
+
{
|
|
67
|
+
"scheme": "eqf",
|
|
68
|
+
"version": "2017"
|
|
69
|
+
}
|
|
70
|
+
],
|
|
71
|
+
"transversal_refs": [
|
|
72
|
+
{
|
|
73
|
+
"competency_ref": "esco:S2",
|
|
74
|
+
"scheme": "esco",
|
|
75
|
+
"prefLabel": "information skills"
|
|
76
|
+
},
|
|
77
|
+
{
|
|
78
|
+
"competency_ref": "digcomp:1.2",
|
|
79
|
+
"scheme": "digcomp",
|
|
80
|
+
"prefLabel": "Evaluating data, information and digital content"
|
|
81
|
+
},
|
|
82
|
+
{
|
|
83
|
+
"competency_ref": "lifecomp:L2",
|
|
84
|
+
"scheme": "lifecomp",
|
|
85
|
+
"prefLabel": "Critical thinking"
|
|
86
|
+
}
|
|
87
|
+
]
|
|
88
|
+
},
|
|
89
|
+
"competencies": [
|
|
90
|
+
{
|
|
91
|
+
"competency_ref": "esco:S2",
|
|
92
|
+
"scheme": "esco",
|
|
93
|
+
"prefLabel": "information skills"
|
|
94
|
+
},
|
|
95
|
+
{
|
|
96
|
+
"competency_ref": "digcomp:1.2",
|
|
97
|
+
"scheme": "digcomp",
|
|
98
|
+
"prefLabel": "Evaluating data, information and digital content"
|
|
99
|
+
},
|
|
100
|
+
{
|
|
101
|
+
"competency_ref": "digcomp:1.3",
|
|
102
|
+
"scheme": "digcomp",
|
|
103
|
+
"prefLabel": "Managing data, information and digital content"
|
|
104
|
+
},
|
|
105
|
+
{
|
|
106
|
+
"competency_ref": "lifecomp:L2",
|
|
107
|
+
"scheme": "lifecomp",
|
|
108
|
+
"prefLabel": "Critical thinking"
|
|
109
|
+
}
|
|
110
|
+
],
|
|
111
|
+
"levels": [
|
|
112
|
+
{
|
|
113
|
+
"framework_ref": "https://europa.eu/europass/eqf/level/7",
|
|
114
|
+
"level_label": "EQF level 7",
|
|
115
|
+
"effective_at": "2026-05-26"
|
|
116
|
+
}
|
|
117
|
+
],
|
|
118
|
+
"language_proficiency": [],
|
|
119
|
+
"mastery": [],
|
|
120
|
+
"claim_grounding": {
|
|
121
|
+
"policy": "every_factual_claim_with_date_or_attribution_requires_source",
|
|
122
|
+
"preferred_sources": [
|
|
123
|
+
"peer_reviewed",
|
|
124
|
+
"primary_source",
|
|
125
|
+
"official_registry"
|
|
126
|
+
],
|
|
127
|
+
"fallback_sources": [
|
|
128
|
+
"tool:web_search"
|
|
129
|
+
],
|
|
130
|
+
"forbidden_sources": [
|
|
131
|
+
"unverified_social_media"
|
|
132
|
+
],
|
|
133
|
+
"citation_shape_ref": "rfc-002#8b",
|
|
134
|
+
"replication_expected_when": "quantitative_result_or_dated_event"
|
|
135
|
+
},
|
|
136
|
+
"verification_artifacts_policy": {
|
|
137
|
+
"shape_ref": "rfc-003#verification_artifacts",
|
|
138
|
+
"required_for": [
|
|
139
|
+
"empirical_claim",
|
|
140
|
+
"quantitative_result",
|
|
141
|
+
"policy_recommendation"
|
|
142
|
+
],
|
|
143
|
+
"pointer_only": true
|
|
144
|
+
},
|
|
145
|
+
"gates": {
|
|
146
|
+
"verification_gates_default": {
|
|
147
|
+
"raise_only": true,
|
|
148
|
+
"claim_grounding_required": true,
|
|
149
|
+
"reversibility_threshold": "low"
|
|
150
|
+
},
|
|
151
|
+
"human_veto_policy": {
|
|
152
|
+
"owner": "human_carrier",
|
|
153
|
+
"scope": [
|
|
154
|
+
"publication",
|
|
155
|
+
"claim_attribution",
|
|
156
|
+
"data_release"
|
|
157
|
+
]
|
|
158
|
+
}
|
|
159
|
+
},
|
|
160
|
+
"human_authority": {
|
|
161
|
+
"final_decision_owner": "human_carrier",
|
|
162
|
+
"agent_role": "advisory",
|
|
163
|
+
"escalation": "human_carrier_only"
|
|
164
|
+
},
|
|
165
|
+
"memory_scope": "memory.x_klickd.research",
|
|
166
|
+
"structured_memory": {
|
|
167
|
+
"scope": "memory.x_klickd.research",
|
|
168
|
+
"policy": "pack_scoped_only",
|
|
169
|
+
"entries": []
|
|
170
|
+
},
|
|
171
|
+
"evidence_policy": {
|
|
172
|
+
"required_for_claims": true,
|
|
173
|
+
"pointer_only": true,
|
|
174
|
+
"attestation_shape_ref": "rfc-002#8b"
|
|
175
|
+
},
|
|
176
|
+
"source_policy": {
|
|
177
|
+
"allow_inline_definitions": false,
|
|
178
|
+
"language_tags": [
|
|
179
|
+
"en",
|
|
180
|
+
"fr"
|
|
181
|
+
]
|
|
182
|
+
},
|
|
183
|
+
"verification_gates": {
|
|
184
|
+
"version": 1,
|
|
185
|
+
"user_default": "silent",
|
|
186
|
+
"gates": [
|
|
187
|
+
{
|
|
188
|
+
"id": "uncited-claim",
|
|
189
|
+
"action_class": "factual_claim_without_citation",
|
|
190
|
+
"level": "block",
|
|
191
|
+
"reason": "Research pack: every factual claim must carry a source pointer."
|
|
192
|
+
},
|
|
193
|
+
{
|
|
194
|
+
"id": "quantitative-result",
|
|
195
|
+
"action_class": "quantitative_result",
|
|
196
|
+
"level": "confirm",
|
|
197
|
+
"reason": "Quantitative results require verification artefact (RFC-003 §verification_artifacts)."
|
|
198
|
+
},
|
|
199
|
+
{
|
|
200
|
+
"id": "publication",
|
|
201
|
+
"action_class": "publication",
|
|
202
|
+
"level": "block",
|
|
203
|
+
"reason": "No publication step from the agent; human authority required."
|
|
204
|
+
},
|
|
205
|
+
{
|
|
206
|
+
"id": "data-release",
|
|
207
|
+
"action_class": "data_release",
|
|
208
|
+
"level": "block",
|
|
209
|
+
"reason": "Data release requires explicit human consent; reversibility threshold low."
|
|
210
|
+
}
|
|
211
|
+
]
|
|
212
|
+
},
|
|
213
|
+
"router_cost": {
|
|
214
|
+
"tokens_estimate": 800,
|
|
215
|
+
"baseline": "base_plus_one"
|
|
216
|
+
},
|
|
217
|
+
"forbidden_fields": [
|
|
218
|
+
"pedagogy",
|
|
219
|
+
"teaching_method",
|
|
220
|
+
"socratic_steps",
|
|
221
|
+
"prompt_strategy",
|
|
222
|
+
"scoring_rubric",
|
|
223
|
+
"intervention_policy",
|
|
224
|
+
"tone_rules",
|
|
225
|
+
"system_prompt_overrides",
|
|
226
|
+
"knowledge.mastered",
|
|
227
|
+
"mastered_topics"
|
|
228
|
+
]
|
|
229
|
+
}
|
|
230
|
+
}
|