Skip to content

Commit eda9bb6

Browse files
deanzakaclaude
andcommitted
fix: move templates to examples/ to fix GitHub import
The importer reads ALL .json files in agents/, projects/, automations/ with no underscore filtering. The _template.json in automations/ used an invalid action type (taskade_ai_prompt) that failed Zod validation. Move all three templates to examples/ which is not a scanned directory. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
1 parent 1da8cf0 commit eda9bb6

11 files changed

Lines changed: 16 additions & 29 deletions

README.md

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -80,23 +80,20 @@ cortex/
8080
├── cortex.tsk One-click import bundle (generated)
8181
8282
├── agents/ Intelligence layer
83-
│ ├── _template.json Blank template — copy to create your own
8483
│ ├── strategist.json
8584
│ ├── editor.json
8685
│ ├── researcher.json
8786
│ ├── critic.json
8887
│ └── builder.json
8988
9089
├── projects/ Memory layer
91-
│ ├── _template.json
9290
│ ├── company-context.json
9391
│ ├── decision-log.json
9492
│ ├── playbook-*.json (5 playbooks)
9593
│ ├── library-*.json (2 libraries)
9694
│ └── welcome.json
9795
9896
├── automations/ Reflexes layer
99-
│ ├── _template.json
10097
│ ├── daily-standup.json
10198
│ ├── decision-council.json
10299
│ ├── weekly-review.json
@@ -107,6 +104,11 @@ cortex/
107104
├── apps/
108105
│ └── cortex.json Genesis app (React SPA)
109106
107+
├── examples/ Blank templates for creating new artifacts
108+
│ ├── agent-template.json
109+
│ ├── project-template.json
110+
│ └── automation-template.json
111+
110112
├── docs/ Guides
111113
│ ├── GENESIS-101.md
112114
│ ├── AGENT-GUIDE.md
@@ -127,8 +129,8 @@ cortex/
127129

128130
Every JSON file is a standalone artifact. Swap any of them:
129131

130-
- **Replace an agent** — copy `agents/_template.json`, write your persona prompt, delete the old one
131-
- **Add a project** — copy `projects/_template.json`, structure your content, save
132+
- **Replace an agent** — copy `examples/agent-template.json` into `agents/`, write your persona prompt, delete the old one
133+
- **Add a project** — copy `examples/project-template.json` into `projects/`, structure your content, save
132134
- **Modify a flow** — edit trigger/action pairs in `automations/*.json`
133135
- **Redesign the app** — edit the FileSystemTree in `apps/cortex.json`
134136

docs/AGENT-GUIDE.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,4 +81,4 @@ Agents can be connected to projects as knowledge sources via the `variables` and
8181
- One agent, one job. Don't make a Swiss Army knife.
8282
- Test your prompt by reading it aloud. If it's vague when spoken, it's vague to the model.
8383
- Commands should cover the agent's 2-4 most common use cases.
84-
- Start with `agents/_template.json` and modify from there.
84+
- Start with `examples/agent-template.json` — copy it into `agents/` and modify from there.

docs/AUTOMATION-GUIDE.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,4 +69,4 @@ Actions can reference trigger data and previous action outputs using template sy
6969
- Start simple: one trigger, one action. Add complexity only when needed.
7070
- Use webhooks for integrations; use cron for recurring internal processes.
7171
- Template variables (`{{trigger.*}}`) make flows reusable.
72-
- Start with `automations/_template.json` and build from there.
72+
- Start with `examples/automation-template.json` — copy it into `automations/` and build from there.

docs/FORK-AND-CUSTOMIZE.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ Each file in `agents/` is a standalone agent definition. To modify one:
2424
4. Change `name`, `avatar`, and `introduction`
2525

2626
To add a new agent:
27-
1. Copy `agents/_template.json` to `agents/my-agent.json`
27+
1. Copy `examples/agent-template.json` to `agents/my-agent.json`
2828
2. Fill in all fields
2929
3. Run `npm run validate` to check
3030

@@ -41,7 +41,7 @@ Projects in `projects/` are structured knowledge. To modify:
4141
3. Keep the root structure intact — one top-level child with nested content
4242

4343
To add a new project:
44-
1. Copy `projects/_template.json`
44+
1. Copy `examples/project-template.json` into `projects/`
4545
2. Replace the title and content nodes
4646
3. Set a descriptive avatar emoji
4747

@@ -91,6 +91,6 @@ After importing, you can continue editing in Taskade's UI. When you want to expo
9191
## Tips
9292

9393
- Start by changing one thing, importing, and verifying it works
94-
- The `_template.json` files are ignored by the assembler (files starting with `_` are skipped)
94+
- Template files live in `examples/` — they are not scanned by the importer
9595
- Validation runs in CI on every push — broken JSON will be caught automatically
9696
- See [GENESIS-101.md](GENESIS-101.md) to understand how the four layers connect

docs/PROJECT-GUIDE.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,5 +57,5 @@ Each project is a node tree in Taskade's internal format (taskast):
5757

5858
- Keep project names descriptive — agents use them to decide relevance
5959
- Prefer many focused projects over one mega-document
60-
- Start with `projects/_template.json` and build from there
60+
- Start with `examples/project-template.json` — copy it into `projects/` and build from there
6161
- Use the avatar emoji to make projects visually scannable

scripts/assemble.mjs

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -26,12 +26,7 @@ function listJsonFiles(dirName) {
2626

2727
return fs
2828
.readdirSync(dirPath, { withFileTypes: true })
29-
.filter(
30-
(entry) =>
31-
entry.isFile() &&
32-
entry.name.endsWith(".json") &&
33-
!entry.name.startsWith("_"),
34-
)
29+
.filter((entry) => entry.isFile() && entry.name.endsWith(".json"))
3530
.map((entry) => path.join(dirPath, entry.name));
3631
}
3732

scripts/summary.mjs

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -13,12 +13,7 @@ function listJsonFiles(dirName) {
1313

1414
return fs
1515
.readdirSync(dirPath, { withFileTypes: true })
16-
.filter(
17-
(entry) =>
18-
entry.isFile() &&
19-
entry.name.endsWith(".json") &&
20-
!entry.name.startsWith("_"),
21-
)
16+
.filter((entry) => entry.isFile() && entry.name.endsWith(".json"))
2217
.map((entry) => entry.name)
2318
.sort();
2419
}

0 commit comments

Comments
 (0)