kramme-cc-workflow/skills/kramme:skill:create/SKILL.md
Guide the creation of a new Claude Code plugin skill with best-practice structure, optimized frontmatter, and progressive disclosure. Use when creating a new skill from scratch or scaffolding a skill directory. Not for editing or refactoring existing skills.
npx skillsauth add abildtoft/kramme-cc-workflow kramme:skill:createInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
4 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Guide the creation of a new plugin skill with best-practice structure, frontmatter, progressive disclosure, and validation. External attribution lives in references/sources.yaml.
$ARGUMENTS and classify it:
kramme: followed by colon-separated segments → treat as a candidate skill name.references/naming-conventions.md is loaded.Batch Q2, Q3, and Q5 into a single multi-choice prompt (they are independent multi-choice questions). Ask Q1, Q4, and Q6 separately because they require free-form or conditional follow-up.
What should this skill do? Describe the task it automates or the workflow it guides.
Skip if $ARGUMENTS already provides a clear description.
How should this skill be triggered, and does it have side effects?
A) User-only with side effects — creates/modifies/deletes files, runs git commands, calls APIs (
user-invocable: true,disable-model-invocation: true) B) User or auto-triggered — read-only analysis, formatting, text processing (user-invocable: true,disable-model-invocation: false) C) Background convention — auto-applies rules like commit style or verification (user-invocable: false,disable-model-invocation: false)
What complexity tier fits this skill?
A) Simple — single SKILL.md, no supporting files (~20-80 lines) B) Medium — SKILL.md + resource files for reference content (~80-300 lines) C) Complex — SKILL.md + resources + scripts for deterministic operations (~200-500 lines)
Does this skill accept arguments? If yes, describe the expected input.
Examples:
[file-path],[topic description],<name> [--flag value]Answer "no" if the skill gathers all input interactively.
Should this skill be available on all platforms, or restricted?
A) All platforms (default — omit
kramme-platforms) B) Claude Code only (uses Agent Teams or other Claude Code features) C) Specific combination (specify which)
Is this skill derived from external inspiration — another agent-skills repository, a paper, a book, a blog post, official framework docs?
A) Yes — capture each source. Used to scaffold
references/sources.yamlso thekramme:skill:audit-sourcesskill can track upstream changes worth absorbing later. B) No — the skill is original to this repo or composed of patterns the repo already established.
If A, ask the user for each source: title + URL (or library identifier resolvable via a docs MCP) + one-sentence rationale stating what in this skill is derived from the source. Capture as external_sources for use in Phase 5.
If the user is unsure whether something qualifies, default to including it — extra entries are easy to remove; missing entries silently skip upstream-change detection.
Read the naming conventions from references/naming-conventions.md.
If Phase 1 produced a candidate skill name, validate it against the rules:
kramme:{domain}:{action} with optional qualifier segments when they represent separate concepts. Prefer flags such as --team for execution modes.ls skills/ or a glob over skills/*/SKILL.md) to verify the name is not taken.If no name was provided, generate 2-3 suggestions:
If proposing a new domain namespace, confirm with the user that it doesn't overlap with existing ones.
Read the frontmatter field reference from references/frontmatter-guide.md.
Draft the frontmatter using the interview answers:
---
name: { skill-name }
description: "{trigger-optimized description with negative trigger}"
argument-hint: "{if applicable}"
disable-model-invocation: { true|false }
user-invocable: { true|false }
kramme-platforms: { if applicable }
---
For the description:
The description is the only metadata the agent sees when deciding whether to load this skill. Treat it as a trigger spec, not a marketing summary. See references/best-practices.md for the rationale.
anthropic/@anthropic-ai/sdk")Present the draft frontmatter to the user for review. Adjust based on feedback.
Before writing any file, verify the working directory contains a skills/ parent (or whatever path the consumer plugin uses). If it does not, stop — see the Error Handling section.
If any target file already exists during scaffolding, abort and report the conflicting path. Do not silently overwrite. To regenerate, the user must remove the existing skill directory first.
skills/{skill-name}/assets/skill-md-simple.md.SKILL.md with:
skills/{skill-name}/references/ — for domain docs, cheatsheets, rules, agent prompts, examplesassets/ — for output format templates, code templates, static resourcesassets/skill-md-with-resources.md.SKILL.md with:
scripts/ directory.#!/usr/bin/env bash or #!/usr/bin/env python3)Read the {reference name} from `references/{file}.md`.
sources.yaml (if external inspiration was identified in Phase 2)If Question 6 identified external inspiration, write <skill-dir>/references/sources.yaml (creating references/ first if necessary, even for Simple-tier skills). Skip this step entirely if no inspiration was identified — do not create an empty manifest. If the user identifies inspiration later during drafting, return here before declaring the skill complete.
sources:
- id: { kebab-case slug — stable across audits, do not rename }
url: { fully-qualified https URL }
# OR: context7_library: {<owner>/<name> — for libraries resolvable via a docs MCP}
title: "{human-readable title shown in audit reports}"
rationale: "{one sentence: exactly what in this skill is derived from this source}"
last_reviewed_at: { today, ISO YYYY-MM-DD }
baseline_hash: ""
Set baseline_hash: "" on every entry — the first run of kramme:skill:audit-sources populates it after the initial fetch.
After scaffolding, verify the skill against these checks:
references/, assets/, or scripts/ (flat, no nesting)name field in frontmatter exactlyname, description, disable-model-invocation, user-invocabledescription is under 1,024 charactersdescription includes a negative triggerargument-hint present only if the skill accepts argumentskramme-platforms present only if platform-restrictedreferences/sources.yaml exists with one entry per source (id, url or context7_library, title, rationale, last_reviewed_at, baseline_hash).Report any failing checks to the user with specific remediation steps.
If the consumer plugin maintains a published skills index:
Generate a skill-index table row:
| `/{skill-name}` | {User[, Auto]} | {argument-hint or —} | {One-sentence description} |
Suggest the best-fitting section based on the skill's domain (e.g., SIW skills under a SIW heading, PR skills under a Pull Requests heading, code skills under a code-quality heading).
Display the row and section suggestion. Remind the user to add them to their skills index.
If the consumer plugin does not maintain such an index, skip this phase.
Display the summary:
Skill created: {skill-name}
Files:
skills/{skill-name}/SKILL.md ({n} lines)
skills/{skill-name}/references/... ({n} files) [if applicable]
skills/{skill-name}/assets/... ({n} files) [if applicable]
skills/{skill-name}/scripts/... ({n} files) [if applicable]
Next steps:
1. Fill in TODO markers in SKILL.md and resource files
2. Test locally: claude /plugin install /path/to/plugin
3. Validate with LLM-assisted review (see references/best-practices.md)
4. Add the row to the plugin's skills index documentation (if applicable)
5. Commit the new skill files using your project's commit-message convention
--, exceed 64 chars, or omit the kramme: prefix) — stop, display the rules from references/naming-conventions.md, and ask for a corrected name.skills/{skill-name}/ already exists) — stop and ask for a different name. Do not overwrite.skills/ parent — the working directory does not look like a plugin repo. Stop and ask the user to confirm the target plugin root before retrying.$ARGUMENTS is neither a candidate skill name nor parseable free text, treat as empty and proceed to Phase 2.For detailed best practices, validation prompts, and examples, read these resources on demand:
references/best-practices.md — full best practices guide with LLM validation frameworkreferences/frontmatter-guide.md — frontmatter field rules, decision trees, examplesreferences/naming-conventions.md — domain namespaces, word-order patterns, validation rulesassets/skill-md-simple.md — template for simple skillsassets/skill-md-with-resources.md — template for skills with supporting filesdevelopment
Compare an existing PR's title and body against the actual branch diff and report drift — false claims, missing major changes, stale scope, missing risk callouts. Use after pushing changes to a branch with an open PR, or before requesting review. Read-only by default; add --fix to delegate to kramme:pr:generate-description for an updated description. Complements kramme:pr:code-review (which checks description accuracy as one signal among many code-quality checks) by being a fast, focused, single-purpose check that runs in seconds.
tools
Reviews plugin skills for focused scope, progressive disclosure, portability, safety, retry behavior, and documentation quality. Use when auditing a SKILL.md, skill directory, or proposed skill text against skill-authoring standards. Not for creating new skills, editing skills, or reviewing ordinary application code.
tools
Reviews recent agent session transcripts to find repeated manual workflows or repeated user asks, then proposes and optionally scaffolds only useful new skills or custom subagents. Use when the user asks to inspect recent sessions, find automation opportunities, or create reusable workflows from repeated work. Not for summarizing one session, general retrospectives, or codebase refactoring.
data-ai
Remove all DONE issues and renumber remaining issues within each prefix group. Not for editing live issue content, archiving still-open issues, or moving issues between prefix groups.