Agent skill
ai-spark-coder
Process IdeaMachina sparks (kipinä) marked for implementation: either ai_creatable=true OR usage_state='implementing' from ai_prompt.pm_sparks, OR feature suggestions with status='in_progress' from public.feature_suggestions. For parent sparks in SOIHTU, also fetches child sparks (ala-kipinät) that are marked usage_state='implementing' — only those children are included in the implementation scope. Always presents a combined plan (parent + selected children) for user approval before coding. Routes to the right implementation skill (frontend-design, supabase-migration-writer, edge-function-generator, etc.). Use when asked to "process sparks", "code kipinä", "toteuta kipinä", "ai-koodaa kipinä", "implement feature suggestion", or any variation of implementing planned feature suggestions.
Install this agent skill to your Project
npx add-skill https://github.com/Spectaculous-Code/raamattu-nyt/tree/main/.claude/skills/ai-spark-coder
SKILL.md
AI Spark Coder
Automates implementation of kipinä (sparks) from two sources:
- Primary:
ai_prompt.pm_sparkswhereai_creatable = trueORusage_state = 'implementing' - Secondary:
public.feature_suggestionswherestatus = 'in_progress' AND ai_implementation_plan IS NOT NULL
Workflow
1. Query ready-to-code sparks
Use mcp__plugin_supabase_supabase__execute_sql with project ID iryqgmjauybluwnqhxbg.
Primary source (pm_sparks) — parent sparks:
SELECT s.*, c.name AS core_name, c.name_fi AS core_name_fi
FROM ai_prompt.pm_sparks s
LEFT JOIN ai_prompt.pm_cores c ON s.core_id = c.id
WHERE (s.ai_creatable = true OR s.usage_state = 'implementing')
AND s.parent_spark_id IS NULL
ORDER BY s.updated_at DESC
LIMIT 1;
1b. Fetch selected child sparks (ala-kipinät)
If a parent spark is found, fetch its children that are also marked implementing:
SELECT * FROM ai_prompt.pm_sparks
WHERE parent_spark_id = '<parent_id>'
AND usage_state = 'implementing'
ORDER BY priority DESC NULLS LAST, created_at ASC;
Only these children are in scope. Children not marked implementing are excluded — the user selects them via the SoihtuChildPicker UI.
If none found in primary, try secondary source (feature_suggestions):
SELECT * FROM public.feature_suggestions
WHERE status = 'in_progress' AND ai_implementation_plan IS NOT NULL
ORDER BY priority ASC NULLS LAST, created_at ASC
LIMIT 1;
2. If none found in either source
Report "Ei toteutettavia kipinöitä. Merkitse kipinä toteutettavaksi SOIHTU-näkymässä tai 'AI voi koodata' -lipulla." and stop.
3. Count remaining
SELECT
(SELECT count(*) FROM ai_prompt.pm_sparks
WHERE (ai_creatable = true OR usage_state = 'implementing')
AND parent_spark_id IS NULL) AS sparks,
(SELECT count(*) FROM public.feature_suggestions
WHERE status = 'in_progress' AND ai_implementation_plan IS NOT NULL) AS suggestions;
4. Build context block
For pm_sparks source:
Load from the parent spark:
- id, title (or title_fi), content (or content_fi)
- problem (or problem_fi), benefit_fi
- type, status, maturity_status, usage_state
- ai_prompt (AI instructions if set)
- ai_complexity (estimated complexity)
- clarification_notes (jsonb array of {question, answer} pairs — key context)
- core_id, core_name (linked YDIN)
- angle, priority, rating
- created_at, updated_at
For each selected child spark, also load: id, title/title_fi, content/content_fi, ai_prompt, clarification_notes, rating.
The linked core tells which product/app the spark concerns. Look up app_systems.meta.linked_core_id to find the system_id.
For feature_suggestions source:
- id, system_id, title_fi (or title), description_fi (or description)
- category, priority, benefit_fi (or benefit)
- suggestion (original user text), source
- admin_notes, ai_implementation_plan, ai_plan_generated_at
- ai_context (jsonb — may contain feedback source info)
- created_at
5. Announce and present plan
Tell the user:
Kipinä: [title_fi or title, truncated to ~80 chars] Ydin: [core_name or "–"] | Prioriteetti: [priority] | Jäljellä: N kpl
Ala-kipinät toteutukseen (X kpl):
- [child title 1]
- [child title 2]
- ... (If no children selected, omit this section)
Tarkennukset: [List each clarification_notes Q&A pair from parent + children]
AI-ohje: [ai_prompt if set, or "–"]
Suunnitelma (tutkimuksen perusteella):
- [Konkreettinen askel 1]
- [Konkreettinen askel 2]
- ...
Tiedostot joihin koskee: file1.tsx, file2.ts
Jatketaanko toteutukseen? (Voit muuttaa suunnitelmaa ennen toteutusta.)
MANDATORY — always present this plan and wait for user confirmation before proceeding. The user may:
- Approve as-is → proceed to step 6
- Modify the plan → adjust and re-present
- Skip this spark → leave as-is and stop
To build a good plan, use the Explore agent or Grep/Glob to find relevant files. Pay attention to clarification_notes — they contain user's answers to clarifying questions. The plan must cover the parent spark AND all selected children as a coherent whole.
6. Route to the right implementation skill
After user approves the plan, invoke the appropriate skill(s) directly based on what the spark requires. Do NOT delegate to using-superpowers — route directly.
Routing table
| Spark concerns | Invoke skill | Context to pass |
|---|---|---|
| New UI component / page | frontend-design |
Component spec, design requirements |
| Admin panel feature | admin-panel-builder |
Page, section, functionality |
| Database table / RPC / migration | supabase-migration-writer |
Schema, table design, RLS |
| Edge Function | edge-function-generator |
Function spec, auth, endpoints |
| AI feature / prompt | ai-prompt-manager |
Feature registration, prompt template |
| Idea Machina internal | idea-machina |
Evolution stage, component, data flow |
| Practice / gamification | practice-gamification |
Practice type, scheduling, rewards |
| Bible feature | bible-lookup-helper or cinema-voice-architect |
Feature type |
| i18n / translation | language-specialist |
Keys, languages |
| Refactoring | code-refactoring |
Files, what to restructure |
| Subscription / quota | subscription-system |
Plan, limits, feature gating |
Multiple skills may apply. For a feature that needs DB + UI + Edge Function, run: supabase-migration-writer → edge-function-generator → frontend-design in sequence.
If the spark doesn't clearly match any skill, use code-guru for general implementation guidance.
7. Update spark status
MANDATORY — always run after implementation:
For pm_sparks source — mark completed children first, then check parent:
Step A: Mark each implemented child spark as implemented:
UPDATE ai_prompt.pm_sparks
SET usage_state = 'implemented', updated_at = NOW()
WHERE parent_spark_id = '<parent_id>'
AND id IN ('<child_id_1>', '<child_id_2>', ...)
AND usage_state = 'implementing';
Step B: Check if ALL children of the parent are now implemented:
SELECT count(*) AS remaining
FROM ai_prompt.pm_sparks
WHERE parent_spark_id = '<parent_id>'
AND usage_state != 'implemented';
Step C: Only if remaining = 0 (all children done), mark the parent:
UPDATE ai_prompt.pm_sparks
SET ai_creatable = false, usage_state = 'implemented', updated_at = NOW()
WHERE id = '<parent_id>';
If remaining > 0, report: "Pääkipinä jää avoimeksi — N ala-kipinää vielä toteuttamatta."
7b. Write implementation comment (pm_sparks only)
Write a comment on the parent spark summarizing what was done. If only some children were implemented, mention which ones and note that the parent remains open:
INSERT INTO ai_prompt.pm_spark_comments (spark_id, user_id, content)
VALUES (
'<parent_id>',
(SELECT id FROM auth.users ORDER BY created_at ASC LIMIT 1),
'AI-toteutettu: <1-3 lauseen yhteenveto, mainitse toteutetut ala-kipinät nimeltä>. <Jos pääkipinä jää avoimeksi: "Pääkipinä auki — N ala-kipinää jäljellä.">'
);
For feature_suggestions source:
UPDATE public.feature_suggestions
SET status = 'implemented', updated_at = NOW()
WHERE id = '<id>';
8. Report
Report the final count of remaining implementable sparks and in_progress suggestions.
Data Models
pm_sparks (ai_prompt schema) — PRIMARY
| Field | Type | Notes |
|---|---|---|
| id | uuid | PK |
| evolution_id | uuid | FK to pm_evolutions |
| user_id | uuid | FK to auth.users |
| title | text | Spark title |
| title_fi | text | Finnish title |
| content | text | Main description |
| content_fi | text | Finnish content |
| problem | text | Problem statement |
| problem_fi | text | Finnish problem |
| type | text | idea, question, insight, etc. |
| status | text | raw, analyzed, promoted, etc. |
| maturity_status | text | raw, refined, etc. |
| usage_state | text | inbox, linked_to_core, etc. |
| priority | int | 0-based |
| core_id | uuid | FK to pm_cores (linked YDIN) |
| ai_creatable | boolean | TRUE = ready for AI coding |
| ai_complexity | text | Estimated complexity |
| ai_prompt | text | AI instructions |
| clarification_notes | jsonb | Array of {question, answer} |
| benefit_fi | text | Finnish benefit |
| angle | text | Approach angle |
| created_at | timestamptz | |
| updated_at | timestamptz |
feature_suggestions (public schema) — SECONDARY
| Field | Type | Notes |
|---|---|---|
| id | uuid | PK |
| system_id | text | 'raamattu-nyt' or 'idea-machina' |
| title_fi | text | Finnish title |
| description_fi | text | Finnish description |
| category | text | ai, search, audio, etc. |
| priority | int | Lower = higher |
| status | text | pending, in_progress, implemented, rejected |
| ai_implementation_plan | text | Generated plan (markdown) |
| ai_context | jsonb | Extra context |
| created_at | timestamptz |
Configuration
- Supabase project ID:
iryqgmjauybluwnqhxbg - Tool:
mcp__plugin_supabase_supabase__execute_sql
Recommended Agent Skills
Expand your agent's capabilities with these related and highly-rated skills.
docs-updater
Expert assistant for keeping documentation synchronized with code changes in the KR92 Bible Voice project. Use when updating API docs, maintaining architecture diagrams, syncing README, updating CLAUDE.MD, or generating documentation from code.
ai-prompt-manager
Expert assistant for managing AI prompts, features, and configuration in the KR92 Bible Voice AI system. Use when creating AI prompts, configuring AI features, managing prompt versions, setting up AI bindings, or working with AI pricing and models.
performance-auditor
Expert assistant for monitoring and optimizing performance in the KR92 Bible Voice project. Use when analyzing query performance, optimizing database indexes, reviewing React Query caching, monitoring AI call costs, or identifying N+1 queries.
edge-function-generator
Expert assistant for creating and maintaining Supabase Edge Functions for the KR92 Bible Voice project. Use when creating Edge Functions, setting up CORS, integrating shared modules, adding JWT validation, or configuring environment variables.
admin-panel-builder
Expert assistant for creating and maintaining admin panel pages in the KR92 Bible Voice project. Use when creating admin pages, building admin components, integrating with admin navigation, or adding admin features.
lint-fixer
Expert assistant for analyzing and fixing linting and formatting issues in the KR92 Bible Voice project using Biome and TypeScript. Use when fixing lint errors, resolving TypeScript issues, applying code formatting, or reviewing code quality.
Didn't find tool you were looking for?