story-craftsman — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited story-craftsman (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
This skill embodies the "Everything is Code" engineering philosophy, helping you produce high-quality user stories and their supporting documentation alongside your MR submissions.
For the detailed example template, see examples/TEMPLATE-UserStory.md.
git status to determine the relevant module and place documents in the corresponding docs/04-user-stories/ directoryUser requests "help me write a User Story," "describe this feature," "generate user story," etc.
After receiving a request, check whether the following three elements are present:
| Element | Meaning | Sufficiency Criteria |
|---|---|---|
| Background (Why) | Current pain points, impact scope | Can articulate "who is affected in what scenario" |
| Goals (What) | Verifiable success metrics | Can articulate "what can be quantified after completion" |
| Acceptance Criteria (AC) | Key boundary scenarios | At least 2 checkable conditions are listed |
If information is insufficient, execute Step 2 (interview); if sufficient, proceed directly to Step 3 (generation).
Take on the dual role of "detective" and "poet," asking all missing dimension questions in a single round (avoiding multi-round fragmented questions):
To generate a professional user story, I need you to confirm the following (keep it brief, 1-3 sentences per item):
1. **Background/Pain point**: [specific missing background question]
2. **Goal**: [specific missing goal question]
3. **Acceptance criteria**: [specific missing AC question]
You can describe briefly — I will handle converting it into the standard professional document format.Strictly follow the structure from TEMPLATE-UserStory.md to generate the file.
File naming convention: {feature-name}.md (lowercase kebab-case)
Placement path: {submodule_root}/docs/04-user-stories/{feature-name}.md
If the target directory does not exist, first execute Feature B or prompt the user.
User explicitly requests "create docs structure," "initialize docs," etc.
docs/
├── 01-product-research/ # Product research and competitive analysis
├── 02-system-design/ # System design and architecture decisions
├── 03-detailed-design/ # Detailed design documents
├── 04-user-stories/ # User Stories
└── 05-user-guide/ # User manuals and operation guides.gitkeep file in each subdirectory to ensure Git tracks empty directoriesAGENTS.md in the docs/ root directory describing each directory's purposedocs/AGENTS.md Content Template# docs/
This directory is the project documentation root, organized by R&D lifecycle stages.
## Directory Structure
- `01-product-research/`: Product research, competitive analysis, market insights
- `02-system-design/`: System architecture design, technology selection, ADR (Architecture Decision Records)
- `03-detailed-design/`: Module detailed design, interface specifications, data structures
- `04-user-stories/`: User Story files, naming convention: `{feature-name}.md`
- `05-user-guide/`: End-user operation manuals and usage instructions
## Maintenance Conventions
- User stories are created as individual `.md` files per feature module
- This file should be updated after architectural/directory-level changesAnalyze code changes or user descriptions to determine the target sub-module in the following order:
device-cloud-server/, frontend/)git status output## User Story: Alarm Filtering Feature
**As** a system administrator, **I want** to filter alarms, **so that** I can reduce distractions.
**Acceptance Criteria**:
- [ ] System supports filtering functionality
- [ ] Filtered alarms are not displayed after filteringProblem: Missing background, ACs are too vague, unable to verify "what conditions trigger filtering."
## User Story: Rule-Based Alarm Silence Filtering
**Background**: The monitoring system generates 500+ heartbeat probe alarms daily, causing
operator alert fatigue. Real fault alarms get buried, and average response time has increased
from 2 minutes to 15 minutes.
**As** an operations engineer, **I want** to configure alarm silence rules (by device type + alarm type combination),
**so that** known non-fault alarms are suppressed and real fault alarm response time returns to under 2 minutes.
**Acceptance Criteria**:
- [ ] Given a configured silence rule "device type=heartbeat probe AND alarm type=connection timeout,"
When such an alarm fires, Then the Grafana dashboard does not display it and the audit log records "silenced"
- [ ] Given the silence rule configuration interface, When the admin saves a rule,
Then the rule takes effect within 30 seconds without requiring a service restart
- [ ] Given an alarm matches both a silence rule and an escalation rule simultaneously,
When the alarm fires, Then the silence rule takes priority, but the conflict is noted in the audit log| Scenario | Condition |
|---|---|
| Technical refactoring MR | No visible user-facing functionality change — may simplify to a brief technical note |
| Pure bug fix | Reference the corresponding Issue directly — full User Story format not required |
Exemption method: /override skill=story-craftsman reason="pure technical refactoring, no user-visible functionality change"
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.