Atlas / Skills / jrodrigopuca / local-agents

local-agentsSAFE

skills/jrodrigopuca/local-agents

Local Agents

Verdict
SAFE
Grade
B
Trust score
89 /100
Version
1.1
Hosts
5 documented
License
Apache-2.0
Stars
2
01

Overview

From the repository's own README, as read at the audited commit. Badges and raw HTML are left out.

A catalog of 15 specialized AI agents and 48 skills for software development, installable into Claude Code, opencode, Kiro CLI, Codex, Antigravity CLI, or any harness that can read files.

Each agent is a self-contained package: an identity, a way of reasoning, and the skills it loads on demand. They encode decision criteria, not task lists — if a section could be replaced by "just do X", it doesn't belong here.

npx github:jrodrigopuca/local-hero bootstrap --all --tool claude   # install the whole suite
npx github:jrodrigopuca/local-hero check                          # what changed upstream — writes nothing
npx github:jrodrigopuca/local-hero update                         # pull it and refresh every install

local-hero clones the catalog where you never have to look and runs its update.py; it needs node 24+ (npm 11), git and Python 3.9+. To work from a clone of your own instead:

git clone https://github.com/jrodrigopuca/local-agents.git
cd local-agents
./install.py --list                        # see what's available
./install.py --status                      # see what's installed, and if it's current
./install.py --refresh                     # bring every installed tool up to date
./update.py check                          # what changed on GitHub since you installed
./update.py update                         # pull it and refresh every install
./install.py --all --tool claude --dry-run # preview
./install.py --all --tool claude           # install the whole suite (global)
./install.py --all --tool claude --project ~/code/repo   # or vendor it into a repo

The roster

Read from source at commit d798b2ac2531OBSERVED · 2026-10-13
02

Install

Commands as the repository documents them. They are shown, not run.

git clone https://github.com/jrodrigopuca/local-agents.git
03

Host compatibility

What the documentation claims. We have not run a compatibility test.

HostStatusNotes
claude-codementioned
codexmentioned
copilotmentioned
cursormentioned
gemini-climentioned
04

What it tells the agent

The instruction file, verbatim from the audited commit — this is the text the model reads, and the surface the audit's instruction layer examines. Quoted here so you can judge it without cloning anything.

---
name: code-review
description: >
  Reviewing Swift/SwiftUI code as mentor: the severity system, the
  Apple-specific defect checklist, and review-as-teaching. Trigger: load when
  the user shares Swift, SwiftUI, UIKit, or AppKit code for review, feedback,
  or "is this okay?".
license: Apache-2.0
metadata:
  author: jrodrigopuca
  version: "1.1"
---

_Verified against Xcode 26 / iOS 26 / macOS 26 (September 2026). Apple moves
these facts yearly — if the year has changed, re-check a claim before teaching it._

## Critical Patterns

### 1. Review in three passes, report by severity

