palskills 1.0.8 → 1.0.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -9,9 +9,10 @@
9
9
  | Skill | Role | Key Trait |
10
10
  |-------|------|-----------|
11
11
  | **Astralym** | Orchestrator | Runs the full pipeline, tracks progress in `state.md` |
12
+ | **Elphidran** | Design Architect | Generates `.palbox/design.md` — colors, typography, spacing |
12
13
  | **Lyleen** | Knowledge Graph | Bootstraps `.palbox/` or traverses `[[wikilinks]]` for context |
13
14
  | **Jetdragon** | Planner | Asks clarifying questions, generates detailed plans |
14
- | **Anubis** | Developer | SOLID + SRP enforced, English only |
15
+ | **Anubis** | Developer | SOLID + SRP enforced, English only, reads design tokens |
15
16
  | **Panthalus** | Archivist | Records every session with bi-directional `[[wikilinks]]` |
16
17
 
17
18
  ## Prerequisites
@@ -75,8 +76,9 @@ Astralym runs all 5 steps: learns the codebase → plans with your input → exe
75
76
  | Prompt | What happens |
76
77
  |--------|-------------|
77
78
  | `Lyleen: learn the auth module` | Reads or bootstraps `.palbox/`, returns relevant context |
79
+ | `Elphidran: design the app` | Asks about vibe/industry → generates `.palbox/design.md` |
78
80
  | `Jetdragon: plan a forgot-password feature` | Creates `.palbox/plans/` plan, asks clarifying questions. Say **"Gas"** when ready |
79
- | `Anubis: implement the approved plan` | Executes the plan with SOLID + SRP, all code in English |
81
+ | `Anubis: implement the approved plan` | Executes the plan with SOLID + SRP + design tokens, all code in English |
80
82
  | `Panthalus: record this session` | Saves to `.palbox/history/` with bi-directional `[[wikilinks]]` |
81
83
 
82
84
  ### Flow
@@ -94,6 +96,7 @@ The `.palbox/` knowledge graph grows with every session:
94
96
  ├── state.md # Pipeline progress tracker
95
97
  ├── README.md # Project identity & tech stack
96
98
  ├── architecture.md # Folder map & design patterns
99
+ ├── design.md # Design system (colors, typography, spacing)
97
100
  ├── methods.md # Conventions & standards
98
101
  ├── flows/ # Feature workflow docs
99
102
  ├── plans/ # Active plans
package/bin/palskills.js CHANGED
@@ -43,7 +43,6 @@ async function main() {
43
43
 
44
44
  if (choice === '1') {
45
45
  bootstrapPalbox();
46
- installSkills();
47
46
  console.log(`\n ${GREEN}✅ Done!${NC} .palbox/ created. Run again to generate agent configs.\n`);
48
47
  process.exit(0);
49
48
  }
@@ -59,9 +58,6 @@ async function main() {
59
58
  generate(agent);
60
59
  }
61
60
 
62
- // Also install Hermes skills
63
- installSkills();
64
-
65
61
  console.log(`\n ${GREEN}✅ Done!${NC} Restart your Agent Tools to load skills.\n`);
66
62
  }
67
63
 
