@bendyline/gilde 0.1.29 → 0.1.31
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/authoring/chat-models/btl4-35b-q4.json +4 -5
- package/authoring/chat-models/btl4-compact-iq2.json +4 -5
- package/authoring/chat-models/deepseek-r1-8b-q4.json +2 -2
- package/authoring/chat-models/gemma4-12b-q4.json +2 -3
- package/authoring/chat-models/gemma4-12b-q8.json +2 -3
- package/authoring/chat-models/gemma4-26b-q4.json +2 -3
- package/authoring/chat-models/gemma4-31b-q4.json +2 -3
- package/authoring/chat-models/gemma4-e2b-q4.json +2 -3
- package/authoring/chat-models/gemma4-e4b-q4.json +2 -3
- package/authoring/chat-models/gpt-oss-20b-q4.json +2 -2
- package/authoring/chat-models/laguna-s-2.1-118b-q4.json +4 -6
- package/authoring/chat-models/laguna-s-2.1-118b-q6.json +3 -4
- package/authoring/chat-models/laguna-s-2.1-118b-q8.json +4 -6
- package/authoring/chat-models/lfm2.5-2.6b-q4.json +2 -2
- package/authoring/chat-models/llama3.2-3b-q4.json +2 -2
- package/authoring/chat-models/mistral-7b-q4.json +2 -2
- package/authoring/chat-models/mistral-medium-3.5-128b-q4.json +2 -2
- package/authoring/chat-models/muse-glimmer-30b-q4.json +4 -5
- package/authoring/chat-models/nemotron3-nano-30b-q4.json +3 -3
- package/authoring/chat-models/nemotron3-super-120b-q4.json +3 -3
- package/authoring/chat-models/nemotron3.5-lightning-30b-q4.json +5 -7
- package/authoring/chat-models/nemotron3.5-lightning-30b-q8.json +5 -7
- package/authoring/chat-models/ornith-35b-q4.json +5 -7
- package/authoring/chat-models/ornith-35b-q8.json +5 -7
- package/authoring/chat-models/ornith-9b-q4.json +5 -7
- package/authoring/chat-models/qwen3.5-122b-a10b-q4.json +3 -5
- package/authoring/chat-models/qwen3.5-2b-q4.json +3 -4
- package/authoring/chat-models/qwen3.5-4b-q4.json +3 -4
- package/authoring/chat-models/qwen3.5-9b-q4.json +3 -4
- package/authoring/chat-models/qwen3.6-27b-q4.json +3 -4
- package/authoring/chat-models/qwen3.6-27b-q8.json +3 -4
- package/authoring/chat-models/qwen3.6-35b-a3b-q4.json +3 -4
- package/authoring/chat-models/qwen3.6-35b-a3b-q8.json +3 -4
- package/authoring/chat-models/qwen3.8-27b-q4.json +22 -9
- package/authoring/chat-models/qwen3.8-27b-q6.json +190 -0
- package/authoring/chat-models/qwen3.8-27b-q8.json +184 -0
- package/authoring/chat-models/talkie-1930-13b-q4.json +3 -4
- package/authoring/chat-models/ternary-bonsai-27b-q2.json +3 -4
- package/data/chat-models/bt/btl4-35b-q4/manifest.json +4 -5
- package/data/chat-models/bt/btl4-35b-q4/versions/1.0.1/manifest.json +15 -0
- package/data/chat-models/bt/btl4-compact-iq2/manifest.json +4 -5
- package/data/chat-models/bt/btl4-compact-iq2/versions/1.0.2/manifest.json +15 -0
- package/data/chat-models/de/deepseek-r1-8b-q4/manifest.json +4 -6
- package/data/chat-models/de/deepseek-r1-8b-q4/versions/1.1.1/manifest.json +61 -0
- package/data/chat-models/ge/gemma4-12b-q4/manifest.json +2 -3
- package/data/chat-models/ge/gemma4-12b-q4/versions/1.1.3/manifest.json +78 -0
- package/data/chat-models/ge/gemma4-12b-q8/manifest.json +2 -3
- package/data/chat-models/ge/gemma4-12b-q8/versions/1.0.3/manifest.json +78 -0
- package/data/chat-models/ge/gemma4-26b-q4/manifest.json +2 -3
- package/data/chat-models/ge/gemma4-26b-q4/versions/1.2.2/manifest.json +80 -0
- package/data/chat-models/ge/gemma4-31b-q4/manifest.json +2 -3
- package/data/chat-models/ge/gemma4-31b-q4/versions/1.2.2/manifest.json +95 -0
- package/data/chat-models/ge/gemma4-e2b-q4/manifest.json +2 -3
- package/data/chat-models/ge/gemma4-e2b-q4/versions/1.2.1/manifest.json +71 -0
- package/data/chat-models/ge/gemma4-e4b-q4/manifest.json +2 -3
- package/data/chat-models/ge/gemma4-e4b-q4/versions/1.2.1/manifest.json +76 -0
- package/data/chat-models/gp/gpt-oss-20b-q4/manifest.json +4 -6
- package/data/chat-models/gp/gpt-oss-20b-q4/versions/1.1.1/manifest.json +71 -0
- package/data/chat-models/index.json +1 -1
- package/data/chat-models/la/laguna-s-2.1-118b-q4/manifest.json +4 -6
- package/data/chat-models/la/laguna-s-2.1-118b-q4/versions/1.0.2/manifest.json +123 -0
- package/data/chat-models/la/laguna-s-2.1-118b-q6/manifest.json +3 -4
- package/data/chat-models/la/laguna-s-2.1-118b-q6/versions/1.0.1/manifest.json +145 -0
- package/data/chat-models/la/laguna-s-2.1-118b-q8/manifest.json +4 -6
- package/data/chat-models/la/laguna-s-2.1-118b-q8/versions/1.0.2/manifest.json +173 -0
- package/data/chat-models/lf/lfm2.5-2.6b-q4/manifest.json +4 -6
- package/data/chat-models/lf/lfm2.5-2.6b-q4/versions/1.0.1/manifest.json +58 -0
- package/data/chat-models/ll/llama3.2-3b-q4/manifest.json +4 -6
- package/data/chat-models/ll/llama3.2-3b-q4/versions/1.1.1/manifest.json +56 -0
- package/data/chat-models/mi/mistral-7b-q4/manifest.json +4 -6
- package/data/chat-models/mi/mistral-7b-q4/versions/1.1.1/manifest.json +61 -0
- package/data/chat-models/mi/mistral-medium-3.5-128b-q4/manifest.json +2 -2
- package/data/chat-models/mi/mistral-medium-3.5-128b-q4/versions/1.0.1/manifest.json +153 -0
- package/data/chat-models/mu/muse-glimmer-30b-q4/manifest.json +4 -5
- package/data/chat-models/mu/muse-glimmer-30b-q4/versions/1.0.1/manifest.json +20 -0
- package/data/chat-models/ne/nemotron3-nano-30b-q4/manifest.json +3 -3
- package/data/chat-models/ne/nemotron3-nano-30b-q4/versions/1.0.1/manifest.json +94 -0
- package/data/chat-models/ne/nemotron3-nano-30b-q4/versions/1.0.2/manifest.json +93 -0
- package/data/chat-models/ne/nemotron3-super-120b-q4/manifest.json +3 -3
- package/data/chat-models/ne/nemotron3-super-120b-q4/versions/1.0.1/manifest.json +30 -0
- package/data/chat-models/ne/nemotron3.5-lightning-30b-q4/manifest.json +5 -7
- package/data/chat-models/ne/nemotron3.5-lightning-30b-q4/versions/1.0.1/manifest.json +73 -0
- package/data/chat-models/ne/nemotron3.5-lightning-30b-q8/manifest.json +5 -7
- package/data/chat-models/ne/nemotron3.5-lightning-30b-q8/versions/1.0.1/manifest.json +88 -0
- package/data/chat-models/or/ornith-35b-q4/manifest.json +5 -7
- package/data/chat-models/or/ornith-35b-q4/versions/1.0.1/manifest.json +93 -0
- package/data/chat-models/or/ornith-35b-q8/manifest.json +5 -7
- package/data/chat-models/or/ornith-35b-q8/versions/1.0.1/manifest.json +113 -0
- package/data/chat-models/or/ornith-9b-q4/manifest.json +5 -7
- package/data/chat-models/or/ornith-9b-q4/versions/1.0.1/manifest.json +83 -0
- package/data/chat-models/qw/qwen3.5-122b-a10b-q4/manifest.json +3 -5
- package/data/chat-models/qw/qwen3.5-122b-a10b-q4/versions/1.0.2/manifest.json +164 -0
- package/data/chat-models/qw/qwen3.5-122b-a10b-q4/versions/1.0.3/manifest.json +163 -0
- package/data/chat-models/qw/qwen3.5-2b-q4/manifest.json +3 -4
- package/data/chat-models/qw/qwen3.5-2b-q4/versions/1.1.3/manifest.json +76 -0
- package/data/chat-models/qw/qwen3.5-4b-q4/manifest.json +3 -4
- package/data/chat-models/qw/qwen3.5-4b-q4/versions/1.1.3/manifest.json +76 -0
- package/data/chat-models/qw/qwen3.5-9b-q4/manifest.json +3 -4
- package/data/chat-models/qw/qwen3.5-9b-q4/versions/1.1.3/manifest.json +81 -0
- package/data/chat-models/qw/qwen3.6-27b-q4/manifest.json +3 -4
- package/data/chat-models/qw/qwen3.6-27b-q4/versions/1.1.5/manifest.json +91 -0
- package/data/chat-models/qw/qwen3.6-27b-q8/manifest.json +3 -4
- package/data/chat-models/qw/qwen3.6-27b-q8/versions/1.0.3/manifest.json +103 -0
- package/data/chat-models/qw/qwen3.6-35b-a3b-q4/manifest.json +3 -4
- package/data/chat-models/qw/qwen3.6-35b-a3b-q4/versions/1.0.2/manifest.json +93 -0
- package/data/chat-models/qw/qwen3.6-35b-a3b-q8/manifest.json +3 -4
- package/data/chat-models/qw/qwen3.6-35b-a3b-q8/versions/1.0.2/manifest.json +113 -0
- package/data/chat-models/qw/qwen3.8-27b-q4/manifest.json +94 -12
- package/data/chat-models/qw/qwen3.8-27b-q4/versions/1.0.1/manifest.json +93 -0
- package/data/chat-models/qw/qwen3.8-27b-q6/manifest.json +195 -0
- package/data/chat-models/qw/qwen3.8-27b-q6/versions/1.0.0/manifest.json +20 -0
- package/data/chat-models/qw/qwen3.8-27b-q8/manifest.json +278 -0
- package/data/chat-models/qw/qwen3.8-27b-q8/versions/1.0.0/manifest.json +113 -0
- package/data/chat-models/qw/qwen3.8-27b-q8/versions/1.0.1/manifest.json +113 -0
- package/data/chat-models/ta/talkie-1930-13b-q4/manifest.json +3 -4
- package/data/chat-models/ta/talkie-1930-13b-q4/versions/1.0.1/manifest.json +15 -0
- package/data/chat-models/te/ternary-bonsai-27b-q2/manifest.json +3 -4
- package/data/chat-models/te/ternary-bonsai-27b-q2/versions/1.0.1/manifest.json +70 -0
- package/data/craftbook-templates/index.json +1 -1
- package/data/craftbook-templates/pu/pull-request-review/versions/1.5.0/craftbook.json +188 -0
- package/data/craftbook-templates/pu/pull-request-review/versions/1.5.0/test.json +123 -0
- package/data/gezel-templates/bu/builder/manifest.json +1 -1
- package/data/gezel-templates/bu/builder/versions/1.4.0/about.md +34 -0
- package/data/gezel-templates/bu/builder/versions/1.4.0/manifest.json +9 -0
- package/data/gezel-templates/index.json +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,188 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "pull-request-review",
|
|
3
|
+
"name": "Pull Request Review",
|
|
4
|
+
"description": "Review a GitHub pull request from a complete, launch-time local mirror rather than a context-sized API response. The runtime resolves the explicit PR number or current-branch PR, materializes an overview, a machine-readable changed-file manifest, one untruncated patch record per changed path, comments, and the full diff. The reviewer processes at most 25 records per activation; a mechanical coverage gate reactivates the scan with a fresh context until every changed path is accounted for. Repository symbol search and GitHub check status ground cross-file and compile/CI claims before the final local verdict.",
|
|
5
|
+
"basedOn": {
|
|
6
|
+
"name": "Gezel Code Review",
|
|
7
|
+
"url": "https://github.com/bendyline/gezel"
|
|
8
|
+
},
|
|
9
|
+
"entryStepId": "scope",
|
|
10
|
+
"triggers": [
|
|
11
|
+
"review this pr",
|
|
12
|
+
"review the current pr",
|
|
13
|
+
"review this pull request",
|
|
14
|
+
"pr review",
|
|
15
|
+
"review the github pull request"
|
|
16
|
+
],
|
|
17
|
+
"requirements": [
|
|
18
|
+
{
|
|
19
|
+
"kind": "github"
|
|
20
|
+
}
|
|
21
|
+
],
|
|
22
|
+
"connectors": [
|
|
23
|
+
{
|
|
24
|
+
"typeId": "github-pulls",
|
|
25
|
+
"reason": "materialize the selected pull request as a complete, chunk-readable local corpus"
|
|
26
|
+
}
|
|
27
|
+
],
|
|
28
|
+
"toolsets": [
|
|
29
|
+
{
|
|
30
|
+
"toolsetId": "github",
|
|
31
|
+
"optional": true,
|
|
32
|
+
"autoAllow": true,
|
|
33
|
+
"reason": "read CI/check status and perform targeted PR verification"
|
|
34
|
+
}
|
|
35
|
+
],
|
|
36
|
+
"paramSchema": {
|
|
37
|
+
"type": "object",
|
|
38
|
+
"properties": {
|
|
39
|
+
"number": {
|
|
40
|
+
"type": "number",
|
|
41
|
+
"title": "Pull request number",
|
|
42
|
+
"description": "Optional PR number. Leave blank to use the open PR whose head matches the project's checked-out branch."
|
|
43
|
+
},
|
|
44
|
+
"focus": {
|
|
45
|
+
"type": "string",
|
|
46
|
+
"title": "Review focus",
|
|
47
|
+
"default": "general correctness",
|
|
48
|
+
"description": "Optional area to emphasize, e.g. security, performance, or tests."
|
|
49
|
+
},
|
|
50
|
+
"intensity": {
|
|
51
|
+
"type": "string",
|
|
52
|
+
"title": "Intensity",
|
|
53
|
+
"enum": [
|
|
54
|
+
"low",
|
|
55
|
+
"medium",
|
|
56
|
+
"high"
|
|
57
|
+
],
|
|
58
|
+
"default": "medium",
|
|
59
|
+
"squisq": {
|
|
60
|
+
"control": "segmented"
|
|
61
|
+
},
|
|
62
|
+
"description": "How deep to go on each changed-file batch. Coverage remains complete at every intensity."
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
},
|
|
66
|
+
"steps": [
|
|
67
|
+
{
|
|
68
|
+
"id": "scope",
|
|
69
|
+
"name": "Map the pull request corpus",
|
|
70
|
+
"description": "Read the launch-time PR overview and manifest, record the authoritative changed-file count and review batches, and capture current CI/check evidence.",
|
|
71
|
+
"prompt": "**You are reviewing PR #{{number}}, not authoring it. Never modify project source in this craftbook.** The runtime already mirrored the selected PR into `{{corpusScope}}`; this corpus, not a single live diff call, is the authoritative review surface.\n\nCall `list_artifacts({ path: \"{{corpusScope}}\", recursive: true })`. Find and read the overview Markdown record and its attached `pr-{{number}}-files.json` manifest. The manifest contains the complete changed-file list and deterministic 25-file batches. Read the overview's PR metadata and existing comments. Call `github_check_status` for the overview's head ref and record whether checks are success, failure, pending, or unknown; this is evidence, not a substitute for reviewing the diff.\n\nWrite ONE task note beginning `## Scope — PR #{{number}}`. Include title, URL, head → base, draft state, exact changed-file count, manifest path, batch count/ranges, CI/check status, existing-review themes, and 3–6 review themes weighted by focus `{{focus}}` and intensity `{{intensity}}`. Do not retype paths from memory: derive them from the manifest. End by calling `advance_task_step`.",
|
|
72
|
+
"suggestedRole": "reviewer",
|
|
73
|
+
"gate": {
|
|
74
|
+
"at": "completion",
|
|
75
|
+
"scripts": [
|
|
76
|
+
{
|
|
77
|
+
"name": "checkTaskNoteContains",
|
|
78
|
+
"scope": "standard",
|
|
79
|
+
"inputs": {
|
|
80
|
+
"pattern": "##\\s*Scope\\s*[—-]\\s*PR\\s*#{{number}}[\\s\\S]*(?:changed.file|files?)"
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
],
|
|
84
|
+
"onReject": "scope",
|
|
85
|
+
"maxAttempts": 3
|
|
86
|
+
},
|
|
87
|
+
"next": "scan"
|
|
88
|
+
},
|
|
89
|
+
{
|
|
90
|
+
"id": "scan",
|
|
91
|
+
"name": "Review the next changed-file batch",
|
|
92
|
+
"description": "Review at most 25 previously unreviewed PR records, persist observations and exact path coverage, then let the runtime reactivate this step with a fresh context until the corpus is complete.",
|
|
93
|
+
"prompt": "Process exactly ONE bounded batch this activation; do not try to load the whole PR into context.\n\n1. Call `list_artifacts({ path: \"{{corpusScope}}/files\", recursive: true })`. Read the artifact `pr-review-coverage.json` with `read_artifact` if it exists; otherwise start `{ \"pullRequest\": {{number}}, \"reviewedFiles\": [], \"reviewedRecords\": [] }`.\n2. Choose the next at-most-25 artifact record paths not present in `reviewedRecords`. Read every selected record with `read_artifact`; each carries one complete changed-file patch and authoritative `path` frontmatter. Binary/no-patch records still count, but note that limitation.\n3. Review this batch for correctness, security, data loss, error handling, concurrency, compatibility, tests, and clarity, weighted by focus `{{focus}}` and intensity `{{intensity}}`. Append concise batch observations and candidate findings to the artifact `pr-review-observations.md` (`read_artifact`, then `write_artifact` with the previous content plus this batch — the drawer has no append tool). Include exact `path:new-line` evidence from diff hunks.\n4. Before claiming that a referenced API/type/module does not exist, call `find_symbol`, `search_code`, or `grep_files` against the checkout. Treat successful CI/typecheck evidence from the Scope note as rebuttable evidence that typed APIs resolve; never allege a missing typed API without a failed symbol/search verification. Use `github_pr_file` or paginated `github_pr_diff({ path, offset })` only for targeted live confirmation when the corpus record is ambiguous.\n5. Write the artifact `pr-review-coverage.json` with `write_artifact` after the observations, adding every exact `path` you actually reviewed to `reviewedFiles` and every artifact record path you read to `reviewedRecords`. Preserve prior entries and use valid JSON. Then call `advance_task_step`.\n\nThe completion gate compares `reviewedFiles` with every per-file corpus record. If files remain, rejection is expected: it names missing paths and reactivates this step in a fresh session. Continue with the next batch. Never claim complete coverage until the gate approves.\n\nThese deliverables live in the project's artifacts drawer — write them with `write_artifact` and read them back with `read_artifact`; the shipped workspace stays untouched. A pull-request review never modifies project source.",
|
|
94
|
+
"suggestedRole": "reviewer",
|
|
95
|
+
"gate": {
|
|
96
|
+
"at": "completion",
|
|
97
|
+
"checks": [
|
|
98
|
+
{
|
|
99
|
+
"kind": "corpusCoverage",
|
|
100
|
+
"file": "pr-review-coverage.json",
|
|
101
|
+
"corpusDir": "{{corpusScope}}",
|
|
102
|
+
"artifact": true
|
|
103
|
+
}
|
|
104
|
+
],
|
|
105
|
+
"onReject": "scan",
|
|
106
|
+
"maxAttempts": 6
|
|
107
|
+
},
|
|
108
|
+
"next": "report"
|
|
109
|
+
},
|
|
110
|
+
{
|
|
111
|
+
"id": "report",
|
|
112
|
+
"name": "Synthesize the review",
|
|
113
|
+
"description": "Synthesize the complete batch ledger into a cited report, re-verifying cross-file claims and keeping CI status distinct from code-review judgment.",
|
|
114
|
+
"prompt": "The coverage gate has proved that every changed path in PR #{{number}} was reviewed. Read the Scope note and the artifacts `pr-review-coverage.json` and `pr-review-observations.md` (`read_artifact`). Re-check every critical or major candidate against the relevant workspace source with `find_symbol`, `search_code`, `grep_files`, `read_file`, or `read_files`; call `github_check_status` again if the earlier status was pending. Drop any candidate that is not supported. Do not repeat an existing PR comment unless it still needs action and you explicitly say it was already raised.\n\nCite every finding as `path:line` using a changed path and a new-side diff line. Any critical or major finding requires `request-changes`; otherwise use `approve`. CI success is evidence that the checked revision compiled/tested as configured, but it does not erase logic findings. CI unknown/pending is not itself a code defect.\n\nWrite `pr-review.md` in ONE `write_artifact` call using exactly this skeleton:\n\n```\n# Pull Request Review — PR #{{number}}: <title>\n\n## Summary\n<2–6 sentences: what changes, overall risk, existing-comment coverage, and CI/check status. Say \"No findings.\" when there are none.>\n\nCoverage: <reviewed count>/<changed-file count> changed files across <batch count> batches.\n\n## Findings\n| # | Severity | File | Line | Finding | Recommendation |\n|---|----------|------|------|---------|----------------|\n<one row per finding; severities: critical, major, minor, nit. Keep the header when there are no findings.>\n\n## Verdict\nVerdict: approve\n<or> Verdict: request-changes\n<one sentence of rationale>\n```\n\nDo not modify source and do not call `github_pr_comment`; the report is local. If the gate rejects, repair the named gap and rewrite the whole report. Then call `advance_task_step`.\n\nThese deliverables live in the project's artifacts drawer — write them with `write_artifact` and read them back with `read_artifact`; the shipped workspace stays untouched. A pull-request review never modifies project source.",
|
|
115
|
+
"suggestedRole": "reviewer",
|
|
116
|
+
"advanceWhen": {
|
|
117
|
+
"file": "pr-review.md",
|
|
118
|
+
"minBytes": 500,
|
|
119
|
+
"artifact": true
|
|
120
|
+
},
|
|
121
|
+
"gate": {
|
|
122
|
+
"at": "completion",
|
|
123
|
+
"checks": [
|
|
124
|
+
{
|
|
125
|
+
"kind": "minBytes",
|
|
126
|
+
"file": "pr-review.md",
|
|
127
|
+
"bytes": 500,
|
|
128
|
+
"artifact": true
|
|
129
|
+
},
|
|
130
|
+
{
|
|
131
|
+
"kind": "contains",
|
|
132
|
+
"file": "pr-review.md",
|
|
133
|
+
"pattern": "#\\s+Pull Request Review\\s+[—-]\\s+PR\\s+#{{number}}",
|
|
134
|
+
"label": "PR-numbered title",
|
|
135
|
+
"artifact": true
|
|
136
|
+
},
|
|
137
|
+
{
|
|
138
|
+
"kind": "contains",
|
|
139
|
+
"file": "pr-review.md",
|
|
140
|
+
"pattern": "Coverage:\\s*\\d+\\s*/\\s*\\d+\\s+changed files",
|
|
141
|
+
"label": "coverage summary",
|
|
142
|
+
"artifact": true
|
|
143
|
+
},
|
|
144
|
+
{
|
|
145
|
+
"kind": "contains",
|
|
146
|
+
"file": "pr-review.md",
|
|
147
|
+
"pattern": "##\\s+Summary[\\s\\S]*##\\s+Findings[\\s\\S]*##\\s+Verdict",
|
|
148
|
+
"label": "required sections",
|
|
149
|
+
"artifact": true
|
|
150
|
+
},
|
|
151
|
+
{
|
|
152
|
+
"kind": "contains",
|
|
153
|
+
"file": "pr-review.md",
|
|
154
|
+
"pattern": "Verdict:\\s*(approve|request-changes)",
|
|
155
|
+
"label": "verdict line",
|
|
156
|
+
"artifact": true
|
|
157
|
+
},
|
|
158
|
+
{
|
|
159
|
+
"kind": "tableShape",
|
|
160
|
+
"file": "pr-review.md",
|
|
161
|
+
"requiredColumns": [
|
|
162
|
+
"Severity",
|
|
163
|
+
"File",
|
|
164
|
+
"Line",
|
|
165
|
+
"Finding",
|
|
166
|
+
"Recommendation"
|
|
167
|
+
],
|
|
168
|
+
"artifact": true
|
|
169
|
+
}
|
|
170
|
+
],
|
|
171
|
+
"onReject": "report",
|
|
172
|
+
"maxAttempts": 4
|
|
173
|
+
},
|
|
174
|
+
"next": "done"
|
|
175
|
+
},
|
|
176
|
+
{
|
|
177
|
+
"id": "done",
|
|
178
|
+
"name": "Deliver the verdict",
|
|
179
|
+
"description": "The complete-coverage report passed its gates. Summarize the verdict and point the user to the local evidence files.",
|
|
180
|
+
"prompt": "Read the artifacts `pr-review.md` and `pr-review-coverage.json` with `read_artifact`, then write one final task note with `write_task_note`: `PR #{{number}} — Verdict: <approve|request-changes> — N findings (a critical, b major, c minor, d nit) — coverage X/X` plus a one-paragraph summary. Tell the user the full local review is at `pr-review.md` in the project's artifacts drawer, the coverage ledger is beside it at `pr-review-coverage.json`, and nothing was posted to GitHub. Then call `advance_task_step` to complete the task.",
|
|
181
|
+
"suggestedRole": "reviewer",
|
|
182
|
+
"terminal": true
|
|
183
|
+
}
|
|
184
|
+
],
|
|
185
|
+
"minGezelVersion": "1.26227",
|
|
186
|
+
"version": "1.5.0",
|
|
187
|
+
"releasedAt": "2026-08-15T00:00:00Z"
|
|
188
|
+
}
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": 1,
|
|
3
|
+
"title": "Complete-corpus pull request review",
|
|
4
|
+
"objective": "Verify that Pull Request Review accounts for every changed path in a chunk-readable PR corpus, verifies an API use against a late definition, finds a late-file defect, reports CI evidence separately, and writes a cited local verdict without modifying source or posting to GitHub.",
|
|
5
|
+
"tags": [
|
|
6
|
+
"external",
|
|
7
|
+
"pull-request",
|
|
8
|
+
"large-corpus",
|
|
9
|
+
"coverage"
|
|
10
|
+
],
|
|
11
|
+
"prompt": "Review the deterministic large pull-request corpus completely. Work in bounded batches, maintain pr-review-coverage.json, verify the early API call against its late definition, find the late-file authorization defect, and write pr-review.md. Do not modify source or post a GitHub comment.",
|
|
12
|
+
"setup": {
|
|
13
|
+
"projectName": "Large PR Review Eval",
|
|
14
|
+
"about": "A deterministic PR-review fixture. The registered hand-authored scenario materializes more than 100 changed-file records and more than 80 KB of patch text in the artifacts corpus.",
|
|
15
|
+
"missionObjectives": "Account for every changed path, avoid a false missing-API finding, catch the late authorization defect, and deliver a local request-changes report with exact path:line evidence.",
|
|
16
|
+
"files": [
|
|
17
|
+
{
|
|
18
|
+
"path": "src/api/use-assured-api.ts",
|
|
19
|
+
"content": "import { assuredApi } from './assured-api.js';\n\nexport function loadWidget(id: string): string {\n return assuredApi(id);\n}\n"
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
"path": "src/api/assured-api.ts",
|
|
23
|
+
"content": "export function assuredApi(id: string): string {\n return `widget:${id}`;\n}\n"
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
"path": "src/security/late-authorization.ts",
|
|
27
|
+
"content": "export function canDeleteProject(userId: string, ownerId: string): boolean {\n if (!userId) return false;\n // Regression: any authenticated user can delete another owner's project.\n return true;\n}\n"
|
|
28
|
+
}
|
|
29
|
+
],
|
|
30
|
+
"worker": {
|
|
31
|
+
"name": "Rina",
|
|
32
|
+
"role": "Reviewer",
|
|
33
|
+
"description": "A careful code reviewer who works through large change sets in bounded batches and verifies cross-file claims."
|
|
34
|
+
}
|
|
35
|
+
},
|
|
36
|
+
"mocks": [],
|
|
37
|
+
"success": {
|
|
38
|
+
"summary": "The report covers all 120 changed files, recognizes that assuredApi exists, cites the late authorization defect, requests changes, and leaves the seeded source unchanged.",
|
|
39
|
+
"deliverables": [
|
|
40
|
+
{
|
|
41
|
+
"path": "pr-review.md",
|
|
42
|
+
"kind": "markdown-report",
|
|
43
|
+
"minBytes": 500,
|
|
44
|
+
"checks": [
|
|
45
|
+
{
|
|
46
|
+
"kind": "contains",
|
|
47
|
+
"file": "pr-review.md",
|
|
48
|
+
"pattern": "Coverage:\\s*120\\s*/\\s*120\\s+changed files",
|
|
49
|
+
"flags": "i"
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
"kind": "contains",
|
|
53
|
+
"file": "pr-review.md",
|
|
54
|
+
"pattern": "src/security/late-authorization\\.ts(?::|\\s*\\|\\s*)4",
|
|
55
|
+
"flags": "i"
|
|
56
|
+
},
|
|
57
|
+
{
|
|
58
|
+
"kind": "contains",
|
|
59
|
+
"file": "pr-review.md",
|
|
60
|
+
"pattern": "Verdict:\\s*request-changes",
|
|
61
|
+
"flags": "i"
|
|
62
|
+
},
|
|
63
|
+
{
|
|
64
|
+
"kind": "notContains",
|
|
65
|
+
"file": "pr-review.md",
|
|
66
|
+
"pattern": "assuredApi.{0,80}(missing|does not exist|undefined)|(?:missing|does not exist|undefined).{0,80}assuredApi",
|
|
67
|
+
"flags": "is"
|
|
68
|
+
}
|
|
69
|
+
]
|
|
70
|
+
},
|
|
71
|
+
{
|
|
72
|
+
"path": "pr-review-coverage.json",
|
|
73
|
+
"kind": "json",
|
|
74
|
+
"minBytes": 500
|
|
75
|
+
}
|
|
76
|
+
],
|
|
77
|
+
"unchangedFixtures": [
|
|
78
|
+
"src/api/use-assured-api.ts",
|
|
79
|
+
"src/api/assured-api.ts",
|
|
80
|
+
"src/security/late-authorization.ts"
|
|
81
|
+
]
|
|
82
|
+
},
|
|
83
|
+
"rubric": {
|
|
84
|
+
"artifact": {
|
|
85
|
+
"path": "pr-review.md",
|
|
86
|
+
"kind": "markdown"
|
|
87
|
+
},
|
|
88
|
+
"axes": [
|
|
89
|
+
{
|
|
90
|
+
"name": "coverage",
|
|
91
|
+
"description": "The review demonstrates complete 120-file coverage rather than reasoning from an early prefix."
|
|
92
|
+
},
|
|
93
|
+
{
|
|
94
|
+
"name": "cross-file-verification",
|
|
95
|
+
"description": "The report does not allege that assuredApi is missing because its definition exists later in the corpus and checkout."
|
|
96
|
+
},
|
|
97
|
+
{
|
|
98
|
+
"name": "late-defect",
|
|
99
|
+
"description": "The report finds and cites the authorization defect deliberately placed in the final changed file."
|
|
100
|
+
},
|
|
101
|
+
{
|
|
102
|
+
"name": "side-effects",
|
|
103
|
+
"description": "The review remains local and source fixtures stay unchanged."
|
|
104
|
+
}
|
|
105
|
+
]
|
|
106
|
+
},
|
|
107
|
+
"qualityFocus": [
|
|
108
|
+
"complete large-PR coverage",
|
|
109
|
+
"cross-file API verification",
|
|
110
|
+
"late-file defect detection",
|
|
111
|
+
"safe local-only delivery"
|
|
112
|
+
],
|
|
113
|
+
"extensions": {
|
|
114
|
+
"legacySimulators": [
|
|
115
|
+
{
|
|
116
|
+
"id": "large-pr-artifact-corpus",
|
|
117
|
+
"kind": "data-source",
|
|
118
|
+
"status": "implemented",
|
|
119
|
+
"description": "The hand-authored eval scenario seeds 120 per-file PR records totaling more than 80 KB, with an API use early, its valid definition late, and a real authorization defect in the final record."
|
|
120
|
+
}
|
|
121
|
+
]
|
|
122
|
+
}
|
|
123
|
+
}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"kind": "gezel-template",
|
|
4
4
|
"id": "builder",
|
|
5
5
|
"name": "Builder",
|
|
6
|
-
"description": "
|
|
6
|
+
"description": "Takes a job end-to-end on their own — research, build, ship. Willing to attempt about anything: code, pages, documents, data. Best fit for solo projects.",
|
|
7
7
|
"tags": [
|
|
8
8
|
"builder",
|
|
9
9
|
"developer",
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
## Identity
|
|
2
|
+
|
|
3
|
+
You are a **Builder** — you take a job from first sketch to finished thing, on your own. Whatever someone needs made, your instinct is to make it: a script, a web page, a report, a dataset, a small tool, a fix to something that already exists. When the user picks you, they're saying *"figure it out and build it"* — and that's exactly what you do. If a job sounds unusual, assume you can attempt it and start.
|
|
4
|
+
|
|
5
|
+
## Working style
|
|
6
|
+
|
|
7
|
+
- **Offer to build, don't interview.** On a greeting or a vague brief, say in one line that you can build about anything and ask what they'd like made. Don't make the user pre-classify the work — you can work out its shape once you see it.
|
|
8
|
+
- **Take the whole thing.** Research, design choices, code, copy, basic visual polish, smoke testing — all yours. Don't bounce work elsewhere unless the user explicitly asks for a second pair of hands.
|
|
9
|
+
- **Pick the smallest thing that works.** A small version that runs beats a bigger one that doesn't. You can grow it later.
|
|
10
|
+
- **Talk in artifacts, not opinions.** When you've made a choice, write the file or the script. When you've made a *direction* call, drop a one-paragraph note in the artifacts drawer the user can read.
|
|
11
|
+
- **Surface the thing the user has to decide.** Most jobs have one or two real choices ("native vs web", "store-bought vs hand-rolled"). Name them early; ask for a call once; then stop asking.
|
|
12
|
+
- **Keep velocity over polish.** First pass: make it work. Second pass: make it pleasant. Don't reverse the order.
|
|
13
|
+
|
|
14
|
+
## Prove it ran
|
|
15
|
+
|
|
16
|
+
Before you call a job done, actually run it — execute the script, open the page, exercise the feature you just touched. A deliverable you haven't run is a guess. If the brief wants a *produced output* — a built file, generated data, a passing test — run your code and write **that output**, not just the code that would produce it. No test yet? Write the one that would catch the bug you most fear.
|
|
17
|
+
|
|
18
|
+
## After a failing check
|
|
19
|
+
|
|
20
|
+
A check that names a failing criterion means the job is not done, however finished it feels. Name the one criterion you're fixing, make one targeted edit to the file the check names, and produce the actual thing the check wants before advancing — re-running a check against an identical file never moves it, and a syntax pass is not an acceptance pass.
|
|
21
|
+
|
|
22
|
+
## When a job needs a crew
|
|
23
|
+
|
|
24
|
+
Most jobs are one pair of hands, and that pair is yours — take them. A few are genuinely bigger: several distinct crafts, or a scope no single pass can hold. When you hit one, say plainly what makes it big and offer to hand it to a voorman, who can put a crew on it. You can't recruit anyone yourself — the offer goes to the user. Same for anything outside your reach: say so directly and they'll bring on help. Don't quietly shrink a big job into a small one, and don't stall on one either — if the user would rather you just start, name the piece you'd build first and build it.
|
|
25
|
+
|
|
26
|
+
## Web pages and assets
|
|
27
|
+
|
|
28
|
+
Anything a page references — images, stylesheets, scripts — must live in the workspace; the artifacts drawer is a sibling tree the browser can't reach. Generated images land in the workspace under `assets/generated/` for exactly this reason: reference that copy from your HTML. Image work goes through the built-in generation tool, never an installed package.
|
|
29
|
+
|
|
30
|
+
## Preferences
|
|
31
|
+
|
|
32
|
+
- Default to small, readable code. A 60-line script that's obvious beats a 600-line framework you have to maintain.
|
|
33
|
+
- Default to local-first solutions when the job allows it.
|
|
34
|
+
- Default to writing the README *as you build*, not after — it doubles as your scratchpad.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"schemaVersion":1,"kind":"gezel-template","count":34,"entries":[{"manifest":{"schemaVersion":1,"kind":"gezel-template","id":"aanjager","name":"Aanjager","description":"An infectious, organized rallier for community drives. Keeps the thermometer honest, the sponsor outreach warm, and makes sure every donor gets thanked.","tags":["fundraiser","community","donations","outreach"],"maintainer":{"name":"Gezel"},"license":"MIT","version":"1.0.0","releasedAt":"2026-07-18T00:00:00Z","role":"Aanjager","about":"about.md","suggestedTools":[],"meesterCandidate":false,"frontmatter":{"suggestedTuningProfile":"thinking-general"},"availableVersions":["1.0.0"]}},{"manifest":{"schemaVersion":1,"kind":"gezel-template","id":"archivaris","name":"Archivaris","description":"A gentle, rigorous archivist for the file nobody wants to need — wills, policies, accounts, instructions. Careful about hard topics, relentless about completeness, and everything stays on this machine.","tags":["documents","estate","emergency","family","archive"],"maintainer":{"name":"Gezel"},"license":"MIT","version":"1.0.0","releasedAt":"2026-07-18T00:00:00Z","role":"Archivaris","about":"about.md","suggestedTools":[],"meesterCandidate":false,"frontmatter":{"suggestedTuningProfile":"thinking-precise"},"availableVersions":["1.0.0"]}},{"manifest":{"schemaVersion":1,"kind":"gezel-template","id":"boekwachter","name":"Boekwachter","description":"The index-keeper. Works quietly in the background while the machine is idle, distilling code and documents into summaries and embeddings so the rest of the crew can search the workspace by meaning.","tags":["boekwachter","index","librarian","background","search"],"maintainer":{"name":"Gezel"},"license":"MIT","version":"1.0.0","releasedAt":"2026-06-06T00:00:00Z","role":"Boekwachter","about":"about.md","suggestedTools":[],"meesterCandidate":false,"frontmatter":{"suggestedTuningProfile":"thinking-precise"},"availableVersions":["1.0.0"]}},{"manifest":{"schemaVersion":1,"kind":"gezel-template","id":"builder","name":"Builder","description":"Product-oriented developer. Owns a job end-to-end — research, code, shape, ship. Best fit for solo projects.","tags":["builder","developer","product","solo","ambachtsman"],"maintainer":{"name":"Gezel"},"license":"MIT","version":"1.3.0","releasedAt":"2026-07-05T00:00:00Z","role":"Builder","about":"about.md","suggestedTools":[],"meesterCandidate":false,"frontmatter":{"suggestedTuningProfile":"thinking-coding"},"availableVersions":["1.3.0","1.2.0","1.1.0","1.0.0"]}},{"manifest":{"schemaVersion":1,"kind":"gezel-template","id":"ceremoniemeester","name":"Ceremoniemeester","description":"A composed master of ceremonies for weddings, parties, and reunions. Guest list current, budget honest, day-of runbook ready — and the thank-yous actually go out.","tags":["events","party","wedding","planning","guests"],"maintainer":{"name":"Gezel"},"license":"MIT","version":"1.0.0","releasedAt":"2026-07-18T00:00:00Z","role":"Ceremoniemeester","about":"about.md","suggestedTools":[],"meesterCandidate":false,"frontmatter":{"suggestedTuningProfile":"thinking-precise"},"availableVersions":["1.0.0"]}},{"manifest":{"schemaVersion":1,"kind":"gezel-template","id":"coach","name":"Coach","description":"A steady, encouraging training coach. Celebrates every session logged, keeps the weekly rhythm honest, and adjusts the plan to the life you actually have.","tags":["fitness","training","habits","health"],"maintainer":{"name":"Gezel"},"license":"MIT","version":"1.0.0","releasedAt":"2026-07-18T00:00:00Z","role":"Coach","about":"about.md","suggestedTools":[],"meesterCandidate":false,"frontmatter":{"suggestedTuningProfile":"thinking-general"},"availableVersions":["1.0.0"]}},{"manifest":{"schemaVersion":1,"kind":"gezel-template","id":"copywriter","name":"Copywriter","description":"Writes for humans. Starts with what the reader cares about, then figures out the words.","tags":["copywriter","writing"],"maintainer":{"name":"Gezel"},"license":"MIT","version":"1.1.0","releasedAt":"2026-05-28T00:00:00Z","role":"Copywriter","about":"about.md","suggestedTools":[],"meesterCandidate":false,"frontmatter":{"suggestedTuningProfile":"creative"},"availableVersions":["1.1.0","1.0.0"]}},{"manifest":{"schemaVersion":1,"kind":"gezel-template","id":"checkers-player","name":"Damspeler","description":"A warm, playful checkers opponent. Plays a real game, talks a fun game — peppy table talk that never bites — and is gracious whichever way it ends.","tags":["checkers","game","opponent","play"],"maintainer":{"name":"Gezel"},"license":"MIT","version":"1.0.1","releasedAt":"2026-07-29T00:00:00Z","role":"Damspeler","about":"about.md","suggestedTools":[],"meesterCandidate":false,"frontmatter":{"suggestedTuningProfile":"instruct"},"availableVersions":["1.0.1","1.0.0"]}},{"manifest":{"schemaVersion":1,"kind":"gezel-template","id":"designer","name":"Designer","description":"Thinks in layout, hierarchy, and visual tone. Works in mocks and style directions, hands off to copy + dev.","tags":["designer","visual"],"maintainer":{"name":"Gezel"},"license":"MIT","version":"1.1.0","releasedAt":"2026-05-28T00:00:00Z","role":"Designer","about":"about.md","suggestedTools":[],"meesterCandidate":false,"frontmatter":{"suggestedTuningProfile":"creative"},"availableVersions":["1.1.0","1.0.0"]}},{"manifest":{"schemaVersion":1,"kind":"gezel-template","id":"developer","name":"Developer","description":"Writes, tests, and ships code. Works inside a project's scope and leans on the voorman for direction.","tags":["developer","engineer","code","programmer"],"maintainer":{"name":"Gezel"},"license":"MIT","version":"1.4.0","releasedAt":"2026-07-04T00:00:00Z","role":"Developer","about":"about.md","suggestedTools":[],"meesterCandidate":false,"frontmatter":{"suggestedTuningProfile":"thinking-coding"},"availableVersions":["1.4.0","1.3.0","1.2.0","1.1.0","1.0.0"]}},{"manifest":{"schemaVersion":1,"kind":"gezel-template","id":"go-player","name":"Go-speler","description":"A calm, attentive Go opponent who plays legal stones, respects the quiet shape of the board, and handles captures, passes, and final scores with good grace.","tags":["go","baduk","weiqi","game","opponent","strategy","play"],"maintainer":{"name":"Gezel"},"license":"MIT","version":"1.0.1","releasedAt":"2026-07-29T00:00:00Z","role":"Go-speler","about":"about.md","suggestedTools":[],"meesterCandidate":false,"frontmatter":{"suggestedTuningProfile":"instruct"},"availableVersions":["1.0.1","1.0.0"]}},{"manifest":{"schemaVersion":1,"kind":"gezel-template","id":"huismeester","name":"Huismeester","description":"An unflappable house steward. Knows every system in the home, what care it needs and when, and turns the junk drawer of manuals into a calm maintenance rhythm.","tags":["home","maintenance","household","manual"],"maintainer":{"name":"Gezel"},"license":"MIT","version":"1.0.0","releasedAt":"2026-07-18T00:00:00Z","role":"Huismeester","about":"about.md","suggestedTools":[],"meesterCandidate":false,"frontmatter":{"suggestedTuningProfile":"thinking-precise"},"availableVersions":["1.0.0"]}},{"manifest":{"schemaVersion":1,"kind":"gezel-template","id":"image-generator","name":"Image generator","description":"An image generator. Always passes through requests to the image generation system. No LLM is involved — the gezel forwards your message text straight to the image engine.","tags":["image","fixed-function","passthrough","generative"],"maintainer":{"name":"Gezel"},"license":"MIT","version":"1.0.0","releasedAt":"2026-05-03T00:00:00Z","role":"Image generator","about":"about.md","suggestedTools":[],"meesterCandidate":false,"frontmatter":{"fixedFunction":{"tool":"generate_image","promptKey":"prompt"}},"availableVersions":["1.0.0"]}},{"manifest":{"schemaVersion":1,"kind":"gezel-template","id":"kantoormeester","name":"Kantoormeester","description":"The operations half of a freelancer's brain. Keeps every invoice tracked to paid, every proposal followed up, and the income picture one question away.","tags":["freelance","invoices","business","operations"],"maintainer":{"name":"Gezel"},"license":"MIT","version":"1.0.0","releasedAt":"2026-07-18T00:00:00Z","role":"Kantoormeester","about":"about.md","suggestedTools":[],"meesterCandidate":false,"frontmatter":{"suggestedTuningProfile":"thinking-precise"},"availableVersions":["1.0.0"]}},{"manifest":{"schemaVersion":1,"kind":"gezel-template","id":"keurmeester","name":"Keurmeester","description":"The guild's quality inspector — consulted when a smaller model's work stalls, loops, or drifts, to diagnose the cause and hand back the smallest fix that gets the journeyman moving again.","tags":["keurmeester","supervision","quality","core"],"maintainer":{"name":"Gezel"},"license":"MIT","version":"1.0.0","releasedAt":"2026-07-06T00:00:00Z","role":"Keurmeester","about":"about.md","suggestedTools":[],"meesterCandidate":false,"availableVersions":["1.0.0"]}},{"manifest":{"schemaVersion":1,"kind":"gezel-template","id":"language-trainer","name":"Language Trainer","description":"A warm, patient language tutor. Chats with you in the language you're learning, gently corrects mistakes, and tracks your progress over time.","tags":["language","tutor","learning","conversation"],"maintainer":{"name":"Gezel"},"license":"MIT","version":"1.0.0","releasedAt":"2026-07-06T00:00:00Z","role":"Language Trainer","about":"about.md","suggestedTools":[],"meesterCandidate":false,"availableVersions":["1.0.0"]}},{"manifest":{"schemaVersion":1,"kind":"gezel-template","id":"career-coach","name":"Loopbaancoach","description":"A steady career coach who runs your job search like a campaign — keeps the pipeline current, gets your materials tailored, and never lets a follow-up slip.","tags":["career","coach","job","interview","planning"],"maintainer":{"name":"Gezel"},"license":"MIT","version":"1.0.0","releasedAt":"2026-07-18T00:00:00Z","role":"Loopbaancoach","about":"about.md","suggestedTools":[],"meesterCandidate":false,"frontmatter":{"suggestedTuningProfile":"thinking-precise"},"availableVersions":["1.0.0"]}},{"manifest":{"schemaVersion":1,"kind":"gezel-template","id":"maaltijdplanner","name":"Maaltijdplanner","description":"A practical meal planner who answers \"what's for dinner?\" once a week instead of nightly — menus from what's actually in the pantry, one grocery run, less waste.","tags":["meals","cooking","pantry","groceries","home"],"maintainer":{"name":"Gezel"},"license":"MIT","version":"1.0.0","releasedAt":"2026-07-18T00:00:00Z","role":"Maaltijdplanner","about":"about.md","suggestedTools":[],"meesterCandidate":false,"frontmatter":{"suggestedTuningProfile":"thinking-general"},"availableVersions":["1.0.0"]}},{"manifest":{"schemaVersion":1,"kind":"gezel-template","id":"meester","name":"Meester","description":"The concierge of a gezel crew — greets new users, understands what they're trying to build, and spins up the right team.","tags":["meester","concierge","core","recommended"],"maintainer":{"name":"Gezel"},"license":"MIT","version":"1.4.0","releasedAt":"2026-07-05T00:00:00Z","role":"Meester","about":"about.md","suggestedTools":[],"meesterCandidate":true,"frontmatter":{"suggestedTuningProfile":"thinking-precise"},"availableVersions":["1.4.0","1.3.0","1.2.0","1.1.0","1.0.0"]}},{"manifest":{"schemaVersion":1,"kind":"gezel-template","id":"mock-interviewer","name":"Oefen-interviewer","description":"A mock interviewer who asks the hard questions for real — then debriefs kindly, with specifics you can actually fix before it counts.","tags":["interview","practice","career","questions","coaching"],"maintainer":{"name":"Gezel"},"license":"MIT","version":"1.0.0","releasedAt":"2026-07-18T00:00:00Z","role":"Oefen-interviewer","about":"about.md","suggestedTools":[],"meesterCandidate":false,"frontmatter":{"suggestedTuningProfile":"thinking-general"},"availableVersions":["1.0.0"]}},{"manifest":{"schemaVersion":1,"kind":"gezel-template","id":"omroeper","name":"Omroeper","description":"The town crier for your feeds. Keeps the posting drumbeat going, drafts posts in your voice, never publishes without your say-so, and tells you each morning what the square is saying back — mentions worth answering, posts that landed, and what to post next.","tags":["social","posts","marketing","engagement","publishing"],"maintainer":{"name":"Gezel"},"license":"MIT","version":"1.0.0","releasedAt":"2026-08-12T00:00:00Z","role":"Omroeper","about":"about.md","suggestedTools":[],"meesterCandidate":false,"frontmatter":{"suggestedTuningProfile":"thinking-precise"},"suggestedCraftbooks":[{"craftbookId":"social-digest","runMode":"night-shift","reason":"Reads the synced feeds overnight and leaves a morning digest with ready-to-fire follow-ups."},{"craftbookId":"reception-report","runMode":"scheduled","cron":"0 15 * * 1","overlap":"skip","reason":"Weekly reception review — what landed, what didn't, what to post next."}],"availableVersions":["1.0.0"]}},{"manifest":{"schemaVersion":1,"kind":"gezel-template","id":"penningmeester","name":"Penningmeester","description":"A calm, unjudging treasurer for the household. Keeps the ledger honest, closes each month in minutes, and answers \"where does it actually go?\" with numbers, not lectures.","tags":["budget","money","household","ledger"],"maintainer":{"name":"Gezel"},"license":"MIT","version":"1.0.0","releasedAt":"2026-07-18T00:00:00Z","role":"Penningmeester","about":"about.md","suggestedTools":[],"meesterCandidate":false,"frontmatter":{"suggestedTuningProfile":"thinking-precise"},"availableVersions":["1.0.0"]}},{"manifest":{"schemaVersion":1,"kind":"gezel-template","id":"planner","name":"Planner","description":"Turns fuzzy asks into concrete steps — good at the 'what' and the 'in what order', less opinionated on the 'how'.","tags":["planner","strategy"],"maintainer":{"name":"Gezel"},"license":"MIT","version":"1.1.0","releasedAt":"2026-05-28T00:00:00Z","role":"Planner","about":"about.md","suggestedTools":[],"meesterCandidate":false,"frontmatter":{"suggestedTuningProfile":"thinking-precise"},"availableVersions":["1.1.0","1.0.0"]}},{"manifest":{"schemaVersion":1,"kind":"gezel-template","id":"reisleider","name":"Reisleider","description":"A well-traveled guide who plans trips people actually take: a day-by-day itinerary with slack in it, a packing list that fits the weather, and a journal worth keeping afterward.","tags":["travel","trip","itinerary","packing"],"maintainer":{"name":"Gezel"},"license":"MIT","version":"1.0.0","releasedAt":"2026-07-18T00:00:00Z","role":"Reisleider","about":"about.md","suggestedTools":[],"meesterCandidate":false,"frontmatter":{"suggestedTuningProfile":"thinking-general"},"availableVersions":["1.0.0"]}},{"manifest":{"schemaVersion":1,"kind":"gezel-template","id":"researcher","name":"Researcher","description":"Reads source, prior art, or external docs and files a substantive written analysis. Long-form deliverables go to disk; chat carries the path + a short precis.","tags":["researcher","analysis","recommended"],"maintainer":{"name":"Gezel"},"license":"MIT","version":"1.2.0","releasedAt":"2026-07-05T00:00:00Z","role":"Researcher","about":"about.md","suggestedTools":[],"meesterCandidate":false,"frontmatter":{"suggestedTuningProfile":"thinking-general"},"availableVersions":["1.2.0","1.1.0","1.0.0"]}},{"manifest":{"schemaVersion":1,"kind":"gezel-template","id":"reviewer","name":"Reviewer","description":"Second set of eyes on code, docs, or plans. Sharp on quality, clear on feedback.","tags":["reviewer","quality","recommended"],"maintainer":{"name":"Gezel"},"license":"MIT","version":"1.3.0","releasedAt":"2026-07-05T00:00:00Z","role":"Reviewer","about":"about.md","suggestedTools":[],"meesterCandidate":false,"frontmatter":{"suggestedTuningProfile":"thinking-precise"},"availableVersions":["1.3.0","1.2.0","1.1.0","1.0.0"]}},{"manifest":{"schemaVersion":1,"kind":"gezel-template","id":"chess-player","name":"Schaakspeler","description":"A thoughtful, warm chess opponent who plays a complete legal game, keeps plans private, and makes the table welcoming whether the result is a win, loss, or draw.","tags":["chess","game","opponent","strategy","play"],"maintainer":{"name":"Gezel"},"license":"MIT","version":"1.0.1","releasedAt":"2026-07-29T00:00:00Z","role":"Schaakspeler","about":"about.md","suggestedTools":[],"meesterCandidate":false,"frontmatter":{"suggestedTuningProfile":"instruct"},"availableVersions":["1.0.1","1.0.0"]}},{"manifest":{"schemaVersion":1,"kind":"gezel-template","id":"schrijfmaat","name":"Schrijfmaat","description":"A warm writing companion for the long haul of a novel. Guards the daily words, keeps the chapter board honest, and reads drafts like a friend who wants the book to exist.","tags":["writing","novel","fiction","drafting"],"maintainer":{"name":"Gezel"},"license":"MIT","version":"1.0.0","releasedAt":"2026-07-18T00:00:00Z","role":"Schrijfmaat","about":"about.md","suggestedTools":[],"meesterCandidate":false,"frontmatter":{"suggestedTuningProfile":"thinking-general"},"availableVersions":["1.0.0"]}},{"manifest":{"schemaVersion":1,"kind":"gezel-template","id":"study-buddy","name":"Studiemaat","description":"A patient study companion who writes sharp flashcards, keeps the review rhythm going, and cheers the streak without ever shaming a miss.","tags":["study","flashcards","learning","practice"],"maintainer":{"name":"Gezel"},"license":"MIT","version":"1.0.0","releasedAt":"2026-07-18T00:00:00Z","role":"Studiemaat","about":"about.md","suggestedTools":[],"meesterCandidate":false,"frontmatter":{"suggestedTuningProfile":"thinking-general"},"availableVersions":["1.0.0"]}},{"manifest":{"schemaVersion":1,"kind":"gezel-template","id":"veiligheidsmeester","name":"Veiligheidsmeester","description":"Chief Security Officer for the crew. Thinks like an attacker, reports like a defender — and suggests a standing night watch over your code and dependencies.","tags":["veiligheidsmeester","security","ciso","audit","night-shift"],"maintainer":{"name":"Gezel"},"license":"MIT","version":"1.0.0","releasedAt":"2026-07-30T00:00:00Z","role":"Chief Security Officer","about":"about.md","suggestedTools":[],"meesterCandidate":false,"frontmatter":{"suggestedTuningProfile":"thinking-precise"},"suggestedCraftbooks":[{"craftbookId":"security-architecture-review","runMode":"night-shift","reason":"Walks the stack for secrets, dependencies, auth, and common vulnerability classes while the workshop is quiet, and leaves a ranked findings report."},{"craftbookId":"dependency-audit","runMode":"night-shift","reason":"Checks the dependency tree for known vulnerabilities and risky updates overnight."}],"availableVersions":["1.0.0"]}},{"manifest":{"schemaVersion":1,"kind":"gezel-template","id":"vertaler","name":"Vertaler","description":"The crew's translator. Keeps a faithful translated shadow of your content in the project's designated language — and suggests doing it nightly, as sidecars, never touching the originals.","tags":["vertaler","translator","translation","language","localization","night-shift"],"maintainer":{"name":"Gezel"},"license":"MIT","version":"1.0.0","releasedAt":"2026-07-30T00:00:00Z","role":"Translator","about":"about.md","suggestedTools":[],"meesterCandidate":false,"suggestedCraftbooks":[{"craftbookId":"translate-content","runMode":"night-shift","reason":"Translates new and changed content into the project's designated language overnight, as sidecar files beside the originals."}],"availableVersions":["1.0.0"]}},{"manifest":{"schemaVersion":1,"kind":"gezel-template","id":"video-generator","name":"Video generator","description":"Turns your prompts into short video clips. Your message goes straight to the video-generation AI with no chatbot in between, so use terse, concrete descriptions of the clip you want.","tags":["video","passthrough","generative"],"maintainer":{"name":"Gezel"},"license":"MIT","version":"1.0.0","releasedAt":"2026-06-18T00:00:00Z","role":"Video generator","about":"about.md","suggestedTools":[],"meesterCandidate":false,"frontmatter":{"fixedFunction":{"tool":"generate_video","promptKey":"prompt"}},"availableVersions":["1.0.0"]}},{"manifest":{"schemaVersion":1,"kind":"gezel-template","id":"voorman","name":"Voorman","description":"Foreman of a project — plans tasks, delegates to the right gezels, and keeps work moving.","tags":["voorman","planning","delegation","recommended"],"maintainer":{"name":"Gezel"},"license":"MIT","version":"1.6.0","releasedAt":"2026-07-05T00:00:00Z","role":"Voorman","about":"about.md","suggestedTools":[],"meesterCandidate":false,"frontmatter":{"suggestedTuningProfile":"thinking-precise"},"availableVersions":["1.6.0","1.5.0","1.4.0","1.3.0","1.2.1","1.2.0","1.1.0","1.0.0"]}},{"manifest":{"schemaVersion":1,"kind":"gezel-template","id":"zorgcoordinator","name":"Zorgcoördinator","description":"A warm, discreet care coordinator. Keeps the medication list current, every appointment prepped, and the family on the same page — and everything stays on this machine.","tags":["caregiving","health","family","appointments"],"maintainer":{"name":"Gezel"},"license":"MIT","version":"1.0.0","releasedAt":"2026-07-18T00:00:00Z","role":"Zorgcoördinator","about":"about.md","suggestedTools":[],"meesterCandidate":false,"frontmatter":{"suggestedTuningProfile":"thinking-precise"},"availableVersions":["1.0.0"]}}]}
|
|
1
|
+
{"schemaVersion":1,"kind":"gezel-template","count":34,"entries":[{"manifest":{"schemaVersion":1,"kind":"gezel-template","id":"aanjager","name":"Aanjager","description":"An infectious, organized rallier for community drives. Keeps the thermometer honest, the sponsor outreach warm, and makes sure every donor gets thanked.","tags":["fundraiser","community","donations","outreach"],"maintainer":{"name":"Gezel"},"license":"MIT","version":"1.0.0","releasedAt":"2026-07-18T00:00:00Z","role":"Aanjager","about":"about.md","suggestedTools":[],"meesterCandidate":false,"frontmatter":{"suggestedTuningProfile":"thinking-general"},"availableVersions":["1.0.0"]}},{"manifest":{"schemaVersion":1,"kind":"gezel-template","id":"archivaris","name":"Archivaris","description":"A gentle, rigorous archivist for the file nobody wants to need — wills, policies, accounts, instructions. Careful about hard topics, relentless about completeness, and everything stays on this machine.","tags":["documents","estate","emergency","family","archive"],"maintainer":{"name":"Gezel"},"license":"MIT","version":"1.0.0","releasedAt":"2026-07-18T00:00:00Z","role":"Archivaris","about":"about.md","suggestedTools":[],"meesterCandidate":false,"frontmatter":{"suggestedTuningProfile":"thinking-precise"},"availableVersions":["1.0.0"]}},{"manifest":{"schemaVersion":1,"kind":"gezel-template","id":"boekwachter","name":"Boekwachter","description":"The index-keeper. Works quietly in the background while the machine is idle, distilling code and documents into summaries and embeddings so the rest of the crew can search the workspace by meaning.","tags":["boekwachter","index","librarian","background","search"],"maintainer":{"name":"Gezel"},"license":"MIT","version":"1.0.0","releasedAt":"2026-06-06T00:00:00Z","role":"Boekwachter","about":"about.md","suggestedTools":[],"meesterCandidate":false,"frontmatter":{"suggestedTuningProfile":"thinking-precise"},"availableVersions":["1.0.0"]}},{"manifest":{"schemaVersion":1,"kind":"gezel-template","id":"builder","name":"Builder","description":"Takes a job end-to-end on their own — research, build, ship. Willing to attempt about anything: code, pages, documents, data. Best fit for solo projects.","tags":["builder","developer","product","solo","ambachtsman"],"maintainer":{"name":"Gezel"},"license":"MIT","version":"1.4.0","releasedAt":"2026-08-15T00:00:00Z","role":"Builder","about":"about.md","suggestedTools":[],"meesterCandidate":false,"frontmatter":{"suggestedTuningProfile":"thinking-coding"},"availableVersions":["1.4.0","1.3.0","1.2.0","1.1.0","1.0.0"]}},{"manifest":{"schemaVersion":1,"kind":"gezel-template","id":"ceremoniemeester","name":"Ceremoniemeester","description":"A composed master of ceremonies for weddings, parties, and reunions. Guest list current, budget honest, day-of runbook ready — and the thank-yous actually go out.","tags":["events","party","wedding","planning","guests"],"maintainer":{"name":"Gezel"},"license":"MIT","version":"1.0.0","releasedAt":"2026-07-18T00:00:00Z","role":"Ceremoniemeester","about":"about.md","suggestedTools":[],"meesterCandidate":false,"frontmatter":{"suggestedTuningProfile":"thinking-precise"},"availableVersions":["1.0.0"]}},{"manifest":{"schemaVersion":1,"kind":"gezel-template","id":"coach","name":"Coach","description":"A steady, encouraging training coach. Celebrates every session logged, keeps the weekly rhythm honest, and adjusts the plan to the life you actually have.","tags":["fitness","training","habits","health"],"maintainer":{"name":"Gezel"},"license":"MIT","version":"1.0.0","releasedAt":"2026-07-18T00:00:00Z","role":"Coach","about":"about.md","suggestedTools":[],"meesterCandidate":false,"frontmatter":{"suggestedTuningProfile":"thinking-general"},"availableVersions":["1.0.0"]}},{"manifest":{"schemaVersion":1,"kind":"gezel-template","id":"copywriter","name":"Copywriter","description":"Writes for humans. Starts with what the reader cares about, then figures out the words.","tags":["copywriter","writing"],"maintainer":{"name":"Gezel"},"license":"MIT","version":"1.1.0","releasedAt":"2026-05-28T00:00:00Z","role":"Copywriter","about":"about.md","suggestedTools":[],"meesterCandidate":false,"frontmatter":{"suggestedTuningProfile":"creative"},"availableVersions":["1.1.0","1.0.0"]}},{"manifest":{"schemaVersion":1,"kind":"gezel-template","id":"checkers-player","name":"Damspeler","description":"A warm, playful checkers opponent. Plays a real game, talks a fun game — peppy table talk that never bites — and is gracious whichever way it ends.","tags":["checkers","game","opponent","play"],"maintainer":{"name":"Gezel"},"license":"MIT","version":"1.0.1","releasedAt":"2026-07-29T00:00:00Z","role":"Damspeler","about":"about.md","suggestedTools":[],"meesterCandidate":false,"frontmatter":{"suggestedTuningProfile":"instruct"},"availableVersions":["1.0.1","1.0.0"]}},{"manifest":{"schemaVersion":1,"kind":"gezel-template","id":"designer","name":"Designer","description":"Thinks in layout, hierarchy, and visual tone. Works in mocks and style directions, hands off to copy + dev.","tags":["designer","visual"],"maintainer":{"name":"Gezel"},"license":"MIT","version":"1.1.0","releasedAt":"2026-05-28T00:00:00Z","role":"Designer","about":"about.md","suggestedTools":[],"meesterCandidate":false,"frontmatter":{"suggestedTuningProfile":"creative"},"availableVersions":["1.1.0","1.0.0"]}},{"manifest":{"schemaVersion":1,"kind":"gezel-template","id":"developer","name":"Developer","description":"Writes, tests, and ships code. Works inside a project's scope and leans on the voorman for direction.","tags":["developer","engineer","code","programmer"],"maintainer":{"name":"Gezel"},"license":"MIT","version":"1.4.0","releasedAt":"2026-07-04T00:00:00Z","role":"Developer","about":"about.md","suggestedTools":[],"meesterCandidate":false,"frontmatter":{"suggestedTuningProfile":"thinking-coding"},"availableVersions":["1.4.0","1.3.0","1.2.0","1.1.0","1.0.0"]}},{"manifest":{"schemaVersion":1,"kind":"gezel-template","id":"go-player","name":"Go-speler","description":"A calm, attentive Go opponent who plays legal stones, respects the quiet shape of the board, and handles captures, passes, and final scores with good grace.","tags":["go","baduk","weiqi","game","opponent","strategy","play"],"maintainer":{"name":"Gezel"},"license":"MIT","version":"1.0.1","releasedAt":"2026-07-29T00:00:00Z","role":"Go-speler","about":"about.md","suggestedTools":[],"meesterCandidate":false,"frontmatter":{"suggestedTuningProfile":"instruct"},"availableVersions":["1.0.1","1.0.0"]}},{"manifest":{"schemaVersion":1,"kind":"gezel-template","id":"huismeester","name":"Huismeester","description":"An unflappable house steward. Knows every system in the home, what care it needs and when, and turns the junk drawer of manuals into a calm maintenance rhythm.","tags":["home","maintenance","household","manual"],"maintainer":{"name":"Gezel"},"license":"MIT","version":"1.0.0","releasedAt":"2026-07-18T00:00:00Z","role":"Huismeester","about":"about.md","suggestedTools":[],"meesterCandidate":false,"frontmatter":{"suggestedTuningProfile":"thinking-precise"},"availableVersions":["1.0.0"]}},{"manifest":{"schemaVersion":1,"kind":"gezel-template","id":"image-generator","name":"Image generator","description":"An image generator. Always passes through requests to the image generation system. No LLM is involved — the gezel forwards your message text straight to the image engine.","tags":["image","fixed-function","passthrough","generative"],"maintainer":{"name":"Gezel"},"license":"MIT","version":"1.0.0","releasedAt":"2026-05-03T00:00:00Z","role":"Image generator","about":"about.md","suggestedTools":[],"meesterCandidate":false,"frontmatter":{"fixedFunction":{"tool":"generate_image","promptKey":"prompt"}},"availableVersions":["1.0.0"]}},{"manifest":{"schemaVersion":1,"kind":"gezel-template","id":"kantoormeester","name":"Kantoormeester","description":"The operations half of a freelancer's brain. Keeps every invoice tracked to paid, every proposal followed up, and the income picture one question away.","tags":["freelance","invoices","business","operations"],"maintainer":{"name":"Gezel"},"license":"MIT","version":"1.0.0","releasedAt":"2026-07-18T00:00:00Z","role":"Kantoormeester","about":"about.md","suggestedTools":[],"meesterCandidate":false,"frontmatter":{"suggestedTuningProfile":"thinking-precise"},"availableVersions":["1.0.0"]}},{"manifest":{"schemaVersion":1,"kind":"gezel-template","id":"keurmeester","name":"Keurmeester","description":"The guild's quality inspector — consulted when a smaller model's work stalls, loops, or drifts, to diagnose the cause and hand back the smallest fix that gets the journeyman moving again.","tags":["keurmeester","supervision","quality","core"],"maintainer":{"name":"Gezel"},"license":"MIT","version":"1.0.0","releasedAt":"2026-07-06T00:00:00Z","role":"Keurmeester","about":"about.md","suggestedTools":[],"meesterCandidate":false,"availableVersions":["1.0.0"]}},{"manifest":{"schemaVersion":1,"kind":"gezel-template","id":"language-trainer","name":"Language Trainer","description":"A warm, patient language tutor. Chats with you in the language you're learning, gently corrects mistakes, and tracks your progress over time.","tags":["language","tutor","learning","conversation"],"maintainer":{"name":"Gezel"},"license":"MIT","version":"1.0.0","releasedAt":"2026-07-06T00:00:00Z","role":"Language Trainer","about":"about.md","suggestedTools":[],"meesterCandidate":false,"availableVersions":["1.0.0"]}},{"manifest":{"schemaVersion":1,"kind":"gezel-template","id":"career-coach","name":"Loopbaancoach","description":"A steady career coach who runs your job search like a campaign — keeps the pipeline current, gets your materials tailored, and never lets a follow-up slip.","tags":["career","coach","job","interview","planning"],"maintainer":{"name":"Gezel"},"license":"MIT","version":"1.0.0","releasedAt":"2026-07-18T00:00:00Z","role":"Loopbaancoach","about":"about.md","suggestedTools":[],"meesterCandidate":false,"frontmatter":{"suggestedTuningProfile":"thinking-precise"},"availableVersions":["1.0.0"]}},{"manifest":{"schemaVersion":1,"kind":"gezel-template","id":"maaltijdplanner","name":"Maaltijdplanner","description":"A practical meal planner who answers \"what's for dinner?\" once a week instead of nightly — menus from what's actually in the pantry, one grocery run, less waste.","tags":["meals","cooking","pantry","groceries","home"],"maintainer":{"name":"Gezel"},"license":"MIT","version":"1.0.0","releasedAt":"2026-07-18T00:00:00Z","role":"Maaltijdplanner","about":"about.md","suggestedTools":[],"meesterCandidate":false,"frontmatter":{"suggestedTuningProfile":"thinking-general"},"availableVersions":["1.0.0"]}},{"manifest":{"schemaVersion":1,"kind":"gezel-template","id":"meester","name":"Meester","description":"The concierge of a gezel crew — greets new users, understands what they're trying to build, and spins up the right team.","tags":["meester","concierge","core","recommended"],"maintainer":{"name":"Gezel"},"license":"MIT","version":"1.4.0","releasedAt":"2026-07-05T00:00:00Z","role":"Meester","about":"about.md","suggestedTools":[],"meesterCandidate":true,"frontmatter":{"suggestedTuningProfile":"thinking-precise"},"availableVersions":["1.4.0","1.3.0","1.2.0","1.1.0","1.0.0"]}},{"manifest":{"schemaVersion":1,"kind":"gezel-template","id":"mock-interviewer","name":"Oefen-interviewer","description":"A mock interviewer who asks the hard questions for real — then debriefs kindly, with specifics you can actually fix before it counts.","tags":["interview","practice","career","questions","coaching"],"maintainer":{"name":"Gezel"},"license":"MIT","version":"1.0.0","releasedAt":"2026-07-18T00:00:00Z","role":"Oefen-interviewer","about":"about.md","suggestedTools":[],"meesterCandidate":false,"frontmatter":{"suggestedTuningProfile":"thinking-general"},"availableVersions":["1.0.0"]}},{"manifest":{"schemaVersion":1,"kind":"gezel-template","id":"omroeper","name":"Omroeper","description":"The town crier for your feeds. Keeps the posting drumbeat going, drafts posts in your voice, never publishes without your say-so, and tells you each morning what the square is saying back — mentions worth answering, posts that landed, and what to post next.","tags":["social","posts","marketing","engagement","publishing"],"maintainer":{"name":"Gezel"},"license":"MIT","version":"1.0.0","releasedAt":"2026-08-12T00:00:00Z","role":"Omroeper","about":"about.md","suggestedTools":[],"meesterCandidate":false,"frontmatter":{"suggestedTuningProfile":"thinking-precise"},"suggestedCraftbooks":[{"craftbookId":"social-digest","runMode":"night-shift","reason":"Reads the synced feeds overnight and leaves a morning digest with ready-to-fire follow-ups."},{"craftbookId":"reception-report","runMode":"scheduled","cron":"0 15 * * 1","overlap":"skip","reason":"Weekly reception review — what landed, what didn't, what to post next."}],"availableVersions":["1.0.0"]}},{"manifest":{"schemaVersion":1,"kind":"gezel-template","id":"penningmeester","name":"Penningmeester","description":"A calm, unjudging treasurer for the household. Keeps the ledger honest, closes each month in minutes, and answers \"where does it actually go?\" with numbers, not lectures.","tags":["budget","money","household","ledger"],"maintainer":{"name":"Gezel"},"license":"MIT","version":"1.0.0","releasedAt":"2026-07-18T00:00:00Z","role":"Penningmeester","about":"about.md","suggestedTools":[],"meesterCandidate":false,"frontmatter":{"suggestedTuningProfile":"thinking-precise"},"availableVersions":["1.0.0"]}},{"manifest":{"schemaVersion":1,"kind":"gezel-template","id":"planner","name":"Planner","description":"Turns fuzzy asks into concrete steps — good at the 'what' and the 'in what order', less opinionated on the 'how'.","tags":["planner","strategy"],"maintainer":{"name":"Gezel"},"license":"MIT","version":"1.1.0","releasedAt":"2026-05-28T00:00:00Z","role":"Planner","about":"about.md","suggestedTools":[],"meesterCandidate":false,"frontmatter":{"suggestedTuningProfile":"thinking-precise"},"availableVersions":["1.1.0","1.0.0"]}},{"manifest":{"schemaVersion":1,"kind":"gezel-template","id":"reisleider","name":"Reisleider","description":"A well-traveled guide who plans trips people actually take: a day-by-day itinerary with slack in it, a packing list that fits the weather, and a journal worth keeping afterward.","tags":["travel","trip","itinerary","packing"],"maintainer":{"name":"Gezel"},"license":"MIT","version":"1.0.0","releasedAt":"2026-07-18T00:00:00Z","role":"Reisleider","about":"about.md","suggestedTools":[],"meesterCandidate":false,"frontmatter":{"suggestedTuningProfile":"thinking-general"},"availableVersions":["1.0.0"]}},{"manifest":{"schemaVersion":1,"kind":"gezel-template","id":"researcher","name":"Researcher","description":"Reads source, prior art, or external docs and files a substantive written analysis. Long-form deliverables go to disk; chat carries the path + a short precis.","tags":["researcher","analysis","recommended"],"maintainer":{"name":"Gezel"},"license":"MIT","version":"1.2.0","releasedAt":"2026-07-05T00:00:00Z","role":"Researcher","about":"about.md","suggestedTools":[],"meesterCandidate":false,"frontmatter":{"suggestedTuningProfile":"thinking-general"},"availableVersions":["1.2.0","1.1.0","1.0.0"]}},{"manifest":{"schemaVersion":1,"kind":"gezel-template","id":"reviewer","name":"Reviewer","description":"Second set of eyes on code, docs, or plans. Sharp on quality, clear on feedback.","tags":["reviewer","quality","recommended"],"maintainer":{"name":"Gezel"},"license":"MIT","version":"1.3.0","releasedAt":"2026-07-05T00:00:00Z","role":"Reviewer","about":"about.md","suggestedTools":[],"meesterCandidate":false,"frontmatter":{"suggestedTuningProfile":"thinking-precise"},"availableVersions":["1.3.0","1.2.0","1.1.0","1.0.0"]}},{"manifest":{"schemaVersion":1,"kind":"gezel-template","id":"chess-player","name":"Schaakspeler","description":"A thoughtful, warm chess opponent who plays a complete legal game, keeps plans private, and makes the table welcoming whether the result is a win, loss, or draw.","tags":["chess","game","opponent","strategy","play"],"maintainer":{"name":"Gezel"},"license":"MIT","version":"1.0.1","releasedAt":"2026-07-29T00:00:00Z","role":"Schaakspeler","about":"about.md","suggestedTools":[],"meesterCandidate":false,"frontmatter":{"suggestedTuningProfile":"instruct"},"availableVersions":["1.0.1","1.0.0"]}},{"manifest":{"schemaVersion":1,"kind":"gezel-template","id":"schrijfmaat","name":"Schrijfmaat","description":"A warm writing companion for the long haul of a novel. Guards the daily words, keeps the chapter board honest, and reads drafts like a friend who wants the book to exist.","tags":["writing","novel","fiction","drafting"],"maintainer":{"name":"Gezel"},"license":"MIT","version":"1.0.0","releasedAt":"2026-07-18T00:00:00Z","role":"Schrijfmaat","about":"about.md","suggestedTools":[],"meesterCandidate":false,"frontmatter":{"suggestedTuningProfile":"thinking-general"},"availableVersions":["1.0.0"]}},{"manifest":{"schemaVersion":1,"kind":"gezel-template","id":"study-buddy","name":"Studiemaat","description":"A patient study companion who writes sharp flashcards, keeps the review rhythm going, and cheers the streak without ever shaming a miss.","tags":["study","flashcards","learning","practice"],"maintainer":{"name":"Gezel"},"license":"MIT","version":"1.0.0","releasedAt":"2026-07-18T00:00:00Z","role":"Studiemaat","about":"about.md","suggestedTools":[],"meesterCandidate":false,"frontmatter":{"suggestedTuningProfile":"thinking-general"},"availableVersions":["1.0.0"]}},{"manifest":{"schemaVersion":1,"kind":"gezel-template","id":"veiligheidsmeester","name":"Veiligheidsmeester","description":"Chief Security Officer for the crew. Thinks like an attacker, reports like a defender — and suggests a standing night watch over your code and dependencies.","tags":["veiligheidsmeester","security","ciso","audit","night-shift"],"maintainer":{"name":"Gezel"},"license":"MIT","version":"1.0.0","releasedAt":"2026-07-30T00:00:00Z","role":"Chief Security Officer","about":"about.md","suggestedTools":[],"meesterCandidate":false,"frontmatter":{"suggestedTuningProfile":"thinking-precise"},"suggestedCraftbooks":[{"craftbookId":"security-architecture-review","runMode":"night-shift","reason":"Walks the stack for secrets, dependencies, auth, and common vulnerability classes while the workshop is quiet, and leaves a ranked findings report."},{"craftbookId":"dependency-audit","runMode":"night-shift","reason":"Checks the dependency tree for known vulnerabilities and risky updates overnight."}],"availableVersions":["1.0.0"]}},{"manifest":{"schemaVersion":1,"kind":"gezel-template","id":"vertaler","name":"Vertaler","description":"The crew's translator. Keeps a faithful translated shadow of your content in the project's designated language — and suggests doing it nightly, as sidecars, never touching the originals.","tags":["vertaler","translator","translation","language","localization","night-shift"],"maintainer":{"name":"Gezel"},"license":"MIT","version":"1.0.0","releasedAt":"2026-07-30T00:00:00Z","role":"Translator","about":"about.md","suggestedTools":[],"meesterCandidate":false,"suggestedCraftbooks":[{"craftbookId":"translate-content","runMode":"night-shift","reason":"Translates new and changed content into the project's designated language overnight, as sidecar files beside the originals."}],"availableVersions":["1.0.0"]}},{"manifest":{"schemaVersion":1,"kind":"gezel-template","id":"video-generator","name":"Video generator","description":"Turns your prompts into short video clips. Your message goes straight to the video-generation AI with no chatbot in between, so use terse, concrete descriptions of the clip you want.","tags":["video","passthrough","generative"],"maintainer":{"name":"Gezel"},"license":"MIT","version":"1.0.0","releasedAt":"2026-06-18T00:00:00Z","role":"Video generator","about":"about.md","suggestedTools":[],"meesterCandidate":false,"frontmatter":{"fixedFunction":{"tool":"generate_video","promptKey":"prompt"}},"availableVersions":["1.0.0"]}},{"manifest":{"schemaVersion":1,"kind":"gezel-template","id":"voorman","name":"Voorman","description":"Foreman of a project — plans tasks, delegates to the right gezels, and keeps work moving.","tags":["voorman","planning","delegation","recommended"],"maintainer":{"name":"Gezel"},"license":"MIT","version":"1.6.0","releasedAt":"2026-07-05T00:00:00Z","role":"Voorman","about":"about.md","suggestedTools":[],"meesterCandidate":false,"frontmatter":{"suggestedTuningProfile":"thinking-precise"},"availableVersions":["1.6.0","1.5.0","1.4.0","1.3.0","1.2.1","1.2.0","1.1.0","1.0.0"]}},{"manifest":{"schemaVersion":1,"kind":"gezel-template","id":"zorgcoordinator","name":"Zorgcoördinator","description":"A warm, discreet care coordinator. Keeps the medication list current, every appointment prepped, and the family on the same page — and everything stays on this machine.","tags":["caregiving","health","family","appointments"],"maintainer":{"name":"Gezel"},"license":"MIT","version":"1.0.0","releasedAt":"2026-07-18T00:00:00Z","role":"Zorgcoördinator","about":"about.md","suggestedTools":[],"meesterCandidate":false,"frontmatter":{"suggestedTuningProfile":"thinking-precise"},"availableVersions":["1.0.0"]}}]}
|