Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx agentmods add skills/teamspwk/nova/writing-nova-skillnpx skills add TeamSPWK/nova --skill writing-nova-skillgit clone --depth 1 https://github.com/TeamSPWK/novaWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/teamspwk/nova/writing-nova-skill)<a href="https://agentmods.dev/skills/teamspwk/nova/writing-nova-skill"><img src="https://agentmods.dev/badge/skills/teamspwk/nova/writing-nova-skill.svg" alt="Measured on agentmods" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5 | $0.00059 | $0.01126 |
| Opus 5 | $0.00030 | $0.00563 |
| Sonnet 5 | $0.00012 | $0.00225 |
| Haiku 4.5 | $0.00006 | $0.00113 |
Grade A, and why
writing-nova-skill scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 5d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 70 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Writing a Nova Skill
Nova 스킬을 작성/수정할 때 따라야 할 규약. Jesse Vincent(obra/superpowers)의 실측 발견 — "description이 workflow를 요약하면 Claude가 본문 대신 description을 따라간다" — 을 Nova에 흡수한 메타-스킬.
핵심 규약
1. Description = When-to-use only
description은 언제 발동하는가만 기술한다. HOW(동작 방식)은 본문으로.
금지:
→,파이프라인,4단,Explorer×3같은 단계 열거- "X로 Y를 Z한다" 형식의 동작 기술 전체
- "엔진", "시스템"만 선언하는 정체성 홍보 (예: "Nova XXX 엔진 —")
요구:
- "...할 때.", "...가 필요한 경우" 같은 트리거 표현
MUST TRIGGER: ...섹션에 트리거 조건 3개 이상- 사용자 요청 패턴 포함 (예: "사용자가 /nova:xxx 호출 시")
예시 (evaluator):
- ❌ "Nova Adversarial Evaluator — Nova Quality Gate의 핵심 검증 엔진. 독립 서브에이전트로 코드를 적대적 관점에서 검증."
- ✅ "코드 구현을 적대적 관점으로 검증해야 할 때. — MUST TRIGGER: /run, /check, /review 내부에서 독립 서브에이전트로 호출, 스프린트 완료 직후, 커밋 전 Evaluator PASS 필요 시."
2. 본문 구조
- 한 문단 — 스킬 목적 + Nova 5기둥 내 위치
## 핵심 원칙— 설계 결정 3~5개## 적용 규칙 (on-demand 로드)— 참조하는 nova-rules §N 번호## 오케스트레이션 추적—mcp__plugin_nova_nova__orchestration_update호출 의무 (해당 시)- 예시 / 안티패턴
3. 트리거 회귀 테스트 (MUST)
새 스킬 추가 시 tests/skill-triggering/prompts/{name}-positive.txt 제출 의무.
- positive: 이 스킬이 반드시 발동해야 할 사용자 프롬프트 1개
- negative (선택): 이 스킬이 발동하면 안 되는 유사 맥락 프롬프트
tests/test-skill-triggering.sh가 각 skills/*/SKILL.md에 대응하는 positive fixture 존재를 강제한다. 누락 시 CI FAIL.
실제 LLM 트리거 검증은 Nova 개발자 전용 dev/skills/field-test/로 수동 수행 (사용자 플러그인에는 미포함).
4. 동기화 체크리스트 (CLAUDE.md와 일치)
새 스킬 추가 시:
hooks/session-start.sh커맨드 목록 영향 여부 확인 (커맨드 아니면 대개 불필요)tests/test-scripts.sh의 description lint 통과 확인docs/nova-meta.json—bump-version.sh가 자동 재생성 (수동 편집 금지)tests/skill-triggering/prompts/{name}-positive.txt제출
안티패턴
- description을 짧게 만들려고 트리거를 생략한다 → Claude가 언제 쓸지 판단 못 함
- "5인 적대 평가자", "3단 파이프라인" 같은 숫자 홍보 → 본문 스킵 유발
- 여러 목적을 한 스킬에 몰아넣는다 → 트리거 모호, 본문 비대
근거 (왜 이 규약이 존재하는가)
obra/superpowers/skills/writing-skills/SKILL.md— "Testing revealed that when a description summarizes the skill's workflow, Claude may follow the description instead of reading the full skill content"memory/project_nova_competitive_analysis_2026_04_23.md— 경쟁 분석 결과 9개 Nova SKILL 중 5개가 이 안티패턴에 해당, Tier 1.1에서 일괄 리팩터- Nova 5기둥 중 협업 기둥 — 스킬이 제 때 발동하지 않으면 에이전트 협업이 붕괴한다
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 5d ago First seen · 70 lines · 59 tokens per session scan A 0ecce29b710c
writing-nova-skill is a skill published in the GitHub repository TeamSPWK/nova (2 stars, last pushed 4d ago), licensed MIT. It adds 59 tokens to every session and 1,126 once invoked, about $0.0003 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.
Other skills, from other repositories
create-site
Creates a new Power Pages code site (SPA) using React, Angular, Vue, or Astro. Guides through the full process from initial concept to deployed site: requirements discovery, scaffolding, component planning, design, implementation, validation, and deployment. Use when the user wants to create, build, or scaffold a new…
review
5-pass structured code review — correctness, security, performance, readability, consistency.
alive:system-upgrade
Upgrade ALIVE to the current version. Handles v1/v2/v3.x source states, multi-surface aware (alive-mcp / Hermes / Codex), retroactive version detection, partial-failure resume, dry-run previews, and rollback inspection.
extract-resume
Parse a resume's uploaded PDF into structured JSON (basics, experience, projects, skills, education) and save it to the editor.
codex-test-gen
Generate unit tests for specified functions using Codex exec.
ensure-pipelines-host
Ensures the tenant has a usable Power Platform Pipelines host environment before any pipeline operation runs. Detects host state via the same resolution order as the Power Apps UI (org-db setting → BAP env metadata → default-custom-host setting); if any existing host (Platform or Custom) is found, uses it. If no host…