creative-work — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited creative-work (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.
The graph holds two kinds of things and they must stay separate.
foundation, decision, surprise, tension, question, prediction, experiment, evaluation, …). A few sentences capturing why and what shifted. These are the thinking. Every concept node is a captured cognitive moment.doc_create with fileType, children carrying content). The actual thing you produced.Never mix. Code and prose live in doc nodes. The reasoning about code — why this approach, what tradeoffs, what surprised you — lives in concept nodes.
Every substantive doc_create should be accompanied by at least one concept node in the same batch — a decision for why this approach, a tension if an alternative still bothers you, a question if something's unresolved.
doc_create(strategy_1) + decision(why strategy_1) + tension naming the rejected alternativeIf you have 5+ consecutive doc_create ops with no concept node between, stop. You're filing results without capturing the reasoning that produced them.
When you write prose, code, analysis, or any artifact the user asked for, create it via doc_create inside a graph_batch — not as a local file. The graph is the single source of truth; files are ephemeral projections generated on demand with doc_generate.
You may surface information directly to the user in your response — summaries, explanations, answers — but the graph must not be skipped.
Never put an entire file into one doc node. A code file should look like:
engine (root, python) ← imports, module docstring
├── DecompositionCore class ← class definition + __init__
├── _extract_subconcepts ← method body
├── _identify_relationships ← method body
└── demo / main block ← if __name__ == "__main__"afterIdWhen a parent already has children, doc_create requires afterId pointing to the last existing sibling. Use allowUnorderedDocs: true on the batch to skip this if ordering doesn't matter.
Before creating a root doc, check doc_list_roots. If a doc covering the same subject exists — even under a different title — revise it with doc_revise. One root per functional purpose.
Always connect documents to what they discuss. Here's a complete example with correct $N.id indices — count every operation, not just concepts or just docs:
graph_batch({
allowUnorderedDocs: true,
operations: [
// $0 — concept node
{ tool: "graph_add_concept", params: {
title: "Why this approach", trigger: "decision",
understanding: "...", why: "..."
}},
// $1 — doc root
{ tool: "doc_create", params: {
title: "My Story", content: "A story about...",
isDocRoot: true, fileType: "md"
}},
// $2 — doc child (parentId references $1)
{ tool: "doc_create", params: {
title: "Chapter 1", content: "...",
parentId: "$1.id"
}},
// $3 — doc child
{ tool: "doc_create", params: {
title: "Chapter 2", content: "...",
parentId: "$1.id"
}},
// $4 — edge: doc expresses existing concept
{ tool: "graph_connect", params: {
from: "$1.id", to: "n_existing_concept",
type: "expresses", why: "this doc articulates the concept"
}},
// $5 — edge: concept learned from decision
{ tool: "graph_connect", params: {
from: "$0.id", to: "n_prior_node",
type: "learned_from", why: "this insight came from that"
}}
],
commit_message: "story + the creative decision behind it"
})$N.id counts ALL operations — concepts, docs, and edges alike. $0 is the first op, $1 is the second, regardless of type.
When you run code, the result is empirical data. Create an experiment node with: what you ran, the actual output, and what it means. Failed experiments are more valuable than successful ones.
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.