extract-tasks — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited extract-tasks (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.
Scan the current conversation for task-like content and propose adding untracked items to WritBase. This is a review-and-confirm workflow — never create tasks without explicit user approval.
/extract-tasks or explicitly asks to extract tasks.Call writbase:info to verify the MCP server is connected.
WritBase MCP is not connected. Run npx writbase status to check your setup.The current conversation is stored as a JSONL file. Identify it:
~/.claude/projects/<mangled-cwd>/ where <mangled-cwd> is the absolute working directory with / replaced by - (leading - preserved). Run pwd to get the current directory, mangle it, and list matching *.jsonl files sorted by modification time (most recent first).Session JSONL files contain many record types. Only scan records relevant to the conversation:
type is "user" or "assistant" — these are the actual conversation turns.type is "progress", "file-history-snapshot", "system", or anything else. These are hook events, tool metadata, and internal bookkeeping (~90% of records).For included records, extract text from message.content. This field may be:
text from blocks where type is "text")Use Grep on the JSONL file to find lines containing task-signal keywords, then Read surrounding lines for context. Task signals include:
Apply neighborhood context: read 3 messages before and 2 after each candidate to resolve vague references (e.g., "that thing" refers to what was discussed 2 messages earlier).
For each task-like item found, prepare:
critical (blocking/urgent), high (important/soon), medium (default), low (nice-to-have/someday)writbase:info if only one project is available. If multiple projects exist, ask the user to choose.writbase:info if only one department is available for the selected project. If multiple, ask the user to choose. If none are required, omit.If no task candidates are found, output the following and stop:
No untracked tasks found in this conversation.
Present candidates as a numbered list:
Found 3 potential tasks:
1. [high] Add rate limiting to the /api/upload endpoint
Source: "we need to add rate limiting to upload before the release"
Project: my-project | Department: engineering
2. [medium] Investigate flaky test in auth module
Source: "the auth test has been failing intermittently"
Project: my-project | Department: engineering
3. [low] Update README with new CLI commands
Source: "should probably update the docs at some point"
Project: my-project | Department: (none)Ask the user to review: for each task, they can approve, edit (change description, priority, project, or department), or skip.
For each candidate, call writbase:get_tasks with search set to 2-3 key words from the description. If a matching task already exists, mark the candidate as (possible duplicate of `<task_id>`) in the presentation. The user decides whether to skip or create anyway.
For each approved task, call writbase:add_task with the confirmed parameters.
Error recovery — do not fail terminally on these errors. Instead, return to the user for correction:
| Error Code | Recovery |
|---|---|
scope_not_allowed | Tell the user they lack permission for this project/department. Ask them to choose a different scope or skip. |
invalid_project | Tell the user the project slug is invalid. Show available projects from Step 1 and ask them to choose. |
invalid_department | Tell the user the department slug is invalid. Show available departments and ask them to choose. |
validation_error | Show the fields object from the error. Ask the user to fix the description, priority, or other invalid field. |
For other errors (rate_limited, unauthorized_agent_key, inactive_agent_key), report the error and stop — these indicate infrastructure problems the user must fix outside this workflow.
After all approved tasks are created, output a summary:
Created 2 tasks in WritBase:
- [high] Add rate limiting to the /api/upload endpoint (id: abc-123)
- [medium] Investigate flaky test in auth module (id: def-456)
Skipped 1 item.~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.