@bendyline/gilde 0.1.95 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/data/craftbook-templates/ab/ab-test-readout/manifest.json +4 -0
- package/data/craftbook-templates/al/album-curate/manifest.json +4 -0
- package/data/craftbook-templates/an/anniversary-cut/manifest.json +4 -0
- package/data/craftbook-templates/an/annotated-bibliography/manifest.json +4 -0
- package/data/craftbook-templates/an/annual-document-review/manifest.json +4 -0
- package/data/craftbook-templates/an/anomaly-scan/manifest.json +3 -0
- package/data/craftbook-templates/au/audio-ad-spot/manifest.json +4 -0
- package/data/craftbook-templates/bo/board-deck/manifest.json +3 -0
- package/data/craftbook-templates/bo/board-game-web/manifest.json +4 -0
- package/data/craftbook-templates/br/branding-website/manifest.json +4 -0
- package/data/craftbook-templates/br/broadcast-announcement/manifest.json +4 -0
- package/data/craftbook-templates/ca/calendar-brief/manifest.json +3 -0
- package/data/craftbook-templates/ch/chapter-weave/manifest.json +4 -0
- package/data/craftbook-templates/ch/chart-pack/manifest.json +3 -0
- package/data/craftbook-templates/co/codebase-ux-review/manifest.json +3 -0
- package/data/craftbook-templates/co/cohort-analysis/manifest.json +3 -0
- package/data/craftbook-templates/co/company-research-brief/manifest.json +4 -0
- package/data/craftbook-templates/co/compat-check/manifest.json +4 -0
- package/data/craftbook-templates/co/competitive-analysis/manifest.json +4 -0
- package/data/craftbook-templates/co/content-accuracy-review/manifest.json +4 -0
- package/data/craftbook-templates/co/content-deck/manifest.json +4 -0
- package/data/craftbook-templates/co/contract-template/manifest.json +4 -0
- package/data/craftbook-templates/co/corpus-email-digest/manifest.json +3 -0
- package/data/craftbook-templates/co/cover-letter/manifest.json +3 -0
- package/data/craftbook-templates/cr/crm-update-batch/manifest.json +3 -0
- package/data/craftbook-templates/cr/crossword-forge/manifest.json +4 -0
- package/data/craftbook-templates/cs/csv-transformer/manifest.json +3 -0
- package/data/craftbook-templates/da/dashboard-spec/manifest.json +4 -0
- package/data/craftbook-templates/da/data-dictionary/manifest.json +3 -0
- package/data/craftbook-templates/da/data-export-migrate/manifest.json +4 -0
- package/data/craftbook-templates/da/data-join-merge/manifest.json +3 -0
- package/data/craftbook-templates/da/data-quality-audit/manifest.json +3 -0
- package/data/craftbook-templates/da/data-to-report/manifest.json +4 -0
- package/data/craftbook-templates/da/data-viz-page/manifest.json +4 -0
- package/data/craftbook-templates/da/dataset-clean/manifest.json +3 -0
- package/data/craftbook-templates/de/design-review/manifest.json +4 -0
- package/data/craftbook-templates/de/design-system-consultation/manifest.json +4 -0
- package/data/craftbook-templates/di/diagram-from-text/manifest.json +4 -0
- package/data/craftbook-templates/dr/drive-wrap-up/manifest.json +4 -0
- package/data/craftbook-templates/du/due-diligence-brief/manifest.json +4 -0
- package/data/craftbook-templates/en/engineering-retrospective/manifest.json +4 -0
- package/data/craftbook-templates/ex/expense-categorize/manifest.json +4 -0
- package/data/craftbook-templates/ex/explain-code-folder/manifest.json +26 -0
- package/data/craftbook-templates/ex/explain-code-folder/versions/1.0.0/craftbook.json +233 -0
- package/data/craftbook-templates/ex/explain-code-folder/versions/1.0.0/samples/todo-cli/README.md +29 -0
- package/data/craftbook-templates/ex/explain-code-folder/versions/1.0.0/samples/todo-cli/package.json +17 -0
- package/data/craftbook-templates/ex/explain-code-folder/versions/1.0.0/samples/todo-cli/src/format.js +15 -0
- package/data/craftbook-templates/ex/explain-code-folder/versions/1.0.0/samples/todo-cli/src/index.js +50 -0
- package/data/craftbook-templates/ex/explain-code-folder/versions/1.0.0/samples/todo-cli/src/store.js +45 -0
- package/data/craftbook-templates/ex/explain-code-folder/versions/1.0.0/samples/todo-cli/test/store.test.js +61 -0
- package/data/craftbook-templates/ex/explain-code-folder/versions/1.0.0/test.json +106 -0
- package/data/craftbook-templates/fa/family-story-chapter/manifest.json +4 -0
- package/data/craftbook-templates/fo/forecast-model/manifest.json +4 -0
- package/data/craftbook-templates/ga/game-with-screens/manifest.json +4 -0
- package/data/craftbook-templates/gl/glossary-build/manifest.json +3 -0
- package/data/craftbook-templates/ha/handbook-section/manifest.json +3 -0
- package/data/craftbook-templates/he/hero-image/manifest.json +4 -0
- package/data/craftbook-templates/ht/html-arcade-game/manifest.json +4 -0
- package/data/craftbook-templates/ht/html-puzzle-game/manifest.json +4 -0
- package/data/craftbook-templates/id/idle-clicker-game/manifest.json +4 -0
- package/data/craftbook-templates/in/inbox-triage/manifest.json +3 -0
- package/data/craftbook-templates/in/insurance-inventory/manifest.json +4 -0
- package/data/craftbook-templates/in/interactive-quiz/manifest.json +3 -0
- package/data/craftbook-templates/in/invoice-generator/manifest.json +3 -0
- package/data/craftbook-templates/in/invoice-run/manifest.json +3 -0
- package/data/craftbook-templates/index.json +1 -1
- package/data/craftbook-templates/ju/juice-pass/manifest.json +4 -0
- package/data/craftbook-templates/kp/kpi-scorecard/manifest.json +4 -0
- package/data/craftbook-templates/la/landing-page/manifest.json +4 -0
- package/data/craftbook-templates/le/lead-enrichment/manifest.json +4 -0
- package/data/craftbook-templates/li/literature-review/manifest.json +4 -0
- package/data/craftbook-templates/lo/logo-set/manifest.json +4 -0
- package/data/craftbook-templates/ma/market-scan/manifest.json +4 -0
- package/data/craftbook-templates/me/meeting-minutes/manifest.json +3 -0
- package/data/craftbook-templates/me/meeting-notes-to-actions/manifest.json +3 -0
- package/data/craftbook-templates/me/meeting-notes-to-actions/versions/1.1.2/craftbook.json +255 -0
- package/data/craftbook-templates/me/meeting-notes-to-actions/versions/1.1.2/samples/team-sync/notes.md +47 -0
- package/data/craftbook-templates/me/meeting-notes-to-actions/versions/1.1.2/test.json +78 -0
- package/data/craftbook-templates/me/meeting-prep-brief/manifest.json +3 -0
- package/data/craftbook-templates/me/meeting-summary-audio/manifest.json +3 -0
- package/data/craftbook-templates/me/memory-prompt-session/manifest.json +3 -0
- package/data/craftbook-templates/mi/micro-game-jam/manifest.json +4 -0
- package/data/craftbook-templates/mo/mock-interview/manifest.json +3 -0
- package/data/craftbook-templates/mo/mod-scaffold/manifest.json +4 -0
- package/data/craftbook-templates/mo/month-close/manifest.json +3 -0
- package/data/craftbook-templates/mo/monthly-recording-review/manifest.json +3 -0
- package/data/craftbook-templates/oc/ocr-extract/manifest.json +4 -0
- package/data/craftbook-templates/of/offer-compare/manifest.json +3 -0
- package/data/craftbook-templates/on/one-pager/manifest.json +4 -0
- package/data/craftbook-templates/ph/photo-cull/manifest.json +4 -0
- package/data/craftbook-templates/ph/photo-library-nightly/manifest.json +4 -0
- package/data/craftbook-templates/ph/physics-toy/manifest.json +4 -0
- package/data/craftbook-templates/pi/pitch-deck/manifest.json +4 -0
- package/data/craftbook-templates/pl/playtest-report/manifest.json +4 -0
- package/data/craftbook-templates/po/powerpoint-deck/manifest.json +4 -0
- package/data/craftbook-templates/pr/practice-exam/manifest.json +3 -0
- package/data/craftbook-templates/pr/practice-session/manifest.json +3 -0
- package/data/craftbook-templates/pr/price-tracker/manifest.json +4 -0
- package/data/craftbook-templates/pr/proposal-sow/manifest.json +3 -0
- package/data/craftbook-templates/pu/puzzle-pack-layout/manifest.json +4 -0
- package/data/craftbook-templates/qu/quarterly-summary/manifest.json +4 -0
- package/data/craftbook-templates/raw-index.json +1 -1
- package/data/craftbook-templates/re/reading-list/manifest.json +3 -0
- package/data/craftbook-templates/re/receipt-intake/manifest.json +4 -0
- package/data/craftbook-templates/re/receipt-ocr-ledger/manifest.json +3 -0
- package/data/craftbook-templates/re/recurring-invoice-run/manifest.json +3 -0
- package/data/craftbook-templates/re/release-announcement/manifest.json +4 -0
- package/data/craftbook-templates/re/resume-cv/manifest.json +3 -0
- package/data/craftbook-templates/re/review-code-folder/manifest.json +25 -0
- package/data/craftbook-templates/re/review-code-folder/versions/1.0.0/craftbook.json +223 -0
- package/data/craftbook-templates/re/review-code-folder/versions/1.0.0/samples/todo-cli-bugs/README.md +29 -0
- package/data/craftbook-templates/re/review-code-folder/versions/1.0.0/samples/todo-cli-bugs/package.json +17 -0
- package/data/craftbook-templates/re/review-code-folder/versions/1.0.0/samples/todo-cli-bugs/src/format.js +15 -0
- package/data/craftbook-templates/re/review-code-folder/versions/1.0.0/samples/todo-cli-bugs/src/index.js +50 -0
- package/data/craftbook-templates/re/review-code-folder/versions/1.0.0/samples/todo-cli-bugs/src/store.js +44 -0
- package/data/craftbook-templates/re/review-code-folder/versions/1.0.0/samples/todo-cli-bugs/test/store.test.js +37 -0
- package/data/craftbook-templates/re/review-code-folder/versions/1.0.0/test.json +108 -0
- package/data/craftbook-templates/sc/scrape-to-structured/manifest.json +3 -0
- package/data/craftbook-templates/sp/spa-dashboard/manifest.json +4 -0
- package/data/craftbook-templates/sp/spreadsheet-findings/manifest.json +26 -0
- package/data/craftbook-templates/sp/spreadsheet-findings/versions/1.0.0/craftbook.json +186 -0
- package/data/craftbook-templates/sp/spreadsheet-findings/versions/1.0.0/samples/shop-sales/sales.csv +49 -0
- package/data/craftbook-templates/sp/spreadsheet-findings/versions/1.0.0/test.json +88 -0
- package/data/craftbook-templates/sp/spreadsheet-model/manifest.json +4 -0
- package/data/craftbook-templates/sp/sprite-sheet/manifest.json +4 -0
- package/data/craftbook-templates/sq/sql-analysis/manifest.json +3 -0
- package/data/craftbook-templates/st/standup-summary/manifest.json +3 -0
- package/data/craftbook-templates/st/status-report/manifest.json +3 -0
- package/data/craftbook-templates/su/subscription-audit/manifest.json +4 -0
- package/data/craftbook-templates/su/survey-analysis/manifest.json +4 -0
- package/data/craftbook-templates/ta/tailor-resume/manifest.json +3 -0
- package/data/craftbook-templates/ti/tidy-spreadsheet/manifest.json +26 -0
- package/data/craftbook-templates/ti/tidy-spreadsheet/versions/1.0.0/craftbook.json +183 -0
- package/data/craftbook-templates/ti/tidy-spreadsheet/versions/1.0.0/samples/club-members/members.csv +43 -0
- package/data/craftbook-templates/ti/tidy-spreadsheet/versions/1.0.0/test.json +108 -0
- package/data/craftbook-templates/ti/tileset-batch/manifest.json +4 -0
- package/data/craftbook-templates/to/topic-explainer/manifest.json +4 -0
- package/data/craftbook-templates/tr/transcribe-audio/manifest.json +4 -0
- package/data/craftbook-templates/tr/transcribe-index/manifest.json +4 -0
- package/data/craftbook-templates/vi/visit-prep/manifest.json +4 -0
- package/data/craftbook-templates/we/weak-spot-drill/manifest.json +3 -0
- package/data/craftbook-templates/we/week-plan/manifest.json +3 -0
- package/data/craftbook-templates/we/weekly-pipeline-review/manifest.json +3 -0
- package/data/craftbook-templates/we/weekly-review/manifest.json +3 -0
- package/data/craftbook-templates/ye/year-in-review/manifest.json +4 -0
- package/data/image-models/an/animagine-xl-4/versions/4.0.1/manifest.json +16 -0
- package/data/image-models/fl/flux-2-klein-4b-q4/versions/1.0.1/manifest.json +29 -0
- package/data/image-models/index.json +1 -1
- package/data/image-models/ir/iris-3b-f32/versions/1.0.1/manifest.json +25 -0
- package/data/image-models/kr/krea-2-turbo-q4/versions/1.0.1/manifest.json +29 -0
- package/data/image-models/kr/krea-2-turbo-q6/versions/1.0.1/manifest.json +29 -0
- package/data/image-models/kr/krea-2-turbo-q8/versions/1.0.1/manifest.json +29 -0
- package/data/image-models/mi/ming-image-0.1-design-bf16/versions/1.0.1/manifest.json +50 -0
- package/data/image-models/raw-index.json +1 -1
- package/data/image-models/sd/sd-1.5/versions/1.0.1/manifest.json +16 -0
- package/data/image-models/sd/sd-turbo/versions/1.0.1/manifest.json +16 -0
- package/data/image-models/sd/sdxl-base-1.0/versions/1.0.1/manifest.json +16 -0
- package/data/image-models/sd/sdxl-lightning-4step/versions/1.0.1/manifest.json +16 -0
- package/data/image-models/sd/sdxl-turbo/versions/1.0.1/manifest.json +16 -0
- package/data/project-types/ca/caregiving-binder/manifest.json +4 -0
- package/data/project-types/de/design-scheme/manifest.json +4 -0
- package/data/project-types/fi/fitness-coach/manifest.json +4 -0
- package/data/project-types/fr/freelance-office/manifest.json +3 -0
- package/data/project-types/fu/fundraiser-hq/manifest.json +4 -0
- package/data/project-types/ho/household-budget/manifest.json +3 -0
- package/data/project-types/index.json +1 -1
- package/data/project-types/jo/job-hunt/manifest.json +4 -0
- package/data/project-types/jo/job-hunt/versions/1.0.3/about.md +10 -0
- package/data/project-types/jo/job-hunt/versions/1.0.3/activity.json +4 -0
- package/data/project-types/jo/job-hunt/versions/1.0.3/manifest.json +212 -0
- package/data/project-types/jo/job-hunt/versions/1.0.3/mission.md +9 -0
- package/data/project-types/jo/job-hunt/versions/1.0.3/pages/dashboard/index.html +430 -0
- package/data/project-types/jo/job-hunt/versions/1.0.3/pipeline.json +6 -0
- package/data/project-types/li/life-binder/manifest.json +4 -0
- package/data/project-types/raw-index.json +1 -1
- package/data/project-types/so/social-feed/manifest.json +3 -0
- package/data/project-types/tr/trip-planner/versions/1.0.3/about.md +7 -0
- package/data/project-types/tr/trip-planner/versions/1.0.3/journal.json +4 -0
- package/data/project-types/tr/trip-planner/versions/1.0.3/manifest.json +226 -0
- package/data/project-types/tr/trip-planner/versions/1.0.3/mission.md +4 -0
- package/data/project-types/tr/trip-planner/versions/1.0.3/packing.json +8 -0
- package/data/project-types/tr/trip-planner/versions/1.0.3/pages/dashboard/index.html +368 -0
- package/data/project-types/tr/trip-planner/versions/1.0.3/trip.json +8 -0
- package/data/toolsets/do/docblocks/versions/2.7.0/manifest.json +95 -0
- package/data/toolsets/index.json +1 -1
- package/data/toolsets/raw-index.json +1 -1
- package/data/video-models/index.json +1 -1
- package/data/video-models/lt/ltx-2-19b/versions/1.0.1/manifest.json +375 -0
- package/data/video-models/lt/ltx-2.3-22b/versions/1.0.1/manifest.json +377 -0
- package/data/video-models/lt/ltx-2.3-22b-distilled/versions/1.0.1/manifest.json +377 -0
- package/data/video-models/lt/ltx-video-0.9.7-dev/versions/1.0.1/manifest.json +195 -0
- package/data/video-models/lt/ltx-video-0.9.8-13b-distilled/versions/1.0.1/manifest.json +190 -0
- package/data/video-models/raw-index.json +1 -1
- package/data/video-models/wa/wan2.2-ti2v-5b/versions/1.0.1/manifest.json +168 -0
- package/package.json +2 -1
- package/schemas/craftbook-doc.schema.json +35 -0
- package/schemas/craftbook-template-identity.schema.json +18 -0
- package/schemas/craftbook-template-version.schema.json +35 -0
- package/schemas/image-model-identity.schema.json +0 -2
- package/schemas/image-model-version.schema.json +50 -0
- package/schemas/project-type-identity.schema.json +18 -0
- package/schemas/video-model-identity.schema.json +0 -2
- package/schemas/video-model-version.schema.json +25 -0
- package/data/image-models/fl/flux-1-dev-q4/manifest.json +0 -38
- package/data/image-models/fl/flux-1-dev-q4/versions/1.0.0/manifest.json +0 -29
- package/data/image-models/fl/flux-1-schnell-q4/manifest.json +0 -39
- package/data/image-models/fl/flux-1-schnell-q4/versions/1.0.0/manifest.json +0 -29
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": 1,
|
|
3
|
+
"kind": "craftbook-template",
|
|
4
|
+
"id": "spreadsheet-findings",
|
|
5
|
+
"role": "general",
|
|
6
|
+
"category": "research",
|
|
7
|
+
"interests": [
|
|
8
|
+
"data"
|
|
9
|
+
],
|
|
10
|
+
"name": "Make sense of a spreadsheet",
|
|
11
|
+
"description": "Hand it a spreadsheet and get back what is in it, what stands out, one table worth keeping, and what to look at next, with every number quoted from the file. Works on a CSV, TSV or Excel file and needs no web access and no code. Use it to make sense of sales figures, budgets, survey exports, sign-up lists, or any other table of numbers.",
|
|
12
|
+
"tags": [
|
|
13
|
+
"gallery",
|
|
14
|
+
"first-project",
|
|
15
|
+
"spreadsheet",
|
|
16
|
+
"csv",
|
|
17
|
+
"data",
|
|
18
|
+
"analysis",
|
|
19
|
+
"findings"
|
|
20
|
+
],
|
|
21
|
+
"maintainer": {
|
|
22
|
+
"name": "Gezel"
|
|
23
|
+
},
|
|
24
|
+
"license": "MIT",
|
|
25
|
+
"yankedVersions": []
|
|
26
|
+
}
|
|
@@ -0,0 +1,186 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "spreadsheet-findings",
|
|
3
|
+
"name": "Make sense of a spreadsheet",
|
|
4
|
+
"description": "Hand it a spreadsheet and get back what is in it, what stands out, one table worth keeping, and what to look at next, with every number quoted from the file. Works on a CSV, TSV or Excel file and needs no web access and no code. Use it to make sense of sales figures, budgets, survey exports, sign-up lists, or any other table of numbers.\n\nIt works on the spreadsheet you choose when you launch it: a file in this project, or one you pick from your computer. No file to hand? Try it on the sample, a small shop's monthly sales.",
|
|
5
|
+
"entryStepId": "analyse",
|
|
6
|
+
"triggers": [
|
|
7
|
+
"make sense of a spreadsheet",
|
|
8
|
+
"what stands out in this spreadsheet",
|
|
9
|
+
"analyse a spreadsheet",
|
|
10
|
+
"analyze a spreadsheet",
|
|
11
|
+
"findings from a spreadsheet",
|
|
12
|
+
"summarize a csv"
|
|
13
|
+
],
|
|
14
|
+
"samples": [
|
|
15
|
+
{
|
|
16
|
+
"id": "shop-sales",
|
|
17
|
+
"title": "a small shop's monthly sales",
|
|
18
|
+
"param": "source",
|
|
19
|
+
"files": [
|
|
20
|
+
"samples/shop-sales/sales.csv"
|
|
21
|
+
]
|
|
22
|
+
}
|
|
23
|
+
],
|
|
24
|
+
"paramSchema": {
|
|
25
|
+
"type": "object",
|
|
26
|
+
"required": [
|
|
27
|
+
"source"
|
|
28
|
+
],
|
|
29
|
+
"properties": {
|
|
30
|
+
"source": {
|
|
31
|
+
"type": "string",
|
|
32
|
+
"title": "Spreadsheet",
|
|
33
|
+
"description": "The spreadsheet to make sense of: a CSV, TSV or Excel file in this project, or one you pick from your computer.",
|
|
34
|
+
"input": {
|
|
35
|
+
"kind": "file",
|
|
36
|
+
"accept": [
|
|
37
|
+
".csv",
|
|
38
|
+
".tsv",
|
|
39
|
+
".xlsx"
|
|
40
|
+
]
|
|
41
|
+
}
|
|
42
|
+
},
|
|
43
|
+
"workPath": {
|
|
44
|
+
"type": "string",
|
|
45
|
+
"title": "Working folder",
|
|
46
|
+
"description": "Per-task working folder in the artifacts drawer. Defaults to this task's own folder so runs never collide; override with a stable name when you deliberately want runs to share files.",
|
|
47
|
+
"default": "{{task.dir}}",
|
|
48
|
+
"askUser": false
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
},
|
|
52
|
+
"steps": [
|
|
53
|
+
{
|
|
54
|
+
"id": "analyse",
|
|
55
|
+
"name": "Make sense of it",
|
|
56
|
+
"description": "Read the spreadsheet and write what is in it and what stands out.",
|
|
57
|
+
"prompt": "Make sense of the spreadsheet in the `source` input and write what you find to `{{workPath}}/findings.md`.\n\n1. Open the file list `{{task.dir}}/inputs/source.json` with `read_artifact`. It names the spreadsheet and the drawer it is in.\n2. Read the spreadsheet end to end with the tool named on its `source` line under Invocation parameters. Note the column names, the number of data rows, and the first and last date or period, if it has dates.\n3. Work out what stands out: the highest and lowest values, a peak or a dip, how a value changed from the first period to the last, a group that grows or shrinks, a row that does not fit. Prefer numbers you can read straight from the file. When you add numbers up, add them twice and use the total only if both sums agree.\n4. Write `{{workPath}}/findings.md` with `write_artifact`, under exactly these four headings:\n - `## What is in it`: the columns, the number of data rows, and the date range, or that it has no dates.\n - `## What stands out`: three to five findings, each in one or two sentences that give the actual numbers from the file.\n - `## A table worth keeping`: one small markdown table taken or summed from the data, with a header row, a `|---|` line and at most 15 rows.\n - `## What to look at next`: two or three questions the data raises but cannot answer.\n\nEvery number, name and date you write must come from the spreadsheet. Never invent one. If the file is longer than you can read, say under What is in it how many rows you read, and base every finding on those rows.\n\nIf the spreadsheet is empty or cannot be read, do not write `findings.md`. Write a task note with `write_task_note` that names the file you tried and what you saw, then end your turn.",
|
|
58
|
+
"suggestedRole": "data-analyst",
|
|
59
|
+
"toolPolicy": {
|
|
60
|
+
"disallowBuiltinToolsets": [
|
|
61
|
+
"ai-apps",
|
|
62
|
+
"archives",
|
|
63
|
+
"audio",
|
|
64
|
+
"browser-automation",
|
|
65
|
+
"code-execution",
|
|
66
|
+
"craftbooks",
|
|
67
|
+
"data-tables",
|
|
68
|
+
"entity-intel",
|
|
69
|
+
"git",
|
|
70
|
+
"image-intel",
|
|
71
|
+
"images",
|
|
72
|
+
"role-delegation",
|
|
73
|
+
"role-delegation-escalation",
|
|
74
|
+
"security-intel",
|
|
75
|
+
"team-management",
|
|
76
|
+
"videos",
|
|
77
|
+
"web",
|
|
78
|
+
"workspace-fs-write"
|
|
79
|
+
],
|
|
80
|
+
"outputMedium": "artifact",
|
|
81
|
+
"additionalOutputMedia": [
|
|
82
|
+
"task-note"
|
|
83
|
+
]
|
|
84
|
+
},
|
|
85
|
+
"consumes": [
|
|
86
|
+
{
|
|
87
|
+
"file": "{{task.dir}}/inputs/source.json",
|
|
88
|
+
"artifact": true
|
|
89
|
+
}
|
|
90
|
+
],
|
|
91
|
+
"advanceWhen": {
|
|
92
|
+
"file": "{{workPath}}/findings.md",
|
|
93
|
+
"minBytes": 1,
|
|
94
|
+
"sniff": "nonempty",
|
|
95
|
+
"artifact": true
|
|
96
|
+
},
|
|
97
|
+
"gate": {
|
|
98
|
+
"at": "completion",
|
|
99
|
+
"checks": [
|
|
100
|
+
{
|
|
101
|
+
"kind": "minBytes",
|
|
102
|
+
"file": "{{workPath}}/findings.md",
|
|
103
|
+
"bytes": 600,
|
|
104
|
+
"artifact": true
|
|
105
|
+
},
|
|
106
|
+
{
|
|
107
|
+
"kind": "contains",
|
|
108
|
+
"file": "{{workPath}}/findings.md",
|
|
109
|
+
"pattern": "(?:^|\\n)#{1,3}\\s*What is in it",
|
|
110
|
+
"flags": "i",
|
|
111
|
+
"label": "a \"## What is in it\" section",
|
|
112
|
+
"artifact": true
|
|
113
|
+
},
|
|
114
|
+
{
|
|
115
|
+
"kind": "contains",
|
|
116
|
+
"file": "{{workPath}}/findings.md",
|
|
117
|
+
"pattern": "(?:^|\\n)#{1,3}\\s*What stands out",
|
|
118
|
+
"flags": "i",
|
|
119
|
+
"label": "a \"## What stands out\" section",
|
|
120
|
+
"artifact": true
|
|
121
|
+
},
|
|
122
|
+
{
|
|
123
|
+
"kind": "contains",
|
|
124
|
+
"file": "{{workPath}}/findings.md",
|
|
125
|
+
"pattern": "(?:^|\\n)#{1,3}\\s*A table worth keeping",
|
|
126
|
+
"flags": "i",
|
|
127
|
+
"label": "a \"## A table worth keeping\" section",
|
|
128
|
+
"artifact": true
|
|
129
|
+
},
|
|
130
|
+
{
|
|
131
|
+
"kind": "contains",
|
|
132
|
+
"file": "{{workPath}}/findings.md",
|
|
133
|
+
"pattern": "(?:^|\\n)#{1,3}\\s*What to look at next",
|
|
134
|
+
"flags": "i",
|
|
135
|
+
"label": "a \"## What to look at next\" section",
|
|
136
|
+
"artifact": true
|
|
137
|
+
},
|
|
138
|
+
{
|
|
139
|
+
"kind": "tableShape",
|
|
140
|
+
"file": "{{workPath}}/findings.md",
|
|
141
|
+
"minRows": 2,
|
|
142
|
+
"artifact": true
|
|
143
|
+
}
|
|
144
|
+
],
|
|
145
|
+
"onReject": "analyse",
|
|
146
|
+
"maxAttempts": 3
|
|
147
|
+
},
|
|
148
|
+
"next": "finish"
|
|
149
|
+
},
|
|
150
|
+
{
|
|
151
|
+
"id": "finish",
|
|
152
|
+
"name": "Finish",
|
|
153
|
+
"description": "The deliverable passed its checks. Stamp a short summary and report DONE.",
|
|
154
|
+
"prompt": "The deliverable passed its checks. Write a one-paragraph DONE summary to task notes via `write_task_note`: what you made, the deliverable path(s), and a one-line confirmation that each required section is there. Then report DONE.",
|
|
155
|
+
"suggestedRole": "data-analyst",
|
|
156
|
+
"toolPolicy": {
|
|
157
|
+
"disallowBuiltinToolsets": [
|
|
158
|
+
"ai-apps",
|
|
159
|
+
"archives",
|
|
160
|
+
"artifacts",
|
|
161
|
+
"audio",
|
|
162
|
+
"browser-automation",
|
|
163
|
+
"code-execution",
|
|
164
|
+
"craftbooks",
|
|
165
|
+
"data-tables",
|
|
166
|
+
"entity-intel",
|
|
167
|
+
"git",
|
|
168
|
+
"image-intel",
|
|
169
|
+
"images",
|
|
170
|
+
"role-delegation",
|
|
171
|
+
"role-delegation-escalation",
|
|
172
|
+
"security-intel",
|
|
173
|
+
"team-management",
|
|
174
|
+
"videos",
|
|
175
|
+
"web",
|
|
176
|
+
"workspace-fs-write"
|
|
177
|
+
],
|
|
178
|
+
"outputMedium": "task-note"
|
|
179
|
+
},
|
|
180
|
+
"terminal": true
|
|
181
|
+
}
|
|
182
|
+
],
|
|
183
|
+
"version": "1.0.0",
|
|
184
|
+
"releasedAt": "2026-10-12T00:00:00Z",
|
|
185
|
+
"minGezelVersion": "1.26285"
|
|
186
|
+
}
|
package/data/craftbook-templates/sp/spreadsheet-findings/versions/1.0.0/samples/shop-sales/sales.csv
ADDED
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
month,product,units,revenue_eur
|
|
2
|
+
2025-01,Sourdough loaf,940,4230.00
|
|
3
|
+
2025-01,Butter croissant,1310,2882.00
|
|
4
|
+
2025-01,Rye loaf,640,2560.00
|
|
5
|
+
2025-01,Honey spice cake,150,975.00
|
|
6
|
+
2025-02,Sourdough loaf,905,4072.50
|
|
7
|
+
2025-02,Butter croissant,1280,2816.00
|
|
8
|
+
2025-02,Rye loaf,610,2440.00
|
|
9
|
+
2025-02,Honey spice cake,135,877.50
|
|
10
|
+
2025-03,Sourdough loaf,960,4320.00
|
|
11
|
+
2025-03,Butter croissant,1395,3069.00
|
|
12
|
+
2025-03,Rye loaf,575,2300.00
|
|
13
|
+
2025-03,Honey spice cake,140,910.00
|
|
14
|
+
2025-04,Sourdough loaf,980,4410.00
|
|
15
|
+
2025-04,Butter croissant,1450,3190.00
|
|
16
|
+
2025-04,Rye loaf,540,2160.00
|
|
17
|
+
2025-04,Honey spice cake,160,1040.00
|
|
18
|
+
2025-05,Sourdough loaf,1010,4545.00
|
|
19
|
+
2025-05,Butter croissant,1560,3432.00
|
|
20
|
+
2025-05,Rye loaf,505,2020.00
|
|
21
|
+
2025-05,Honey spice cake,125,812.50
|
|
22
|
+
2025-06,Sourdough loaf,970,4365.00
|
|
23
|
+
2025-06,Butter croissant,1690,3718.00
|
|
24
|
+
2025-06,Rye loaf,470,1880.00
|
|
25
|
+
2025-06,Honey spice cake,110,715.00
|
|
26
|
+
2025-07,Sourdough loaf,925,4162.50
|
|
27
|
+
2025-07,Butter croissant,1785,3927.00
|
|
28
|
+
2025-07,Rye loaf,430,1720.00
|
|
29
|
+
2025-07,Honey spice cake,95,617.50
|
|
30
|
+
2025-08,Sourdough loaf,890,4005.00
|
|
31
|
+
2025-08,Butter croissant,1740,3828.00
|
|
32
|
+
2025-08,Rye loaf,395,1580.00
|
|
33
|
+
2025-08,Honey spice cake,105,682.50
|
|
34
|
+
2025-09,Sourdough loaf,985,4432.50
|
|
35
|
+
2025-09,Butter croissant,1520,3344.00
|
|
36
|
+
2025-09,Rye loaf,360,1440.00
|
|
37
|
+
2025-09,Honey spice cake,170,1105.00
|
|
38
|
+
2025-10,Sourdough loaf,1020,4590.00
|
|
39
|
+
2025-10,Butter croissant,1440,3168.00
|
|
40
|
+
2025-10,Rye loaf,320,1280.00
|
|
41
|
+
2025-10,Honey spice cake,310,2015.00
|
|
42
|
+
2025-11,Sourdough loaf,1060,4770.00
|
|
43
|
+
2025-11,Butter croissant,1405,3091.00
|
|
44
|
+
2025-11,Rye loaf,285,1140.00
|
|
45
|
+
2025-11,Honey spice cake,720,4680.00
|
|
46
|
+
2025-12,Sourdough loaf,1240,5580.00
|
|
47
|
+
2025-12,Butter croissant,1610,3542.00
|
|
48
|
+
2025-12,Rye loaf,250,1000.00
|
|
49
|
+
2025-12,Honey spice cake,1385,9002.50
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": 1,
|
|
3
|
+
"mode": "workflow",
|
|
4
|
+
"title": "Make sense of a spreadsheet on the shop-sales sample",
|
|
5
|
+
"objective": "Prove that a small local model can run the Make sense of a spreadsheet craftbook on its bundled shop-sales sample, offline, and reach the terminal step with a findings report whose numbers come from the file.",
|
|
6
|
+
"tags": [
|
|
7
|
+
"first-project",
|
|
8
|
+
"sample",
|
|
9
|
+
"data"
|
|
10
|
+
],
|
|
11
|
+
"prompt": "What stands out in this spreadsheet of a small bakery's monthly sales?",
|
|
12
|
+
"setup": {
|
|
13
|
+
"projectName": "Bakery sales",
|
|
14
|
+
"about": "A small made-up bakery's 2025 sales: one row per product per month, with units sold and revenue in euros. No web access or outside data is needed.",
|
|
15
|
+
"missionObjectives": "Run the craftbook on source/sales.csv and leave findings.md in the task folder, with every number taken from the file.",
|
|
16
|
+
"files": [
|
|
17
|
+
{
|
|
18
|
+
"path": "source/sales.csv",
|
|
19
|
+
"content": "month,product,units,revenue_eur\n2025-01,Sourdough loaf,940,4230.00\n2025-01,Butter croissant,1310,2882.00\n2025-01,Rye loaf,640,2560.00\n2025-01,Honey spice cake,150,975.00\n2025-02,Sourdough loaf,905,4072.50\n2025-02,Butter croissant,1280,2816.00\n2025-02,Rye loaf,610,2440.00\n2025-02,Honey spice cake,135,877.50\n2025-03,Sourdough loaf,960,4320.00\n2025-03,Butter croissant,1395,3069.00\n2025-03,Rye loaf,575,2300.00\n2025-03,Honey spice cake,140,910.00\n2025-04,Sourdough loaf,980,4410.00\n2025-04,Butter croissant,1450,3190.00\n2025-04,Rye loaf,540,2160.00\n2025-04,Honey spice cake,160,1040.00\n2025-05,Sourdough loaf,1010,4545.00\n2025-05,Butter croissant,1560,3432.00\n2025-05,Rye loaf,505,2020.00\n2025-05,Honey spice cake,125,812.50\n2025-06,Sourdough loaf,970,4365.00\n2025-06,Butter croissant,1690,3718.00\n2025-06,Rye loaf,470,1880.00\n2025-06,Honey spice cake,110,715.00\n2025-07,Sourdough loaf,925,4162.50\n2025-07,Butter croissant,1785,3927.00\n2025-07,Rye loaf,430,1720.00\n2025-07,Honey spice cake,95,617.50\n2025-08,Sourdough loaf,890,4005.00\n2025-08,Butter croissant,1740,3828.00\n2025-08,Rye loaf,395,1580.00\n2025-08,Honey spice cake,105,682.50\n2025-09,Sourdough loaf,985,4432.50\n2025-09,Butter croissant,1520,3344.00\n2025-09,Rye loaf,360,1440.00\n2025-09,Honey spice cake,170,1105.00\n2025-10,Sourdough loaf,1020,4590.00\n2025-10,Butter croissant,1440,3168.00\n2025-10,Rye loaf,320,1280.00\n2025-10,Honey spice cake,310,2015.00\n2025-11,Sourdough loaf,1060,4770.00\n2025-11,Butter croissant,1405,3091.00\n2025-11,Rye loaf,285,1140.00\n2025-11,Honey spice cake,720,4680.00\n2025-12,Sourdough loaf,1240,5580.00\n2025-12,Butter croissant,1610,3542.00\n2025-12,Rye loaf,250,1000.00\n2025-12,Honey spice cake,1385,9002.50\n"
|
|
20
|
+
}
|
|
21
|
+
],
|
|
22
|
+
"craftbookParams": {
|
|
23
|
+
"source": "source/sales.csv"
|
|
24
|
+
},
|
|
25
|
+
"worker": {
|
|
26
|
+
"name": "Data Analyst",
|
|
27
|
+
"role": "data-analyst",
|
|
28
|
+
"about": "A careful data analyst. Follow the craftbook steps exactly, read the file you are given, and never invent a number."
|
|
29
|
+
}
|
|
30
|
+
},
|
|
31
|
+
"mocks": [],
|
|
32
|
+
"success": {
|
|
33
|
+
"summary": "The spreadsheet-findings task read the sample, wrote findings.md with all four sections and a table, named the December peak and the falling rye loaf, and reached its terminal step without external services.",
|
|
34
|
+
"deliverables": [
|
|
35
|
+
{
|
|
36
|
+
"path": "{{task.dir}}/findings.md",
|
|
37
|
+
"kind": "markdown-report",
|
|
38
|
+
"artifact": true,
|
|
39
|
+
"minBytes": 600,
|
|
40
|
+
"checks": [
|
|
41
|
+
{
|
|
42
|
+
"kind": "contains",
|
|
43
|
+
"file": "{{task.dir}}/findings.md",
|
|
44
|
+
"pattern": "\\bDec(?:ember)?\\b|2025-12",
|
|
45
|
+
"flags": "i",
|
|
46
|
+
"label": "the December peak",
|
|
47
|
+
"artifact": true
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
"kind": "contains",
|
|
51
|
+
"file": "{{task.dir}}/findings.md",
|
|
52
|
+
"pattern": "\\brye\\b",
|
|
53
|
+
"flags": "i",
|
|
54
|
+
"label": "the falling rye loaf",
|
|
55
|
+
"artifact": true
|
|
56
|
+
}
|
|
57
|
+
]
|
|
58
|
+
}
|
|
59
|
+
],
|
|
60
|
+
"taskGraph": {
|
|
61
|
+
"requireCraftbookTask": true,
|
|
62
|
+
"requireTerminalStep": true
|
|
63
|
+
}
|
|
64
|
+
},
|
|
65
|
+
"rubric": {
|
|
66
|
+
"artifact": {
|
|
67
|
+
"path": "{{task.dir}}/findings.md",
|
|
68
|
+
"kind": "markdown"
|
|
69
|
+
},
|
|
70
|
+
"axes": [
|
|
71
|
+
{
|
|
72
|
+
"name": "grounding",
|
|
73
|
+
"description": "Every number, product and month in findings.md appears in sales.csv or is a correct sum of values in it."
|
|
74
|
+
},
|
|
75
|
+
{
|
|
76
|
+
"name": "insight",
|
|
77
|
+
"description": "The findings name what a shop owner would want to know first: the December peak driven by the honey spice cake, and the steady fall of the rye loaf."
|
|
78
|
+
}
|
|
79
|
+
],
|
|
80
|
+
"contextNote": "Advisory only. Deterministic pass/fail comes from the craftbook runtime gates, the deliverable checks, attribution, and terminal progress."
|
|
81
|
+
},
|
|
82
|
+
"qualityFocus": [
|
|
83
|
+
"real spreadsheet-findings craftbook task attribution",
|
|
84
|
+
"numbers quoted from the file, never invented",
|
|
85
|
+
"all four required sections and a derived table",
|
|
86
|
+
"terminal workflow progress offline"
|
|
87
|
+
]
|
|
88
|
+
}
|
|
@@ -4,6 +4,10 @@
|
|
|
4
4
|
"id": "spreadsheet-model",
|
|
5
5
|
"role": "general",
|
|
6
6
|
"category": "business",
|
|
7
|
+
"interests": [
|
|
8
|
+
"data",
|
|
9
|
+
"business"
|
|
10
|
+
],
|
|
7
11
|
"name": "Spreadsheet / Financial Model",
|
|
8
12
|
"description": "Build a working spreadsheet-style model (budget, forecast, unit economics, pricing, or scenario calculator) with clearly separated inputs, calculations, and outputs. Scopes the model's purpose, drivers, and assumptions FIRST so the formulas have a contract, then builds the model with live formulas and labeled assumption cells, then verifies the math by hand-checking key outputs and a sanity scenario. Use this for a financial model, budget calculator, ROI/forecast spreadsheet, unit-economics model, or any input-driven calculator.",
|
|
9
13
|
"tags": [
|
|
@@ -4,6 +4,10 @@
|
|
|
4
4
|
"id": "sprite-sheet",
|
|
5
5
|
"role": "general",
|
|
6
6
|
"category": "media",
|
|
7
|
+
"interests": [
|
|
8
|
+
"content",
|
|
9
|
+
"play"
|
|
10
|
+
],
|
|
7
11
|
"name": "Game Sprite Sheet",
|
|
8
12
|
"description": "Produce a game-ready sprite sheet — a character or object with its animation frames (idle, walk, jump, attack) on a uniform grid — plus the frame metadata (JSON atlas) a game engine needs to slice it. Lock the style and the frame inventory FIRST (cell size, pivot, palette, which animations and how many frames each) because a sprite sheet is only usable if every cell is the same size and the pivot is consistent; then generate the frames and pack them into a sheet with a matching atlas. Covers sprite sheets, game art, animation frames, texture atlases, pixel-art characters, and 2D game assets.",
|
|
9
13
|
"tags": [
|
|
@@ -4,6 +4,9 @@
|
|
|
4
4
|
"id": "sql-analysis",
|
|
5
5
|
"role": "general",
|
|
6
6
|
"category": "code-data",
|
|
7
|
+
"interests": [
|
|
8
|
+
"data"
|
|
9
|
+
],
|
|
7
10
|
"name": "Answer a Question with SQL",
|
|
8
11
|
"description": "Answer a specific business question against a database or table set with a correct, readable SQL query and a short written answer. Scopes the question, the tables/columns, and the grain FIRST (so the query measures the right thing at the right level), then writes and runs the query as a data-analyst, then verifies the result with a sanity check and an explanation. Use this for SQL analysis, querying a database, writing a report query, computing a metric in SQL, or answering 'how many / what's the trend' from tables.",
|
|
9
12
|
"tags": [
|
|
@@ -4,6 +4,9 @@
|
|
|
4
4
|
"id": "standup-summary",
|
|
5
5
|
"role": "general",
|
|
6
6
|
"category": "business",
|
|
7
|
+
"interests": [
|
|
8
|
+
"work"
|
|
9
|
+
],
|
|
7
10
|
"name": "Standup / Team Update Summary",
|
|
8
11
|
"description": "Condense a pile of raw team updates (standup messages, async check-ins, channel dumps) into one clean summary grouped by person or workstream, surfacing blockers and decisions. Scopes the grouping axis and summary shape FIRST (by-person vs by-project, what counts as a blocker, the yesterday/today/blockers frame), then a copywriter compresses every raw update into that frame without dropping anyone. The scope-first step prevents a 4B model from rambling and guarantees blockers get their own callout section instead of being buried. Use for daily standup summaries, async update rollups, team check-in digests, and turning Slack threads into a readable recap.",
|
|
9
12
|
"tags": [
|
|
@@ -4,6 +4,9 @@
|
|
|
4
4
|
"id": "status-report",
|
|
5
5
|
"role": "general",
|
|
6
6
|
"category": "business",
|
|
7
|
+
"interests": [
|
|
8
|
+
"work"
|
|
9
|
+
],
|
|
7
10
|
"name": "Recurring Status Report",
|
|
8
11
|
"description": "Produce a recurring (weekly/biweekly) status report by gathering signals from the team's tools and writing a tight, skimmable update for stakeholders. Scopes the report template and the exact data sources FIRST (sections, audience, reporting window, RAG/health convention), then a developer gathers the raw signals from issue trackers, PRs, metrics, and notes into a facts file, then a copywriter writes the polished report strictly from those gathered facts. Scoping the template before gathering is what keeps every recurring issue consistent and prevents the model from padding with prose. Use for weekly status updates, sprint reports, project health reports, stakeholder updates, and exec summaries.",
|
|
9
12
|
"tags": [
|
|
@@ -4,6 +4,10 @@
|
|
|
4
4
|
"id": "subscription-audit",
|
|
5
5
|
"role": "maintenance-review",
|
|
6
6
|
"category": "business",
|
|
7
|
+
"interests": [
|
|
8
|
+
"home",
|
|
9
|
+
"business"
|
|
10
|
+
],
|
|
7
11
|
"name": "Audit Recurring Subscriptions",
|
|
8
12
|
"description": "Audit a set of transactions or a vendor list to find every recurring subscription, normalize each to a monthly cost, surface duplicates, price hikes, and zombie/unused services, and produce a prioritized cancel/keep recommendation report. Locks the recurrence-detection rule, the normalization (to monthly), and the recommendation criteria FIRST, then detects and analyzes the recurring charges, then writes a clear report whose every recommendation is backed by the evidence in the data. Defining what counts as 'recurring' and how to rank cancel candidates before analyzing is what makes the audit actionable rather than a list of guesses.",
|
|
9
13
|
"tags": [
|
|
@@ -4,6 +4,10 @@
|
|
|
4
4
|
"id": "survey-analysis",
|
|
5
5
|
"role": "general",
|
|
6
6
|
"category": "research",
|
|
7
|
+
"interests": [
|
|
8
|
+
"data",
|
|
9
|
+
"work"
|
|
10
|
+
],
|
|
7
11
|
"name": "Survey Analysis",
|
|
8
12
|
"description": "Analyze survey responses into a clear summary of what respondents actually said, across both quantitative (rating/multiple-choice) and open-text questions. Scopes the questions, response types, and segments FIRST, then analyzes — tallying closed questions and theming open-text comments as a data-analyst, then writes a findings summary with the headline results, segment differences, and representative quotes. Use this for analyzing survey results, summarizing a questionnaire, NPS/feedback analysis, theming open-ended responses, or a survey readout.",
|
|
9
13
|
"tags": [
|
|
@@ -4,6 +4,9 @@
|
|
|
4
4
|
"id": "tailor-resume",
|
|
5
5
|
"role": "general",
|
|
6
6
|
"category": "business",
|
|
7
|
+
"interests": [
|
|
8
|
+
"learning"
|
|
9
|
+
],
|
|
7
10
|
"name": "Tailor Résumé to a Posting",
|
|
8
11
|
"description": "Adapt an EXISTING résumé to a specific job posting — a fit map of must-hit requirements first, then a tailored variant that re-orders and re-words real experience without inventing any. Distinct from building a résumé from scratch (see Résumé / CV): this book starts from a base résumé plus a posting and produces the targeted variant along with honest gap notes for the cover letter and interview. Use per serious application in a job search.",
|
|
9
12
|
"tags": [
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": 1,
|
|
3
|
+
"kind": "craftbook-template",
|
|
4
|
+
"id": "tidy-spreadsheet",
|
|
5
|
+
"role": "general",
|
|
6
|
+
"category": "research",
|
|
7
|
+
"interests": [
|
|
8
|
+
"data"
|
|
9
|
+
],
|
|
10
|
+
"name": "Tidy up a spreadsheet",
|
|
11
|
+
"description": "Clean up a messy CSV or TSV file: trims stray spaces, puts email addresses in lower case and dates in one format, settles on one spelling of each repeated value, and removes duplicate rows. You get the tidy file plus a note of every change and of everything it could not fix, such as empty cells and dates that read two ways. It never guesses a missing value.",
|
|
12
|
+
"tags": [
|
|
13
|
+
"gallery",
|
|
14
|
+
"first-project",
|
|
15
|
+
"spreadsheet",
|
|
16
|
+
"csv",
|
|
17
|
+
"data-cleaning",
|
|
18
|
+
"tidy",
|
|
19
|
+
"duplicates"
|
|
20
|
+
],
|
|
21
|
+
"maintainer": {
|
|
22
|
+
"name": "Gezel"
|
|
23
|
+
},
|
|
24
|
+
"license": "MIT",
|
|
25
|
+
"yankedVersions": []
|
|
26
|
+
}
|
|
@@ -0,0 +1,183 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "tidy-spreadsheet",
|
|
3
|
+
"name": "Tidy up a spreadsheet",
|
|
4
|
+
"description": "Clean up a messy CSV or TSV file: trims stray spaces, puts email addresses in lower case and dates in one format, settles on one spelling of each repeated value, and removes duplicate rows. You get the tidy file plus a note of every change and of everything it could not fix, such as empty cells and dates that read two ways. It never guesses a missing value.\n\nIt works on the spreadsheet you choose when you launch it: a file in this project, or one you pick from your computer. Your file is never changed; the tidy copy lands in the task folder. No file to hand? Try it on the sample, a volunteer club's messy member list.",
|
|
5
|
+
"entryStepId": "tidy",
|
|
6
|
+
"triggers": [
|
|
7
|
+
"tidy up a spreadsheet",
|
|
8
|
+
"clean up a spreadsheet",
|
|
9
|
+
"clean a csv",
|
|
10
|
+
"tidy a csv",
|
|
11
|
+
"fix a messy spreadsheet",
|
|
12
|
+
"remove duplicate rows"
|
|
13
|
+
],
|
|
14
|
+
"samples": [
|
|
15
|
+
{
|
|
16
|
+
"id": "club-members",
|
|
17
|
+
"title": "a volunteer club's messy member list",
|
|
18
|
+
"param": "source",
|
|
19
|
+
"files": [
|
|
20
|
+
"samples/club-members/members.csv"
|
|
21
|
+
]
|
|
22
|
+
}
|
|
23
|
+
],
|
|
24
|
+
"paramSchema": {
|
|
25
|
+
"type": "object",
|
|
26
|
+
"required": [
|
|
27
|
+
"source"
|
|
28
|
+
],
|
|
29
|
+
"properties": {
|
|
30
|
+
"source": {
|
|
31
|
+
"type": "string",
|
|
32
|
+
"title": "Spreadsheet",
|
|
33
|
+
"description": "The CSV or TSV file to tidy: a file in this project, or one you pick from your computer. It is read, never changed.",
|
|
34
|
+
"input": {
|
|
35
|
+
"kind": "file",
|
|
36
|
+
"accept": [
|
|
37
|
+
".csv",
|
|
38
|
+
".tsv"
|
|
39
|
+
]
|
|
40
|
+
}
|
|
41
|
+
},
|
|
42
|
+
"workPath": {
|
|
43
|
+
"type": "string",
|
|
44
|
+
"title": "Working folder",
|
|
45
|
+
"description": "Per-task working folder in the artifacts drawer. Defaults to this task's own folder so runs never collide; override with a stable name when you deliberately want runs to share files.",
|
|
46
|
+
"default": "{{task.dir}}",
|
|
47
|
+
"askUser": false
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
},
|
|
51
|
+
"steps": [
|
|
52
|
+
{
|
|
53
|
+
"id": "tidy",
|
|
54
|
+
"name": "Tidy the spreadsheet",
|
|
55
|
+
"description": "Write a cleaned copy of the data and a note of every change.",
|
|
56
|
+
"prompt": "Tidy the spreadsheet in the `source` input into a clean CSV file, and say what you changed.\n\n1. Open the file list `{{task.dir}}/inputs/source.json` with `read_artifact`. It names the spreadsheet and the drawer it is in.\n2. Read the spreadsheet end to end with the tool named on its `source` line under Invocation parameters. Count its data rows.\n3. Clean it. Keep every column, in the same order, and every real row:\n - trim spaces at the start and end of every cell, and turn a double space inside a cell into one;\n - write email addresses in lower case;\n - write every date as YYYY-MM-DD. A date that reads two ways, such as 03/04/2025, stays as it is and goes under What I could not fix;\n - when one value is spelled several ways in a column (yes, Yes, YES), use its most common spelling;\n - remove a row that is an exact copy of an earlier row after this cleaning, and keep the first;\n - leave an empty cell empty. Never guess a missing value.\n4. Write the cleaned data to `{{workPath}}/tidy.csv` with `write_artifact`: plain comma-separated text with no code fence, the header row first, one line per row, every row with as many cells as the header, and any cell that contains a comma wrapped in double quotes.\n5. Then write `{{workPath}}/changes.md` with `write_artifact`, under exactly these two headings:\n - `## What I changed`: how many data rows you read and how many you wrote, each duplicate you removed, and each kind of fix with how many cells it changed.\n - `## What I could not fix`: each empty cell in a column most rows fill, each date that reads two ways, and anything else you left alone, with the row it is on. Write `Nothing.` if there is none.\n\nUse only values from the file. Never invent a row or a value. If the file has more than 150 data rows, tidy the first 150 and say first, under What I could not fix, that the rest were not tidied.\n\nIf the spreadsheet is empty or cannot be read, write neither file. Write a task note with `write_task_note` that names the file you tried and what you saw, then end your turn.",
|
|
57
|
+
"suggestedRole": "data-analyst",
|
|
58
|
+
"toolPolicy": {
|
|
59
|
+
"disallowBuiltinToolsets": [
|
|
60
|
+
"ai-apps",
|
|
61
|
+
"archives",
|
|
62
|
+
"audio",
|
|
63
|
+
"browser-automation",
|
|
64
|
+
"code-execution",
|
|
65
|
+
"craftbooks",
|
|
66
|
+
"data-tables",
|
|
67
|
+
"entity-intel",
|
|
68
|
+
"git",
|
|
69
|
+
"image-intel",
|
|
70
|
+
"images",
|
|
71
|
+
"role-delegation",
|
|
72
|
+
"role-delegation-escalation",
|
|
73
|
+
"security-intel",
|
|
74
|
+
"team-management",
|
|
75
|
+
"videos",
|
|
76
|
+
"web",
|
|
77
|
+
"workspace-fs-write"
|
|
78
|
+
],
|
|
79
|
+
"outputMedium": "artifact",
|
|
80
|
+
"additionalOutputMedia": [
|
|
81
|
+
"task-note"
|
|
82
|
+
]
|
|
83
|
+
},
|
|
84
|
+
"consumes": [
|
|
85
|
+
{
|
|
86
|
+
"file": "{{task.dir}}/inputs/source.json",
|
|
87
|
+
"artifact": true
|
|
88
|
+
}
|
|
89
|
+
],
|
|
90
|
+
"advanceWhen": {
|
|
91
|
+
"file": "{{workPath}}/changes.md",
|
|
92
|
+
"minBytes": 1,
|
|
93
|
+
"sniff": "nonempty",
|
|
94
|
+
"artifact": true
|
|
95
|
+
},
|
|
96
|
+
"gate": {
|
|
97
|
+
"at": "completion",
|
|
98
|
+
"checks": [
|
|
99
|
+
{
|
|
100
|
+
"kind": "minBytes",
|
|
101
|
+
"file": "{{workPath}}/tidy.csv",
|
|
102
|
+
"bytes": 60,
|
|
103
|
+
"artifact": true
|
|
104
|
+
},
|
|
105
|
+
{
|
|
106
|
+
"kind": "contains",
|
|
107
|
+
"file": "{{workPath}}/tidy.csv",
|
|
108
|
+
"pattern": "^[^\\n]*[A-Za-z][^\\n]*,[^\\n]*\\r?\\n[^\\n]*\\S",
|
|
109
|
+
"label": "a header row of column names, then the data rows",
|
|
110
|
+
"artifact": true
|
|
111
|
+
},
|
|
112
|
+
{
|
|
113
|
+
"kind": "csvShape",
|
|
114
|
+
"file": "{{workPath}}/tidy.csv",
|
|
115
|
+
"minRows": 1,
|
|
116
|
+
"consistentColumns": true,
|
|
117
|
+
"artifact": true
|
|
118
|
+
},
|
|
119
|
+
{
|
|
120
|
+
"kind": "minBytes",
|
|
121
|
+
"file": "{{workPath}}/changes.md",
|
|
122
|
+
"bytes": 150,
|
|
123
|
+
"artifact": true
|
|
124
|
+
},
|
|
125
|
+
{
|
|
126
|
+
"kind": "contains",
|
|
127
|
+
"file": "{{workPath}}/changes.md",
|
|
128
|
+
"pattern": "(?:^|\\n)#{1,3}\\s*What I changed",
|
|
129
|
+
"flags": "i",
|
|
130
|
+
"label": "a \"## What I changed\" section",
|
|
131
|
+
"artifact": true
|
|
132
|
+
},
|
|
133
|
+
{
|
|
134
|
+
"kind": "contains",
|
|
135
|
+
"file": "{{workPath}}/changes.md",
|
|
136
|
+
"pattern": "(?:^|\\n)#{1,3}\\s*What I could not fix",
|
|
137
|
+
"flags": "i",
|
|
138
|
+
"label": "a \"## What I could not fix\" section",
|
|
139
|
+
"artifact": true
|
|
140
|
+
}
|
|
141
|
+
],
|
|
142
|
+
"onReject": "tidy",
|
|
143
|
+
"maxAttempts": 3
|
|
144
|
+
},
|
|
145
|
+
"next": "finish"
|
|
146
|
+
},
|
|
147
|
+
{
|
|
148
|
+
"id": "finish",
|
|
149
|
+
"name": "Finish",
|
|
150
|
+
"description": "The deliverable passed its checks. Stamp a short summary and report DONE.",
|
|
151
|
+
"prompt": "The deliverable passed its checks. Write a one-paragraph DONE summary to task notes via `write_task_note`: what you made, the deliverable path(s), and a one-line confirmation that each required section is there. Then report DONE.",
|
|
152
|
+
"suggestedRole": "data-analyst",
|
|
153
|
+
"toolPolicy": {
|
|
154
|
+
"disallowBuiltinToolsets": [
|
|
155
|
+
"ai-apps",
|
|
156
|
+
"archives",
|
|
157
|
+
"artifacts",
|
|
158
|
+
"audio",
|
|
159
|
+
"browser-automation",
|
|
160
|
+
"code-execution",
|
|
161
|
+
"craftbooks",
|
|
162
|
+
"data-tables",
|
|
163
|
+
"entity-intel",
|
|
164
|
+
"git",
|
|
165
|
+
"image-intel",
|
|
166
|
+
"images",
|
|
167
|
+
"role-delegation",
|
|
168
|
+
"role-delegation-escalation",
|
|
169
|
+
"security-intel",
|
|
170
|
+
"team-management",
|
|
171
|
+
"videos",
|
|
172
|
+
"web",
|
|
173
|
+
"workspace-fs-write"
|
|
174
|
+
],
|
|
175
|
+
"outputMedium": "task-note"
|
|
176
|
+
},
|
|
177
|
+
"terminal": true
|
|
178
|
+
}
|
|
179
|
+
],
|
|
180
|
+
"version": "1.0.0",
|
|
181
|
+
"releasedAt": "2026-10-12T00:00:00Z",
|
|
182
|
+
"minGezelVersion": "1.26285"
|
|
183
|
+
}
|