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; copied external files also keep source and license notes in the copied file.
$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, Q6, and Q7 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)
Default to harness-neutral phrasing with a declared fallback. Add kramme-platforms only when the skill depends on a true platform feature with no sensible fallback, such as a platform-specific agent runtime, MCP provider surface, hook system, or environment variable.
Is this skill derived from external inspiration — another agent-skills repository, a script, 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:
Capture as external_sources for use in Phase 5. Capture copied files separately as copied_external_assets.
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.
Will this skill create, update, refresh, or retire a durable artifact — for example a markdown report, issue file, generated code file, copied asset, config, or source snapshot?
A) No durable artifact — it only returns an inline answer or performs stateless analysis. B) Yes — document how the artifact is produced, consumed, refreshed, and retired.
If B, ask:
Capture as artifact_lifecycle for use in Phase 5.
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:
artifact_lifecycle was capturedexternal_sources were capturedskills/{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:
artifact_lifecycle was capturedexternal_sources were capturedscripts/ directory.#!/usr/bin/env bash or #!/usr/bin/env python3)Read the {reference name} from `references/{file}.md`.
references/sources.yaml.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.
Use moving upstream URLs for sources that should be checked for drift, such as a default-branch GitHub URL or canonical docs page. Preserve exact commits or releases in copied-file source notes and in the rationale when they matter for attribution; only pin the audit URL itself when the source is intentionally immutable. For copied external files, make the rationale name the copied local file and verify the copied file itself carries the upstream source and license note.
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-restrictedkramme-platforms when no sensible fallback existsreferences/sources.yaml exists with one entry per source (id, url or context7_library, title, rationale, last_reviewed_at, baseline_hash).make skill-security-changed when present or skillspector scan skills/{skill-name} --no-llm.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. Run a static-only SkillSpector scan or report why it was skipped
4. Validate with LLM-assisted review (see references/best-practices.md)
5. Add the row to the plugin's skills index documentation (if applicable)
6. 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 filestools
Requires Linear MCP. Implements one Linear issue end to end, selects applicable code-review, convention, and PR-refactor gates, runs them to bounded convergence, verifies, and optionally opens the PR and iterates on CI and review feedback until green. Use when the user wants a single Linear issue taken from implementation through a clean Pull Request. Not for implementation-only work, SIW-tracked issues, stacked PRs, existing PR updates, or post-merge rollout.
development
Reviews PR and local changes for convention drift and overcaution against documented rules and mined peer-file practice. Use for new patterns, dependencies, abstractions, or defensive complexity that departs from established practice; every finding cites evidence. Supports --inline. Not for general code quality (use kramme:pr:code-review) or spec review (use kramme:siw:spec-audit --team).
testing
Charts huge or foggy initiatives into a local `.context` decision map and resolves one typed frontier ticket per session until the work is ready for SIW or another execution workflow. Use when the route to a destination cannot fit in one agent session or parallel workspaces need coordinated planning state. Not for clear specs, ordinary issue decomposition, implementation, or Linear-native tracking.
development
Investigates a question against primary sources and saves one cited Markdown artifact. Use for reading legwork: official docs/API facts, source-code or spec checks, standards, and first-party service behavior before planning or implementation. Not for making product or architecture decisions, implementing code, broad web search, secondary blog summaries, or uncited answers.