mk:confluence — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited mk:confluence (Agent Skill) and scored it 91/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 1 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 1 flagged
The text {match} is the classic direct prompt-injection phrasing. Placed in a skill body that the agent reads as trusted instructions, it tries to make the agent abandon its prior rules and follow whatever comes next — a full system-prompt override.
ignore/disregard/forget … previous instructions sentence.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 is a pure routing layer. Its sole purpose: identify the right mk:confluence-* leaf for the user's Confluence task, then point at it. No execution.
| User intent | Leaf skill |
|---|---|
| Get/create/update/delete a single page or blog post; copy/move/version | mk:confluence-page |
| Search pages with CQL; list spaces; export results | mk:confluence-search |
| Deep spec analysis: requirements, gaps, suggested stories | mk:confluence-spec-analyst |
| Bulk ops on 10+ pages (label, move, delete) — dry-run mandatory | mk:confluence-bulk |
| Comments, attachments, labels, watchers (collaboration surface) | mk:confluence-collaborate |
mk:confluence-search=, AND, OR, currentUser()) → mk:confluence-searchbulk / batch / mass keyword → mk:confluence-bulkrequirements, acceptance criteria, analyze the spec) → mk:confluence-spec-analystmk:confluence-collaborate owns label CRUD (add/remove/list). mk:confluence-page does NOT duplicate — if user says "label page X", route to collaborate.mk:confluence-collaborate, even if scoped to a single pageSee references/install-and-auth.md for one-time setup (.claude/scripts/bin/setup-workflow installs confluence-assistant-skills into .claude/skills/.venv per scripts/requirements.txt; populate .claude/.env with the 3 MEOW_CONFLUENCE_* vars).
scripts/confluence-as.sh — env-translating wrapper (MEOW_CONFLUENCE_* → CONFLUENCE_*, sets CONFLUENCE_OUTPUT=json, refuses settings.local.json fallback, gates non-Cloud URLs)scripts/cql-sanitize.sh — CQL injection guard for user-derived inputscripts/adf-to-md.sh + scripts/adf_to_md.py — macro-aware ADF→Markdown walker (panel, decisionList/Item, taskList/Item, expand, mention, media, inlineCard preserved with explicit labels)scripts/requirements.txt — pip dependency manifest auto-discovered by .claude/scripts/bin/setup-workflowscripts/smoke-live.sh — manual live-creds smoke testreferences/install-and-auth.md — env vars, setup, Cloud-only gate, escape hatchreferences/cli-idioms.md — wrapper invocation patterns + safe-invocation rules + conversion-helper idiomsmk:planning-engine accepts --spec <report-path> flag pointing at an existing mk:confluence-spec-analyst report; user runs spec-analyst FIRST, then passes pathmk:intake recognizes Confluence URL/page-id as a 5th source; fetches page content directly via wrapper, does NOT auto-invoke spec-analystmk:jira → sister hub for Jira ticketing; spec-analyst report pairs with mk:jira-issue create to turn extracted user stories into tickets (manual review required, --with-commands is opt-in)mk:cook — Confluence write paths are out of scopeconfluence-as (NOT confluence despite some upstream README docs). The wrapper handles this; leaves call the wrapper.*.atlassian.net URLs. For Server/DC, users invoke MCP Atlassian directly per references/install-and-auth.md. Hub does NOT auto-fallback.~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.