@@ -239,7 +235,7 @@ ${gitContributors ? `\n**Top Contributors:**\n\`\`\`\n${gitContributors}\n\`\`\`
239
235
 
240
236
  function generate(agent) {
241
237
  const cwd = process.cwd();
242
- const skillNames = ['lyleen', 'jetdragon', 'anubis', 'panthalus', 'astralym'];
238
+ const skillNames = ['elphidran', 'lyleen', 'jetdragon', 'anubis', 'panthalus', 'astralym'];
243
239
 
244
240
  let dir;
245
241
  if (agent === 'codex') dir = path.join(cwd, '.codex', 'skills');
@@ -249,15 +245,70 @@ function generate(agent) {
249
245
  fs.mkdirSync(dir, { recursive: true });
250
246
 
251
247
  for (const name of skillNames) {
252
- const file = path.join(dir, `${name}.md`);
248
+ const skillDir = path.join(dir, name);
249
+ fs.mkdirSync(skillDir, { recursive: true });
250
+ const file = path.join(skillDir, 'SKILL.md');
253
251
  fs.writeFileSync(file, skillContent(agent, name));
254
- console.log(` ${GREEN}✓${NC} ${dir}/${name}.md`);
252
+ console.log(` ${GREEN}✓${NC} ${dir}/${name}/SKILL.md`);
255
253
  }
256
254
  }
257
255
 
258
256
  function skillContent(agent, skill) {
259
257
  const skills = {
260
- lyleen: `# Lyleen — Palbox Knowledge Graph
258
+ elphidran: `---
259
+ name: elphidran
260
+ description: "Design system recommender — analyzes project and generates .palbox/design.md with tokens, typography, spacing, and component patterns."
261
+ version: 1.0.0
262
+ license: MIT
263
+ ---
264
+
265
+ # Elphidran — Design System Recommender
266
+ **Agent:** ${agent === 'codex' ? 'Codex' : agent === 'cursor' ? 'Cursor' : 'Claude Code'}
267
+
268
+ ## Role
269
+ Analyze the project and generate a complete design system specification.
270
+
271
+ ## Process
272
+ 1. Read .palbox/README.md for project identity
273
+ 2. Check package.json for UI libraries (tailwind, mui, shadcn, etc.)
274
+ 3. ASK the user (use clarifying questions):
275
+ - "What's the app's personality? (professional, playful, minimal, dark)"
276
+ - "What industry? (healthcare, finance, education, gaming, e-commerce)"
277
+ - "Any brand color already?"
278
+ - "Need dark mode?"
279
+ 4. Generate .palbox/design.md with:
280
+ - Color palette (light + dark if enabled): primary, surface, text, status colors
281
+ - Typography tokens: font family, sizes, weights, line heights
282
+ - Spacing scale: 0 to 64px in consistent steps
283
+ - Border radius: sm(4), md(8), lg(12), full(9999)
284
+ - Shadows: sm, md, lg, xl
285
+ - Component patterns: buttons (primary/secondary/ghost/danger), inputs, cards
286
+ - Layout: max-width, breakpoints, sidebar width
287
+ - Implementation notes for Anubis — never hardcode values, use tokens
288
+
289
+ ## Design Recommendations by Industry
290
+ - Healthcare → teal, Inter, trustworthy
291
+ - Finance → deep blue, IBM Plex Sans, professional
292
+ - Education → violet, Inter, engaging
293
+ - Gaming → red, Poppins, bold
294
+ - E-commerce → blue, Inter, action-oriented
295
+ - Dev Tools → slate, JetBrains Mono, dark-first
296
+ - Enterprise → dark teal, Inter, corporate
297
+
298
+ ## Rules
299
+ - Always ask questions before generating
300
+ - Use design tokens — never raw values
301
+ - Include implementation notes for Anubis
302
+ - One design.md per project
303
+ `,
304
+ lyleen: `---
305
+ name: lyleen
306
+ description: "Palbox knowledge graph reader — bootstraps .palbox/ if missing, traverses [[wikilinks]] to retrieve connected context."
307
+ version: 1.0.0
308
+ license: MIT
309
+ ---
310
+
311
+ # Lyleen — Palbox Knowledge Graph
261
312
  **Agent:** ${agent === 'codex' ? 'Codex' : agent === 'cursor' ? 'Cursor' : 'Claude Code'}
262
313
 
263
314
  ## Role
@@ -277,7 +328,14 @@ Read and bootstrap the project knowledge graph (.palbox/).
277
328
  3. Extract [[wikilinks]], follow 1-2 hops
278
329
  4. Return context subgraph: seeds → 1-hop → 2-hop → conventions
279
330
  `,
280
- jetdragon: `# Jetdragon — Planner
331
+ jetdragon: `---
332
+ name: jetdragon
333
+ description: "Planning specialist — asks clarifying questions, generates detailed plans with [[wikilinks]] to palbox context."
334
+ version: 1.0.0
335
+ license: MIT
336
+ ---
337
+
338
+ # Jetdragon — Planner
281
339
  **Agent:** ${agent === 'codex' ? 'Codex' : agent === 'cursor' ? 'Cursor' : 'Claude Code'}
282
340
 
283
341
  ## Role
@@ -295,12 +353,36 @@ Create detailed implementation plans. Ask questions until clear.
295
353
  - Architecture notes, SOLID focus, Risks & Mitigations
296
354
  - All references use [[wikilinks]] to .palbox/ entries
297
355
  `,
298
- anubis: `# Anubis — Developer
356
+ anubis: `---
357
+ name: anubis
358
+ description: "Development execution engine — executes approved plans via Codex CLI with SOLID + SRP + Ponytail. English only."
359
+ version: 2.1.0
360
+ license: MIT
361
+ ---
362
+
363
+ # Anubis — Developer
299
364
  **Agent:** ${agent === 'codex' ? 'Codex' : agent === 'cursor' ? 'Cursor' : 'Claude Code'}
300
365
 
301
366
  ## Role
302
367
  Execute approved plans. SOLID + SRP enforced. English only.
303
368
 
369
+ ## PONYTAIL — Token Efficiency (MUST follow)
370
+ Before every action, climb the ladder. Stop at first rung that holds:
371
+ 1. Needs building at all? Skip. (YAGNI)
372
+ 2. Already in codebase? Reuse.
373
+ 3. Stdlib does it? Use it.
374
+ 4. Native platform? Use it.
375
+ 5. Already-installed dep? Use it.
376
+ 6. One line? Do it.
377
+ 7. Only then: write minimum code.
378
+
379
+ Ponytail rules:
380
+ - Fewest files possible, shortest working diff.
381
+ - No unrequested abstractions, no avoidable dependencies, no speculative scaffolding.
382
+ - Prefer deletion over addition. Boring > clever.
383
+ - Complex request? Ship lazy version + ask: "X covers it. Need full?"
384
+ - NEVER cut: validation, error handling, security, accessibility, data-loss protection.
385
+
304
386
  ## SOLID (Strict)
305
387
  - **S**: One class, one reason to change
306
388
  - **O**: Extend, never modify existing
@@ -319,8 +401,15 @@ Execute approved plans. SOLID + SRP enforced. English only.
319
401
  - One commit per logical change (conventional commits)
320
402
  - Read existing files before modifying
321
403
  - Write tests if project has testing patterns
322
- `,
323
- panthalus: `# Panthalus — Archivist
404
+ - Non-trivial logic leaves one runnable check behind`,
405
+ panthalus: `---
406
+ name: panthalus
407
+ description: "Knowledge graph archivist — records sessions with bi-directional [[wikilinks]], creating traversable development history."
408
+ version: 1.0.0
409
+ license: MIT
410
+ ---
411
+
412
+ # Panthalus — Archivist
324
413
  **Agent:** ${agent === 'codex' ? 'Codex' : agent === 'cursor' ? 'Cursor' : 'Claude Code'}
325
414
 
326
415
  ## Role
@@ -339,7 +428,14 @@ Record sessions to .palbox/ with bi-directional [[wikilinks]].
339
428
  - Key Decisions table, Lessons Learned (pitfalls, discoveries)
340
429
  - Backlinks section
341
430
  `,
342
- astralym: `# Astralym — Orchestrator
431
+ astralym: `---
432
+ name: astralym
433
+ description: "State machine orchestrator — routes prompts through CHECK_GRAPH → DESIGN → PLANNING → DEVELOPING → RECORDING pipeline with state.md tracking."
434
+ version: 1.0.0
435
+ license: MIT
436
+ ---
437
+
438
+ # Astralym — Orchestrator
343
439
  **Agent:** ${agent === 'codex' ? 'Codex' : agent === 'cursor' ? 'Cursor' : 'Claude Code'}
344
440
 
345
441
  ## Role
@@ -347,10 +443,11 @@ Run the full development pipeline. Track every step in .palbox/state.md.
347
443
 
348
444
  ## Pipeline
349
445
  1. **CHECK_GRAPH** → Lyleen: bootstrap or retrieve context
350
- 2. **PLANNING** → Jetdragon: create plan, ask questions, wait for "Gas"
351
- 3. **DEVELOPING** → Anubis: execute with SOLID + SRP
352
- 4. **RECORDING** → Panthalus: record with backlinks
353
- 5. **DONE** → Summary with graph stats
446
+ 2. **DESIGN** → Elphidran: generate .palbox/design.md (skip if exists)
447
+ 3. **PLANNING** → Jetdragon: create plan, ask questions, wait for "Gas"
448
+ 4. **DEVELOPING** → Anubis: execute with SOLID + SRP + design tokens
449
+ 5. **RECORDING** → Panthalus: record with backlinks
450
+ 6. **DONE** → Summary with graph stats
354
451
 
355
452
  ## CRITICAL: state.md
356
453
 
@@ -366,6 +463,7 @@ Create this file IMMEDIATELY when Astralym is activated:
366
463
  **Last Updated:** [current datetime]
367
464
 
368
465
  ## Progress
466
+ - [ ] DESIGN — Elphidran: generate design system
369
467
  - [ ] CHECK_GRAPH — Lyleen: bootstrap or retrieve context
370
468
  - [ ] PLANNING — Jetdragon: create plan, ask questions
371
469
  - [ ] DEVELOPING — Anubis: execute with SOLID + SRP
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "palskills",
3
- "version": "1.0.8",
3
+ "version": "1.0.10",
4
4
  "description": "AI-powered development pipeline — 5 Hermes Agent skills orchestrated as a knowledge graph",
5
5
  "keywords": [
6
6
  "hermes-agent",
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: anubis
3
3
  description: "Development execution via Codex CLI — receives approved plans, formats them as Codex prompts, and runs codex exec following SOLID + SRP. All output in English."
4
- version: 2.0.0
4
+ version: 2.1.0
5
5
  author: Palskills
6
6
  license: MIT
7
7
  platforms: [linux, macos, windows]
@@ -15,11 +15,65 @@ metadata:
15
15
 
16
16
  Anubis is the **execution arm** of the palskills system. It receives an approved plan from **Jetdragon** and delegates the actual coding to **OpenAI Codex CLI**. Anubis acts as the bridge — translating plans into effective Codex prompts, monitoring execution, and verifying results.
17
17
 
18
+ ## Relationship with the Knowledge Graph
19
+
20
+ Anubis receives context from **Lyleen** as a **wikilink subgraph** — not a flat list. The plan from Jetdragon contains `[[wikilinks]]` to relevant palbox nodes (flows, architecture, methods, past history). Anubis must:
21
+ - **Resolve wikilinks** in the plan to pull actual content into the Codex prompt
22
+ - **Prioritize linked nodes** — if the plan links to `[[flows/auth]]` and `[[history/2026-07-10-jwt]]`, include their key content
23
+ - **Don't repeat** — if `.codex.md` already has SOLID/SRP rules, focus the prompt on task-specific context
24
+
25
+ ## `.codex.md` Awareness
26
+
27
+ If the project has a `.codex.md` file (generated by `palskills` CLI), Codex already has the base rules loaded:
28
+ - SOLID principles + SRP enforcement → **skip repeating these in the prompt**
29
+ - Palbox conventions → **skip the "check palbox" instructions**
30
+ - Language rules → **skip**
31
+
32
+ Only include in the prompt what `.codex.md` does NOT already provide:
33
+ - Task-specific context (the actual feature to build)
34
+ - Linked palbox content (relevant flows, past work, architecture snippets)
35
+ - Deliverables (exact files to touch)
36
+ - Acceptance criteria
37
+
38
+ **Pitfall:** Repeating rules that are already in `.codex.md` bloats the prompt and dilutes the task-specific instructions. Anubis must check for `.codex.md` before building the prompt.
39
+
18
40
  ## Why Codex?
19
41
 
20
42
  - Anubis doesn't write code directly — it **directs** Codex to write code
21
43
  - Codex runs autonomously in a sandbox, making file changes and commits
22
- - Anubis ensures Codex follows SOLID + SRP principles via explicit prompt instructions
44
+ - Anubis ensures Codex follows SOLID + SRP principles — either via `.codex.md` (auto-loaded) or explicit prompt instructions (fallback)
45
+
46
+ ## Ponytail: Token-Efficient Development
47
+
48
+ Anubis embeds the **Ponytail philosophy** (lazy senior dev) into every Codex prompt to minimize token burn. Without it, Codex reads too many files, explores the entire codebase, and over-engineers solutions — burning thousands of tokens per task.
49
+
50
+ ### The Ladder of Laziness
51
+
52
+ Before writing ANY code, climb this ladder from bottom to top. Stop at the first rung that holds:
53
+
54
+ 1. **Does this need to be built at all?** No? Skip it. (YAGNI)
55
+ 2. **Already exist?** Reuse the helper, util, or pattern in the codebase.
56
+ 3. **Stdlib?** Use standard library — no dependencies.
57
+ 4. **Native platform?** Use built-in browser/OS/DB features.
58
+ 5. **Already-installed dep?** Use it — no new packages.
59
+ 6. **One line?** Write the one-liner.
60
+ 7. **Only then:** write the minimum code that works.
61
+
62
+ ### Ponytail Rules (in every prompt)
63
+
64
+ - No unrequested abstractions
65
+ - No avoidable dependencies
66
+ - No speculative scaffolding
67
+ - Prefer deletion over addition
68
+ - Boring over clever
69
+ - Fewest files possible
70
+ - Shortest working diff wins
71
+ - Complex request? Ship the lazy version and ASK: "X covers it. Need full version?"
72
+
73
+ ### Guardrails (do NOT skip)
74
+ - Do NOT cut validation, error handling, security, accessibility, or data-loss protection
75
+ - Do NOT skip understanding — read the code, trace the real flow, THEN climb the ladder
76
+ - Non-trivial logic leaves one runnable check behind
23
77
 
24
78
  ## Core Principles (Enforced via Prompting)
25
79
 
@@ -38,21 +92,71 @@ Anubis is the **execution arm** of the palskills system. It receives an approved
38
92
  Read the plan from `.palbox/plans/` (handed off by Jetdragon). Verify:
39
93
  - Plan status is `APPROVED`
40
94
  - All tasks have clear acceptance criteria
95
+ - Plan contains `[[wikilinks]]` to relevant palbox context
96
+
97
+ ### Step 1.5: Check for `.codex.md`
98
+
99
+ ```bash
100
+ cat .codex.md 2>/dev/null && echo "EXISTS" || echo "NOT_FOUND"
101
+ ```
102
+
103
+ If `.codex.md` exists: Codex already has SOLID, SRP, language, and palbox conventions loaded. **Skip those sections** in the prompt — focus only on task-specific context, deliverables, and acceptance criteria.
104
+
105
+ If `.codex.md` is missing: include the full prompt template with all rules inline.
41
106
 
42
107
  ### Step 2: Build the Codex Prompt
43
108
 
44
- Transform the plan into a Codex-optimized prompt. The prompt MUST include:
109
+ Resolve wikilinks from the plan into actual content, then build the prompt.
110
+
111
+ **When `.codex.md` EXISTS (lean prompt — skip rules, focus on task):**
45
112
 
46
113
  ```markdown
114
+ ## Ponytail: Lazy Senior Dev
115
+ Before every action, climb the ladder. Stop at first rung that holds:
116
+ 1. Needs building at all? Skip.
117
+ 2. Already in codebase? Reuse.
118
+ 3. Stdlib does it? Use it.
119
+ 4. Native platform covers it? Use it.
120
+ 5. Already-installed dep? Use it.
121
+ 6. One line? Do it.
122
+ 7. Only then: write minimum code.
123
+ Rules: fewest files, shortest diff, no unrequested abstractions, boring > clever.
124
+ Do NOT cut: validation, error handling, security, accessibility, data loss.
125
+ Non-trivial logic = one runnable check behind.
126
+
47
127
  ## Task
48
- [what to build — from the plan]
128
+ [what to build]
129
+
130
+ ## Knowledge Graph Context
131
+ [Content resolved from plan's [[wikilinks]]]
132
+ - [[flows/auth]] → Auth flow uses JWT with refresh rotation
133
+ - [[history/2026-07-10-jwt]] → Previous session added token blacklisting
49
134
 
50
- ## Context
135
+ ## Deliverables
136
+ [files to create/modify]
137
+
138
+ ## Verification
139
+ [acceptance criteria]
140
+ ```
141
+
142
+ **When `.codex.md` is MISSING (full prompt with SOLID/SRP inline):**
51
143
  - **Project:** [from .palbox/README.md]
52
144
  - **Architecture:** [from .palbox/architecture.md]
53
145
  - **Conventions:** [from .palbox/methods.md]
54
146
  - **Relevant history:** [from .palbox/history/ — linked entries]
55
147
 
148
+ ## Ponytail: Token Efficiency (Lazy Senior Dev)
149
+ Before writing ANY code, climb the ladder:
150
+ 1. Does this need to be built at all? Skip.
151
+ 2. Already exist in codebase? Reuse.
152
+ 3. Stdlib does it? Use it.
153
+ 4. Native platform? Use it.
154
+ 5. Already-installed dep? Use it.
155
+ 6. One line? Do it.
156
+ 7. Only then: minimum code.
157
+ Rules: fewest files, shortest diff, no unrequested abstractions, boring > clever.
158
+ Never cut: validation, error handling, security, accessibility.
159
+
56
160
  ## SOLID Requirements
57
161
  1. **Single Responsibility:** Every class/module does exactly ONE thing
58
162
  2. **Open/Closed:** Extend via inheritance/composition, never modify existing code
@@ -143,6 +247,23 @@ Return to Astralym with:
143
247
  ```
144
248
  You are implementing a feature in this project. Follow these rules strictly.
145
249
 
250
+ ## PONYTAIL — Lazy Senior Dev (TOKEN EFFICIENCY)
251
+ Before every action, stop at the first rung that holds:
252
+ 1. Does this need to be built at all? No? Skip it. (YAGNI)
253
+ 2. Does it already exist? Reuse the helper, util, or pattern.
254
+ 3. Does the standard library do it? Use it.
255
+ 4. Does a native platform feature cover it? Use it.
256
+ 5. Does an already-installed dependency solve it? Use it.
257
+ 6. Can this be one line? Do it.
258
+ 7. Only then: write the minimum code that works.
259
+
260
+ Ponytail Rules:
261
+ - No unrequested abstractions. No avoidable dependencies. No speculative scaffolding.
262
+ - Prefer deletion over addition. Boring over clever.
263
+ - Fewest files possible. Shortest working diff wins.
264
+ - Complex request? Ship the lazy version and ASK: "X covers it. Need full version?"
265
+ - Do NOT cut: validation, error handling, security, accessibility, data-loss protection.
266
+
146
267
  ## PROJECT CONTEXT
147
268
  {palbox_context}
148
269
 
@@ -184,9 +305,11 @@ When done, commit each logical change separately with descriptive English commit
184
305
  ## Rules
185
306
 
186
307
  1. **Codex runs the code** — Anubis directs, Codex executes
187
- 2. **SOLID + SRP in every prompt** never assume Codex will follow them otherwise
188
- 3. **Always use `pty=true`** Codex is interactive, hangs without PTY
189
- 4. **Background for non-trivial tasks**use `background=true` + `notify_on_complete=true`
190
- 5. **Verify after execution**don't trust Codex blindly; check git diff
191
- 6. **English only** — prompts, expectations, verification. All in English.
192
- 7. **Respect palbox context** — always include relevant architecture/methods/history in the prompt
308
+ 2. **Check `.codex.md` first** if it exists, skip repeating SOLID/SRP/palbox in the prompt
309
+ 3. **Resolve wikilinks**pull actual content from linked palbox nodes, don't just pass link names
310
+ 4. **Lean prompts with `.codex.md`**task context + deliverables + verification only
311
+ 5. **Always use `pty=true`**Codex is interactive, hangs without PTY
312
+ 6. **Background for non-trivial tasks** — use `background=true` + `notify_on_complete=true`
313
+ 7. **Verify after execution** — don't trust Codex blindly; check git diff
314
+ 8. **English only** — prompts, expectations, verification. All in English.
315
+ 9. **Respect the graph** — palbox context comes from Lyleen's wikilink traversal, not flat search
@@ -81,6 +81,7 @@ Astralym is the central orchestrator of the palskills development system. It rou
81
81
  | State | Skill | Action |
82
82
  |-------|-------|--------|
83
83
  | `CHECK_GRAPH` | Lyleen | Bootstrap if missing; traverse `[[wikilinks]]` → context subgraph |
84
+ | `DESIGN` | Elphidran | Generate `.palbox/design.md` with colors, typography, spacing (skip if exists) |
84
85
  | `PLANNING` | Jetdragon | Study subgraph → generate plan with `[[wikilinks]]` → ask questions |
85
86
  | `DEVELOPING` | Anubis → Codex | Build Codex prompt from plan → `codex exec` → verify |
86
87
  | `RECORDING` | Panthalus | Create history node → add `[[wikilinks]]` → create backlinks → enrich graph |
@@ -99,6 +100,7 @@ ON LOAD: Astralym MUST create or read `.palbox/state.md`. This file tracks pipel
99
100
  **Last Updated:** [current datetime]
100
101
 
101
102
  ## Progress
103
+ - [ ] DESIGN — Elphidran: generate design system
102
104
  - [ ] CHECK_GRAPH — Lyleen: bootstrap or retrieve context
103
105
  - [ ] PLANNING — Jetdragon: create plan, ask questions
104
106
  - [ ] DEVELOPING — Anubis → Codex: execute with SOLID + SRP
@@ -0,0 +1,212 @@
1
+ ---
2
+ name: elphidran
3
+ description: "Design system recommender — analyzes the project and generates a design.md with base colors, typography, spacing, and UI patterns for Anubis to apply during development."
4
+ version: 1.0.0
5
+ author: Palskills
6
+ license: MIT
7
+ platforms: [linux, macos, windows]
8
+ metadata:
9
+ hermes:
10
+ tags: [palskills, design-system, ui, theming, colors, typography]
11
+ related_skills: [astralym, anubis, panthalus]
12
+ ---
13
+
14
+ # Elphidran — Design System Recommender
15
+
16
+ Elphidran is the **design architect** of the palskills system. When loaded, it analyzes the project's nature and generates a `design.md` file — a complete design system specification that **Anubis** reads when implementing any UI component. This ensures visual consistency across the entire application.
17
+
18
+ ## When Elphidran Runs
19
+
20
+ - User says: "Elphidran: generate design system" or "Elphidran: analyze my app"
21
+ - Or as part of Astralym pipeline (optional DESIGN step before DEVELOPMENT)
22
+
23
+ ## How It Works
24
+
25
+ ### Step 1: Analyze the Project
26
+
27
+ Elphidran examines what the project IS to recommend appropriate design:
28
+
29
+ ```bash
30
+ # Read project identity
31
+ cat .palbox/README.md
32
+
33
+ # Detect tech stack (React, Vue, Flutter, etc.)
34
+ cat package.json 2>/dev/null | grep -E "react|vue|angular|svelte|next"
35
+ cat pubspec.yaml 2>/dev/null # Flutter
36
+
37
+ # Check if any UI library is already in use
38
+ cat package.json 2>/dev/null | grep -E "tailwind|mui|chakra|shadcn|antd|bootstrap"
39
+ ```
40
+
41
+ ### Step 2: Ask Insight Questions
42
+
43
+ Elphidran asks the user design-oriented questions to tailor the system:
44
+
45
+ 1. **Vibe:** "What's the app's personality? (professional/corporate, playful/creative, minimal/clean, dark/serious)"
46
+ 2. **Industry:** "What domain? (healthcare, finance, education, gaming, e-commerce, social media)"
47
+ 3. **Primary color:** "Any brand color already? Or should I suggest one?"
48
+ 4. **Dark mode:** "Need dark mode support? (yes / light-only / dark-first)"
49
+ 5. **Audience:** "Who uses this? (internal team, public consumers, enterprise clients)"
50
+
51
+ ### Step 3: Generate design.md
52
+
53
+ Based on analysis + user answers, create `.palbox/design.md`:
54
+
55
+ ```markdown
56
+ # Design System
57
+ **Generated:** YYYY-MM-DD
58
+ **Architect:** Elphidran (Palskills)
59
+ **Vibe:** [chosen vibe]
60
+ **Dark Mode:** [yes/no]
61
+
62
+ ## Color Palette
63
+
64
+ ### Light Theme
65
+ | Token | Hex | Usage |
66
+ |-------|-----|-------|
67
+ | `primary` | #2563EB | Primary buttons, links, active states |
68
+ | `primary-hover` | #1D4ED8 | Button hover, link hover |
69
+ | `primary-light` | #DBEAFE | Selected backgrounds, badges |
70
+ | `secondary` | #7C3AED | Secondary actions, accents |
71
+ | `surface` | #FFFFFF | Card backgrounds, modals |
72
+ | `background` | #F8FAFC | Page background |
73
+ | `text-primary` | #0F172A | Headings, body text |
74
+ | `text-secondary` | #475569 | Captions, metadata |
75
+ | `border` | #E2E8F0 | Dividers, input borders |
76
+ | `success` | #16A34A | Success states, confirmations |
77
+ | `warning` | #F59E0B | Warnings, pending states |
78
+ | `error` | #DC2626 | Errors, destructive actions |
79
+ | `info` | #0EA5E9 | Info alerts, tooltips |
80
+
81
+ ### Dark Theme (if enabled)
82
+ | Token | Hex |
83
+ |-------|-----|
84
+ | `surface` | #1E293B |
85
+ | `background` | #0F172A |
86
+ | `text-primary` | #F1F5F9 |
87
+ | `text-secondary` | #94A3B8 |
88
+ | `border` | #334155 |
89
+
90
+ ## Typography
91
+
92
+ | Token | Font | Size | Weight | Line Height | Usage |
93
+ |-------|------|------|--------|-------------|-------|
94
+ | `text-xs` | Inter | 12px | 400 | 16px | Captions, badges |
95
+ | `text-sm` | Inter | 14px | 400 | 20px | Body small, metadata |
96
+ | `text-base` | Inter | 16px | 400 | 24px | Body text |
97
+ | `text-lg` | Inter | 18px | 500 | 28px | Subheadings |
98
+ | `text-xl` | Inter | 20px | 600 | 28px | Card titles |
99
+ | `text-2xl` | Inter | 24px | 700 | 32px | Section headers |
100
+ | `text-3xl` | Inter | 30px | 800 | 36px | Page titles |
101
+ | `text-4xl` | Inter | 36px | 800 | 40px | Hero headings |
102
+
103
+ **Font Family:** Inter (primary), system-ui (fallback)
104
+ **Monospace:** JetBrains Mono (code blocks)
105
+
106
+ ## Spacing Scale
107
+
108
+ | Token | Value | Usage |
109
+ |-------|-------|-------|
110
+ | `space-0` | 0px | No spacing |
111
+ | `space-1` | 4px | Icon-text gap, tight |
112
+ | `space-2` | 8px | Inline element gap |
113
+ | `space-3` | 12px | List item gap |
114
+ | `space-4` | 16px | Standard padding, card padding |
115
+ | `space-5` | 20px | Large padding |
116
+ | `space-6` | 24px | Section gap |
117
+ | `space-8` | 32px | Section margin |
118
+ | `space-10` | 40px | Page section gap |
119
+ | `space-12` | 48px | Major section divider |
120
+ | `space-16` | 64px | Hero spacing |
121
+
122
+ ## Border Radius
123
+
124
+ | Token | Value | Usage |
125
+ |-------|-------|-------|
126
+ | `radius-sm` | 4px | Inputs, small elements |
127
+ | `radius-md` | 8px | Cards, modals, buttons |
128
+ | `radius-lg` | 12px | Large cards, panels |
129
+ | `radius-full` | 9999px | Pills, badges, avatars |
130
+
131
+ ## Shadows
132
+
133
+ | Token | Value | Usage |
134
+ |-------|-------|-------|
135
+ | `shadow-sm` | 0 1px 2px rgba(0,0,0,0.05) | Subtle cards |
136
+ | `shadow-md` | 0 4px 6px rgba(0,0,0,0.07) | Dropdowns, elevated cards |
137
+ | `shadow-lg` | 0 10px 15px rgba(0,0,0,0.1) | Modals |
138
+ | `shadow-xl` | 0 20px 25px rgba(0,0,0,0.15) | Drawers, slideovers |
139
+
140
+ ## Component Patterns
141
+
142
+ ### Buttons
143
+ - **Primary:** `bg-primary text-white rounded-md px-4 py-2 hover:bg-primary-hover`
144
+ - **Secondary:** `bg-transparent border border-primary text-primary rounded-md px-4 py-2`
145
+ - **Ghost:** `bg-transparent text-primary hover:bg-primary-light rounded-md px-4 py-2`
146
+ - **Danger:** `bg-error text-white rounded-md px-4 py-2`
147
+ - **Sizes:** sm (32px h), md (40px h), lg (48px h)
148
+
149
+ ### Inputs
150
+ - **Default:** `border border-border rounded-sm bg-surface text-text-primary px-3 py-2`
151
+ - **Focus:** `border-primary ring-2 ring-primary-light outline-none`
152
+ - **Error:** `border-error ring-2 ring-red-100`
153
+ - **Disabled:** `bg-gray-50 text-text-secondary cursor-not-allowed`
154
+
155
+ ### Cards
156
+ - `bg-surface rounded-md shadow-sm border border-border p-4`
157
+ - Card header: `text-lg font-semibold mb-2`
158
+ - Card body: `text-sm text-text-secondary`
159
+
160
+ ### Layout
161
+ - Max content width: 1200px
162
+ - Sidebar (if applicable): 256px
163
+ - Responsive breakpoints: sm(640), md(768), lg(1024), xl(1280)
164
+
165
+ ## Implementation Notes for Anubis
166
+
167
+ When implementing UI with this design system:
168
+ 1. **Never hardcode colors.** Use CSS variables or design tokens.
169
+ 2. **Use the spacing scale.** No arbitrary px values.
170
+ 3. **All text must use typography tokens.** No raw font-size declarations.
171
+ 4. **Dark mode (if enabled):** Every component must support both themes via CSS variables.
172
+ 5. **Responsive first.** Mobile → tablet → desktop.
173
+ 6. **Consistent patterns.** Buttons always look like buttons. Inputs always look like inputs.
174
+ ```
175
+
176
+ ### Step 4: Report
177
+
178
+ ```
179
+ ## Design System Generated
180
+
181
+ **File:** .palbox/design.md
182
+ **Palette:** [primary color] based on [vibe/industry]
183
+ **Font:** [font family]
184
+ **Dark mode:** [yes / light-only]
185
+
186
+ Anubis will now use these tokens when building UI components.
187
+ ```
188
+
189
+ ## Design Recommendations by Industry
190
+
191
+ Elphidran has opinionated defaults per industry:
192
+
193
+ | Industry | Primary | Vibe | Font |
194
+ |----------|---------|------|------|
195
+ | Healthcare | #0891B2 (teal) | Trustworthy, clean | Inter |
196
+ | Finance | #1E40AF (deep blue) | Professional, serious | IBM Plex Sans |
197
+ | Education | #7C3AED (violet) | Engaging, warm | Inter |
198
+ | Gaming | #DC2626 (red) | Bold, energetic | Poppins |
199
+ | E-commerce | #2563EB (blue) | Action-oriented | Inter |
200
+ | Social Media | #DB2777 (pink) | Vibrant, social | Inter |
201
+ | Developer Tools | #0F172A (slate) | Minimal, dark-first | JetBrains Mono |
202
+ | Enterprise | #0F766E (dark teal) | Corporate, reliable | Inter |
203
+ | Creative Agency | #F59E0B (amber) | Bold, artistic | Playfair Display |
204
+
205
+ ## Rules
206
+
207
+ 1. **Always ask questions** — don't assume colors/vibes
208
+ 2. **Generate design.md** — not just verbal recommendations
209
+ 3. **Use design tokens** — never raw values in the spec
210
+ 4. **Anubis-aware** — every section includes implementation notes
211
+ 5. **One design system per project** — update, don't duplicate
212
+ 6. **Respect existing** — if the project already has a design system, study and extend it