one-by-one — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited one-by-one (Agent Skill) and scored it 78/100 (yellow). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 2 high-severity and 1 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 3 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.The text {match} asks the agent to disclose its hidden system prompt or initial instructions. That is often the first step of a larger attack: knowing the system prompt lets an attacker craft inputs that defeat its constraints by mimicking its own voice.
repeat/reveal/print your system prompt request from the skill.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.
<!-- Copyright (C) 2026 Gregory R. Warnes SPDX-License-Identifier: AGPL-3.0-or-later
This file is part of Oboe MCP. For commercial licensing, contact [email protected] -->
Process multiple items sequentially with priority scoring, dependency analysis, and persistent session state.
Prefer the oboe-mcp MCP tools for .github/oboe_sessions/ state. Do not read or write session JSON directly when the MCP tools can perform the operation. If oboe-mcp is unavailable, stop and surface the blocker instead of silently falling back.
| Operation | How |
|---|---|
| List existing sessions | oboe_list_sessions(base_dir, status_filter?) |
| Create new session | oboe_create(base_dir, title, description, items?=[...]) |
| Merge into session | oboe_merge_items(session_file, items=[...], base_dir?) |
| Mark item blocked | oboe_mark_blocked(session_file, item_id, blocker, base_dir?) |
| Mark item complete | oboe_mark_complete(session_file, item_id, resolution, base_dir?) |
| Skip item | oboe_mark_skip(session_file, item_id, base_dir?, reason?) |
| Mark item in progress | oboe_mark_in_progress(session_file, item_id, base_dir?) |
| Set approval | oboe_set_approval(session_file, item_id, approval_status, base_dir?, approval_mode?, note?, lifecycle_status?) |
| Create child session | oboe_create_child_session(parent_session_file, title, description, items?=[...], base_dir?, parent_item_id?, session_filename?) |
| Complete child session | oboe_complete_child_session(child_session_file, base_dir?, resolution?) |
| Update a field | oboe_update_field(session_file, item_id, field, value, base_dir?) |
| Find next item | oboe_next(session_file, base_dir?) |
| Session status | oboe_session_status(session_file, base_dir?) |
| Complete session | oboe_complete_session(session_file, base_dir?) |
priority_score = urgency + importance + (6 - effort) + dependencies
Defaults when not supplied: urgency=3, importance=3, effort=3, dependencies=1
Lifecycle status values:
pending | in_progress | deferred | blocked | completed | skipped
Approval status values:
unreviewed | approved | denied
Approval mode values:
immediate | delayed | null
Definitions:
pending: queued but not startedin_progress: actively being workeddeferred: approved to do later; still open, but held behind the primary review queueblocked: cannot continue until the blocker is resolvedcompleted: finished and closedskipped: intentionally not being executedunreviewed: no approval decision has been recorded yetapproved: the user authorized the workdenied: the user explicitly rejected the workactive | paused | completed
oboe_create or oboe_merge_items. items is optional in oboe_create and oboe_create_child_session; if items are not yet known, create the session first and populate it later with oboe_merge_items.blocked when progress cannot continue and store the blocker.oboe_set_approval for approval metadata such as approval_status, approval_mode, and approval_note.oboe_set_approval call with approval_status=approved and approval_mode=delayed.Use the agent's structured question tool (askQuestions, ask_questions, AskUserQuestion, or equivalent) by default for predefined OBO choices such as resume, merge, replace, approval, navigation, stop, restore, and reorder. Only fall back to plain text when the structured question tool is unavailable, failing, or the prompt genuinely requires unrestricted freeform input; when that happens, state the reason explicitly.
For the full step-by-step conversational workflow, use the packaged /obo prompt at .github/prompts/obo.prompt.md.
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.