resolve-issue — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited resolve-issue (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.
@rules/php/core-standards.mdc@rules/php/dependency-selection.mdc — whenever the resolution flow needs to add a new Composer dependency (Packagist or a GitHub-hosted VCS repository), run the Activity gate + Compatibility gate from that rule before recommending a package, and embed the selection note in the PR description. When no candidate passes the gates, stop and surface the disqualification table to the user instead of adopting an inactive library.@rules/git/general.mdc@rules/reports/general.mdc. The final technical report this skill posts on the GitHub PR (code-review and security-review summary block) stays in canonical English per the rule's Exception — technical CR findings on the GitHub PR. The non-technical report posted on the original issue / JIRA ticket / Bugsnag-linked GitHub issue follows the language of the source assignment. Code identifiers, file paths, severity labels, and CLI commands stay verbatim regardless of the surrounding prose language; never mix two natural languages inside a single comment.@rules/laravel/laravel.mdc, @rules/laravel/architecture.mdc, @rules/laravel/filament.mdc, and @rules/laravel/livewire.mdcSee references/source-detection.md for the detection table and rules.
Before starting the resolution flow:
main branch and pull the latest changes so the working tree reflects the current state of the repository before creating the feature branch.@rules/sql/optimalize.mdc "Batch over per-row operations" — ModelManager batchUpdate / batchInsert, whereIn(...)->delete(), or a single bulk read keyed in memory. Per-row queries are allowed only when iterations have an unavoidable side-effect dependency that is justified in a code comment.linkedIssues[] in the loaded JSON) must match the current Git remote origin. When the error has no linked GitHub issue, confirm the Bugsnag project corresponds to this repository before proceeding.state must be OPEN. Refuse when it is CLOSED.Done status category (Done, Closed, Resolved, Cancelled, or the project's equivalent). Refuse when it is.status must be open. Refuse when it is fixed, ignored, or snoozed.@rules/compound-engineering/general.mdc Claim a tracker issue before working on it). Do this before any code change.skills/code-review-github/scripts/load-issue.sh <URL>. If the label Resolve_by_AI:in-progress is already present → another run owns it → abort with the message Issue #<N> already claimed (Resolve_by_AI:in-progress) — another run is working on it. If absent → apply it: gh issue edit <N> --add-label "Resolve_by_AI:in-progress". Then re-read and verify the label actually landed (external writes can be silently blocked in auto-mode; verify against the tracker, not just the command exit code). If it did not land → abort rather than proceed unclaimed. Note: the apply-then-verify is not perfectly atomic (GitHub has no CAS on labels), but it collapses the race window to the gap between two loader reads — adequate to stop two long-running agent pipelines from colliding.skills/code-review-jira/scripts/transition-to-in-progress.sh <KEY|URL>. Exit 0 = claimed (or idempotent no-op for this run). Exit 4 = issue is already past In Progress from another run → abort with the message Issue <KEY> is already past In Progress — another run may be working on it. Exit 5 = target status name differs for this project — discover the real name via the JIRA MCP server's available-transitions and re-run with it as the STATUS argument, or ask a human. Any other non-zero exit → stop and report the failure. This is the second sanctioned status transition (the first is the Code Review transition on PR open); all others remain human-only.Blocked or aborts before a PR is opened, it must release its own GitHub claim label: gh issue edit <N> --remove-label "Resolve_by_AI:in-progress". JIRA does not auto-revert (transitions back are human-only); name the issue key in the Blocked handoff so a human can reset it. If the claim was never applied (e.g. abort happened before the claim step), skip the release.gh, acli, or REST endpoints directly. Read all required fields off the resulting JSON document.skills/code-review-github/scripts/load-issue.sh <NUMBER|URL> for the structured JSON, or skills/code-review-github/scripts/gather-issue-context.sh <NUMBER|URL> for a full Markdown context brief in one pass (issue/PR + comments + changed files + commits + reviews + CI checks + recursively-loaded linked issues/PRs + an inventory of external URLs to follow). Read attachment content and the inventoried URLs with your own tools; follow useful links recursively to a sensible depth. If the script is unavailable (missing tool, exit code 2/3), fall back to the GitHub MCP server.skills/code-review-jira/scripts/load-issue.sh <KEY|URL> for the structured JSON, or skills/code-review-jira/scripts/gather-issue-context.sh <KEY|URL> for a full Markdown context brief in one pass (issue + comments + attachments + recursively-loaded linked issues + an inventory of external URLs to follow). Read attachment content and the inventoried URLs with your own tools — acli cannot fetch them; follow useful links recursively to a sensible depth. If the script is unavailable (missing tool, exit code 2/3), fall back to the JIRA MCP server.skills/code-review-bugsnag/scripts/load-issue.sh <URL|TRIPLE> (requires BUGSNAG_TOKEN), or skills/code-review-bugsnag/scripts/gather-issue-context.sh <URL|TRIPLE> for a full Markdown context brief in one pass (error header + latest event + in-project stacktrace + comments + linked issues + an inventory of external URLs). The JSON carries the error class, message, status, context, the in-project latestEvent.stacktrace frames (the entry point for the TDD reproduction), comments[], and linkedIssues[] (the mirrored GitHub issue/PR). If the script is unavailable (missing tool/token, exit code 2/3), fall back to a Bugsnag MCP server.comments[] directly off the JSON loaded in step 2 — do not issue a second listing call:Run @skills/prepare-issue-context/SKILL.md with MODE=resolve-issue and the same issue reference. It extracts every scenario from the assignment's Jak otestovat / acceptance criteria, maps each scenario to a concrete code path, seeds the development database with the records the scenarios depend on, and runs a one-shot reproduction. Stop immediately and surface the gap list to the user when the skill returns blocked: <count> open gap(s) — do not continue into problem analysis with incomplete context, because an implementing agent forced to guess at missing data is the most common source of hallucinated fixes. The scenario table the skill produces is the canonical input for the next step.
@skills/analyze-problem/SKILL.md and use the scenario table together with the current requirements as the input for step 7.@skills/analyze-problem/SKILL.md using the issue description, the scenario table, current requirements, and any available context, and use its output as the input for step 7.## TODO list for future tasks.Reading, mapping, and verifying come first; implementing comes last. This pre-flight is blocking — do not add or modify a single line of production code until all three steps pass, and never act on an assumption you have not confirmed by reading the code. (The context preparation above maps scenarios to code paths; this gate grounds the actual implementation in the real files you are about to change.)
Only after Read, Map, and Verify are complete may phase planning and implementation begin.
Before writing any code, decide how the in-scope work will be split into commits within the PR, applying the one phase = one commit rule from @rules/git/general.mdc Git Rules.
Phase 1, numbered milestones, ordered acceptance-criteria blocks, or a step-by-step plan written by the reporter.type(scope): description form per @rules/git/general.mdc) before starting implementation. This list is the commit plan for step 11.While reading and modifying the files required for the in-scope work, you may encounter problems that are unrelated to the current assignment but were already present in those files. The following categories qualify as pre-existing issues that must be fixed in this PR:
@rules/php/core-standards.mdc, @rules/laravel/*, @rules/sql/optimalize.mdc, etc.) or any other rule under .claude/rules/.@rules/security/backend.md, @rules/security/frontend.md, or @rules/security/mobile.md would flag (injection, missing authn/authz, unsafe deserialization, sensitive-data exposure, …).Rules:
@rules/git/general.mdc: fix(<scope>): pre-existing — <description> for bugs and security, refactor(<scope>): pre-existing — <description> for rule violations without behavior change.pre-existing — prefix is mandatory so reviewers can identify these commits at a glance (e.g. fix(user): pre-existing — null check before dispatching welcome mail).fix(<scope>): pre-existing — … (bug, security) — add the regression test in the same commit as the fix; the test must fail before the fix lands and pass after.refactor(<scope>): pre-existing — … (project-rule violation, behavior-preserving) — apply @rules/refactoring/general.mdc Test Coverage Contract: when the target lines are below 100% coverage, author a dedicated test(<scope>): cover <area> before pre-existing refactor commit before the refactor commit, and do not modify pre-existing tests inside the refactor commit (mechanical renames forced by the refactor itself stay exempt and must be flagged in the commit body).## TODO section with a one-line reason for deferral.Mandatory: strict TDD — failing test first, blocking.
Run @skills/test-driven-development/SKILL.md as the governing cycle for every bug fix. The Iron Law (NO PRODUCTION CODE WITHOUT A FAILING TEST FIRST) applies without exception:
@skills/test-driven-development/SKILL.md.@rules/security/backend.md Safe Validation & Error Messages (and @rules/security/frontend.md / @rules/security/mobile.md for the equivalent client surfaces) to every user-facing string the change touches, including every locale shipped by the project — auth, password-reset, sign-up, and account-lookup flows must return one generic message with one response shape so the wording cannot be used for identity enumeration, authorization-denied responses must not confirm the resource exists, and no stack traces / file paths / framework versions / DB or queue / cache identifiers / verbatim attacker input reach the response body.Apply @rules/security/backend.md Malicious Code & Supply-Chain Indicators (issue #549) to every line the change adds in application code, shell / deploy / CI scripts, and installer hooks — never introduce a silent curl -s … | sh, disabled TLS validation (curl -k, CURLOPT_SSL_VERIFYPEER => false, NODE_TLS_REJECT_UNAUTHORIZED=0), suppressed error output on a security-relevant command, or a hidden /tmp file paired with a detached background process; route downloads through allow-listed checksum-verified HTTPS and background work through the project's queue / scheduler.
php artisan migrate for Laravel projects, or the project-specific equivalent) before executing the affected tests or creating the pull request.Follow the workflow defined in references/quality-gates.md.
After implementation and pre-push quality gates pass, and before creating the pull request, run the review loop on the local changes:
@skills/code-review/SKILL.md directly in this skill's context, passing the current branch / diff context plus the instruction "run @skills/code-review/SKILL.md on the local changes and return the Critical / Moderate / Minor findings with their reproducer fields (Faulty Example, Expected Behavior, Test Hint, Suggested Fix)". Do not dispatch the review as a subagent — run it sequentially in the current context.PR-comment processing via @skills/process-code-review/SKILL.md remains the path used after a PR exists; it is not part of this pre-PR loop because it requires an open PR to operate on.
After the code review loop passes clean, and still before creating the pull request, validate the change:
@skills/security-review/SKILL.md directly in this skill's context, passing the current diff context plus the instruction "run @skills/security-review/SKILL.md on the local changes and return the Critical / Moderate / Minor findings". Do not dispatch the review as a subagent — run it sequentially in the current context.Resolve any Critical or Moderate finding from the security review before continuing. If a finding requires code changes, re-run the Code quality and review loop to re-validate.
@skills/test-like-human/SKILL.md is not part of this gate. It runs on demand only (via /test-like-human or an explicit follow-up after the PR is open); resolve-issue must never auto-chain into it.
Once review and testing are clean:
@rules/git/general.mdcgh pr create --draft …) per @rules/git/general.mdc Draft pull requests. The inline review loop above is the implementer's pre-PR self-check, not the authoritative code review — the authoritative code-review-github / process-code-review (the argos / athena ↔ talos convergence loop) still runs after the PR exists, so at creation time the PR is not yet ready to merge and agents will keep working on it. It is promoted out of Draft (gh pr ready) by @skills/process-code-review/SKILL.md once that review converges to 0 Critical + 0 Moderate.## Pre-existing fixes section with a one-line rationale so reviewers can review them independently of the assignment## TODO section as a checklist of potential follow-up tasksReporting is split by audience and destination:
Post the technical report as a comment on the GitHub PR, since that is where the codebase and testing state live. It must contain:
@skills/code-review/SKILL.md (findings addressed during the loop and the final clean state)@skills/security-review/SKILL.mdPost the non-technical report on the issue tracker where the task with the assignment was created (the original tracker, regardless of where the PR lives):
@rules/jira/general.mdc (no Markdown headings, fenced code blocks, or tables)skills/code-review-bugsnag/scripts/upsert-comment.sh <URL|TRIPLE> - (requires BUGSNAG_TOKEN; falls back to a Bugsnag MCP server when the script is unavailable). Also mirror it as a comment on the linked GitHub issue from linkedIssues[] when one exists.The non-technical report must be understandable by non-technical testers and product managers and contain:
After the reviews converged (no Critical / Moderate) and the reports are posted, run @skills/record-project-memory/SKILL.md with the converged task context and the PR link. It writes to the project memory file (docs/memory/PROJECT_MEMORY.md) only the lessons that clear the promotion bar in @rules/compound-engineering/general.mdc Compound Memory (per project) — a trivial task records nothing. This is how a review finding or a non-obvious decision from this PR stops recurring on the next task.
ready for review (or equivalent) label, apply it to the source issue once the PR is open to signal it is ready for reviewers. Skip this step when the project does not use such labels.skills/code-review-jira/scripts/transition-to-code-review.sh <KEY|URL>. This is the second sanctioned status transition (the first is the In Progress claim at the start of work via skills/code-review-jira/scripts/transition-to-in-progress.sh; per @rules/jira/general.mdc); the helper refuses any non-review target and only reports success after confirming the issue actually reached the review column. When it exits 5 — the review-status name differs for this project and could not be auto-resolved — discover the real name via the JIRA MCP server's available-transitions and re-run with it as the STATUS argument, or ask a human. Perform no other status transition; all others remain human-only.linkedIssues[]); do not invent a second link.@skills/record-project-memory/SKILL.md~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.