Pass 1 — **correctness & safety** (🔴): retain cycles, force unwraps, data
races, main-thread violations, leaked resources. Pass 2 — **design** (🟡):
logic in views, missing abstractions, state ownership, testability. Pass 3 —
**style** (🟢): naming, idiom, formatting. Report blockers first; never bury
a retain cycle under twelve naming nits. Every finding carries its failure
case ("this closure captures self strongly; when X outlives Y, the whole
graph leaks") — and when the code is genuinely good, say WHAT is good with
the same precision.

### 2. The Swift-specific 🔴 checklist

- **Retain cycles**: `self` captured strongly in escaping closures stored by
  `self` (handlers, subscriptions, timers); delegates declared strong. A
  bare `Task { }` retains `self` only until it finishes — that is not a
  cycle; the leak needs BOTH `self` storing the task AND the task never
  completing (an endless `for await`). `[weak self]` sprinkled on every Task
  is cargo cult: prove the ownership graph, and cancel stored tasks on scope
  exit instead.
- **Force unwraps** (`!`, `try!`, `as!`): each one is a crash with a date TBD.
  Acceptable only with a written invariant ("IBOutlet after viewDidLoad") —
  otherwise `guard let` with a real fallback path.
- **Concurrency**: UI state touched off the main actor; shared mutable state
  without actor/lock protection; `Task` fire-and-forget hiding errors;
  blocking calls inside actors. In Swift 6 language mode, isolation and
  Sendable violations are compile errors; blocking inside an actor and
  fire-and-forget Tasks are NOT — the compiler is an ally for the first two
  only. And under Xcode 26's MainActor default with caller-actor async, the
  new 🔴 runs the other way: heavy work silently on main because nobody
  marked it `@concurrent` (see [state-architecture #6](../state-architecture/SKILL.md)).
- **Error swallowing**: `try?` discarding errors the user needs to see;
  empty catch blocks — an error that vanishes silently becomes QA's
  [flow-hunting](../../../qa/skills/flow-hunting/SKILL.md) finding later.

### 3. The SwiftUI 🟡 checklist

- **Logic in the view**: formatting, filtering, network calls inline in
  `body` → belongs in the ViewModel/model; `body` is a pure function of
  state, and every recomputation runs it.
- **State ownership**: `@State` for view-local only; one source of truth per
  piece of state — two views each "owning" a copy is the bug factory;
  `@Binding` down, not state duplicated down.
- **Observation hygiene**: with `@Observable`, a view re-evaluates only when
  a property its `body` READ changes — so "re-renders on unrelated changes"
  is the `ObservableObject`/`@Published` smell (any published change
  invalidates every observer), and `ObservableObject` in new code is the
  finding. For `@Observable` models the finding is a `body` that reads far
  more than it shows: narrow what `body` touches or split into subviews
  (diffing works per view).
- **SwiftData**: `ModelContext` or `@Model` objects crossing actors 🔴 (not
  Sendable); `@Query` inside a ViewModel 🟡 (view-only, main-actor);
  relationships without delete rules 🟡; a schema change in a shipped app
  without a `VersionedSchema` + migration plan 🔴 — that is a crash on
  upgrade, not on first install.
- **Untested-by-omission** 🟡: a ViewModel behind a protocol-fronted service
  with no Swift Testing target is testability that never cashed in; and a
  `@MainActor` ViewModel's tests are `@MainActor`/awaited or they don't
  compile in Swift 6.
- **The missing states**: view renders happy path only — where are loading,
  empty, error? (The screen-state enum from
  [state-architecture](../state-architecture/SKILL.md), and the ux-ui
  [five states (`ux-flows`)](../../../ux-ui/skills/ux-flows/SKILL.md) — same table.)

### 4. Platform-honesty: iOS code isn't Mac code automatically

When the target includes macOS: check window/scene assumptions (Mac has many
windows, resizable), keyboard/menu/right-click support, `NavigationSplitView`
over stack navigation for wide layouts, sandbox entitlements for file access.
Flag "iOS-shaped" code shipped to Mac as 🟡 — it runs, and it feels like a
port, which Mac users smell instantly.

### 5. Review as teaching: pattern over instance

The user's growth beats the diff. When the same mistake appears three times,
teach the PATTERN once (with the underlying rule: "closures that outlive the
call need an ownership decision") instead of flagging three instances — then
have them find the third occurrence themselves. One concept TAUGHT per review
(mentorship contract #7); the rest goes to pending topics. That limits the
teaching, never the report: every blocker is named in this review, whatever
the count — a crash moved to pending topics is a crash shipped.

## Resources

- Sibling skills: [state-architecture](../state-architecture/SKILL.md) (where
  the design findings point), [debugging](../debugging/SKILL.md) (when a
  finding needs a repro)
- Generic review altitude and severity honesty:
  [senior-dev/pairing](../../../senior-dev/skills/pairing/SKILL.md),
  [architect/design-review](../../../architect/skills/design-review/SKILL.md)
05

Trust audit

SAFEgrade B · trust 89/100 Nothing in the source contradicts what it says it does. Grade A is reserved for packages that have also passed the behavioural sandbox.

LayerWhat it checksResult
L0Provenance & inventoryPASS
L1Static analysis of the codePASS
L2Instruction surface (what it tells the agent)PASS
L3Class-specific surfacePASS
L4Behavioural (sandbox)SKIPPED

What the source does

Filesystem
declared (2 observation(s))
Network
none-observed
Shell
none-observed
Dependencies
pinned
Secrets in source
none-found

Findings (5)

INFOPrompt injection · prompt.authority_framing · CWE-94, CWE-1427
apple-dev/AGENTS.md:31
You are a Senior Apple-Platforms Engineer — Swift since 1.0, Objective-C before
INFOPrompt injection · prompt.authority_framing · CWE-94, CWE-1427
architect/AGENTS.md:42
You are a Senior Software Architect and mentor — 15+ years of experience, GDE and
INFOPrompt injection · prompt.authority_framing · CWE-94, CWE-1427
data-ml/AGENTS.md:31
You are a Senior Data & Machine Learning Engineer — you turn raw data into
INFOPrompt injection · prompt.authority_framing · CWE-94, CWE-1427
dba/AGENTS.md:43
You are a Senior Database Engineer — the OWNER of the data. Applications get
INFOPrompt injection · prompt.authority_framing · CWE-94, CWE-1427
devops/AGENTS.md:30
You are a Senior DevOps / Site Reliability Engineer — you own the path from

Gates applied: no_behavioural_pass.

Audited 2026-10-13 · audit v0.4.1 · source sha d798b2ac2531full audit observations/trust-audit/skill/jrodrigopuca__local-agents.json · Report an issue / request a re-scan
06

Audit history

Every audit this skill has had.

DateSourceVerdictGradeScoreChange
2026-10-13d798b2ac2531SAFEB89first audit
07

Questions

What does the local-agents skill do?

Local Agents

Is local-agents safe to install?

The audit found nothing in the source that contradicts what it says it does, and graded it B (89/100). Grade A is held back for packages that have also passed a sandboxed behavioural run, which is why a clean skill reads B.

What can local-agents access on my machine?

The audit observed that it reads or writes files. Each of those is consistent with what it says it does. Secrets in the source: none found.

What do I need installed to use local-agents?

Its own instructions reference self. Dependencies are pinned to exact versions.

Which assistants does local-agents work with?

Its documentation mentions claude-code, codex, copilot, cursor and gemini-cli. That is what the text claims, not a compatibility test we ran.

How current is this page?

The grade is for one exact copy of the source (d798b2ac2531), read on 2026-10-13. The repository is watched, and a new audit runs when it changes — this is the first audit.

Advertisement