Srib identify
Skill sayonsom/srib-godot-skills-demo/.claude/skills/srib-identify
Intake skill for the SRIB Godot 4.6 Android project. Reads an Excel (.xlsx) or CSV file containing feature requests (columns: Feature Name, Desired Outcome, Acceptance Criteria), generates fully-scoped specification tickets as markdown files in the project's issues/ folder, classifies each feature into the right skill concern (srib-view, srib-model, srib-integration, or a mixed combination), and outputs the exact skill execution sequence to implement everything. Use whenever the user says "srib-identify", uploads a backlog spreadsheet, says "create issues from this file", "plan these features for SRIB", or "process this Excel for Godot". This is the front door for all new SRIB feature work — always trigger this skill before any implementation skill.From its SKILL.md
npx -y skills add sayonsom/srib-godot-skills-demo --skill srib-identifyAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 0 stars0 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
SKILL.md
7.7 KB, ~1.7k tokens by cl100k_base, as published. Nobody here has run it
srib-identify
Role: Planning + intake. Reads a feature backlog, writes self-contained ticket files, routes each to the right SRIB skill.
This skill does NOT implement features. It produces the plan that srib-view, srib-model, and srib-integration execute.
Invocation
srib-identify <path-to-excel-or-csv>
Or: user uploads an Excel file and says "srib-identify" — find the most recently mentioned or uploaded file path.
If no file is provided, ask: "Please share the Excel or CSV file path. It should have columns: Feature Name, Desired Outcome, Acceptance Criteria."
Phase 1 — Parse the input file
Run the bundled parser to turn the spreadsheet into a Python list of feature dicts.
The parser lives in this skill's own scripts/ folder — its absolute path is shown
as "Base directory for this skill" when the skill launches. Use that base dir:
python "<skill-base-dir>/scripts/parse_excel.py" "<file-path>"
(When this skill is bundled inside a project, that resolves to
.claude/skills/srib-identify/scripts/parse_excel.py; when installed personally, to
~/.claude/skills/srib-identify/scripts/parse_excel.py.)
The script prints JSON to stdout. Each entry has:
feature_name— the feature titledesired_outcome— what success looks like for the useracceptance_criteria— list of checkable conditions
If the script fails (missing dependency, wrong column names), read the file yourself and extract these three fields. Common column name variants:
- "Feature Name" / "Feature" / "Title" / "Name"
- "Desired Outcome" / "Outcome" / "Goal" / "Expected Result"
- "Acceptance Criteria" / "AC" / "Criteria" / "Done When"
Phase 2 — Classify each feature
For each feature, decide its concern based on the table below. A feature can be multi-concern — note all that apply.
| Concern | Skill | What belongs here |
|---|---|---|
| view | srib-view | Shaders, materials, lighting, visual effects, 3D scene rendering, post-FX, the 3-tier shader system, particle effects, visual feedback |
| model | srib-model | Math, animation curves, tweens, easing, physics simulation, state machines, interpolation, GDScript computation logic, data processing |
| integration | srib-integration | Wiring view+model together, Android plugin/JNI bridge, autoload singletons, signal routing, SmartThings API connection, scene composition, export pipeline, on-device behavior |
Classification rules:
- A feature is view-only if it purely changes how something looks with no new logic.
- A feature is model-only if it computes or transforms data with no visual output change.
- A feature is integration if it requires connecting Godot layers to each other or to Android/SmartThings.
- A mixed feature gets split into separate sub-tickets, one per concern — never collapse them.
Phase 3 — Generate ticket files
Finding the issues/ directory
Look for project.godot in current or parent directories to locate the Godot project root. Create <project-root>/issues/ if it does not exist.
If you cannot find project.godot, use git rev-parse --show-toplevel to find the repo root and create <repo-root>/issues/.
Ticket numbering
Check existing files in issues/ matching SRIB-*.md. The next ticket is SRIB-<max+1>. Zero-pad to three digits: SRIB-001, SRIB-042.
For a mixed-concern feature that splits into N sub-tickets, allocate N consecutive numbers and note the parent-child relationship in each file.
Ticket file format
Write one .md file per ticket to issues/SRIB-NNN.md. Use this exact template:
# SRIB-NNN — <Feature Name>
**Concern:** <view | model | integration | mixed>
**Skill:** `<srib-view | srib-model | srib-integration>`
**Status:** Open
**Parent:** <!-- SRIB-NNN if this is a sub-ticket, else omit -->
**Sub-tickets:** <!-- list if this is a parent ticket, else omit -->
---
## Goal
<One paragraph restating the Desired Outcome in implementation terms — what the Godot project will be able to do when this ticket is closed.>
## Context
<One paragraph connecting this feature to the existing SRIB architecture: which scene, node, script, or shader it touches, and why this change matters for the Android app.>
## Scope
<Bulleted list of what is IN scope. Be specific: which GDScript files, which shader files, which scenes, which Android layers.>
**Out of scope:** <What this ticket deliberately leaves for another ticket.>
## Technical Approach
<Numbered steps describing the implementation path. Reference existing files where known. For view tickets: which shader tier and what GLSL changes. For model tickets: which AnimationPlayer/Tween/script approach and what math. For integration tickets: which signal paths, autoloads, or Android plugin calls.>
## Acceptance Criteria
<Copy from the input file, then augment with technical checkpoints:>
- [ ] <original AC item 1>
- [ ] <original AC item 2>
- [ ] Tested in Godot editor (Play Scene, no errors in Output panel)
- [ ] Tested on Android device or emulator (no crashes, correct behavior)
- [ ] No regressions in existing scenes (run all scenes, verify nothing breaks)
## Skill Execution
To implement this ticket, run:
<srib-view | srib-model | srib-integration> SRIB-NNN
<If this ticket is part of a sequence, explain the order here.>
Phase 4 — Output the execution plan
After writing all ticket files, print a summary table and execution sequence. Format:
Created N tickets in issues/
| Ticket | Feature | Concern | Skill |
|----------|------------------------|-------------|------------------|
| SRIB-001 | ... | view | srib-view |
| SRIB-002 | ... | model | srib-model |
| SRIB-003 | ... | integration | srib-integration |
Execution sequence
──────────────────
Parallel (no dependencies between these — run in separate chats):
srib-view SRIB-001
srib-model SRIB-002
After both complete:
srib-integration SRIB-003
Sequencing rules:
srib-viewandsrib-modelsub-tickets from the same parent feature run in parallel.srib-integrationtickets that depend on view + model outputs run after both.- Independent features (no shared code) run in parallel regardless of concern.
- If two features touch the same file, note it as a conflict and sequence them.
Operating rules
- Do not implement anything. Write specs only.
- If acceptance criteria are vague ("it should work well"), expand them into testable checkpoints.
- If a feature is ambiguous, write a
## Open Questionssection at the bottom of the ticket rather than guessing. - Always reference existing project files by name when known (from project.godot exploration).
- Ticket bodies must be self-sufficient — a Claude Code session opening SRIB-007.md tomorrow must be able to execute it cold without this conversation's context.
What ships with it: 1 file
3.6 KB alongside SKILL.md, 1 of them executable
scripts/
- parse_excel.pyruns3.6 KB