Sourced via Codex scan of github/spec-kit and deepseek-ai/deepseek-harness
(scan reports in granja/_temp/codex-logs/), then authored by Codex against
this repo's exact SKILL.md format/density, calibrated against
bastille-jail-provisioning/writing-implementation-plans/tdd. Spot-checked
two directly (write-feature-specification, harden-async-lifecycle-code) --
concrete, code-example-backed procedures, not generic advice.
From spec-kit: write-feature-specification, clarify-feature-specification,
audit-requirements-quality, analyze-spec-plan-task-consistency,
converge-implementation-to-spec.
From deepseek-harness: harden-async-lifecycle-code, test-real-entry-paths,
snapshot-agent-behavior, maintain-decision-records,
remove-reasoning-transcript-prose.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Evaluated the Stonewright WP MCP repo (github.com/cosmincraciun97/
stonewright-wp-mcp) per user request -- decided against adopting it or
its MCP server (this fleet already does WP work via shell+WP-CLI, and
its Gutenberg layer is thin wrapping over parse_blocks/serialize_blocks
we can already call directly). Its Elementor V3 _elementor_data
read/write pipeline is genuinely well-engineered, non-obvious, and worth
having as a reference: double-encoding trap, wp_slash-before-persist,
surgical patches that preserve unrecognized settings keys, and
readback+cache-clear+visual verification after write. Distilled into
this skill for CLI/wp-eval-based Elementor edits (not the MCP itself).
root@ works fine (standard key, same as every other host) — the
SSH-blocked claim was from a session that only tested malin@pinky.
Adds real survey detail: SDK path, no-JDK-on-host build pattern, the
shared Android emulator container.
Pinky was missing from the map entirely. Documents its purpose
(Docker/Linux-only workloads, esp. Android SDK/emulator builds) and the
current SSH access gap (root's key not authorized, user is malin) found
while chasing an apuntiq Android build.
Confirmed on Gitea 1.27.1 (2026-08-12): browser_download_url in the API
response points at an internal hostname (gitea.barky) but the file
downloads correctly once you swap in the instance's public hostname.
Verified end-to-end with a real binary asset (md5sum match) on a private
repo accessed via token.
Evaluated citeworthyio/seo-agent for reusable process knowledge. Relevant
to this fleet's WordPress content sites (granja travel news, content-agent
pipeline): a crawl-diagnose-approve-recrawl-measure loop for SEO metadata
changes, a three-layer AI-crawler accessibility audit (robots policy, bot
delivery, readable content), and a fail-closed method for generating and
safely injecting Article JSON-LD. Keyword research and citation-probe
pieces of the source repo were skipped as underdeveloped or too
infra-coupled to be reusable here.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Evaluated obra/superpowers and JuliusBrussee/caveman for gaps in the
existing library. These three fill real ones (plan-to-delegate handoff,
evidence-based review triage, completion vs. integration authority);
adapted for this fleet's Gitea/RLS/multi-delegate conventions. Everything
else in both repos duplicated existing skills or didn't fit (see README
Provenance note on caveman).
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
- server-fleet-map: add gringo row
- bastille-jail-provisioning: elevate default-deny-outbound to the standard
for every new jail; reference gringo's live pf.conf
- modded-app-update-pattern: new skill, fork/rebase pattern for locally
patched apps; uses tailnetatlas on gringo as the concrete example
- dependency-vuln-scanning: new skill, npm audit / pip-audit / osv-scanner
cadence for deployments and monthly thereafter
Real incident on the staging host: nat on $ext_if from <subnet> to any ->
($ext_if) silently failed to rewrite the source IP when that IP was
already aliased on the same interface, breaking all outbound jail traffic
with no error anywhere - just clean timeouts. Fixed by using an explicit
target IP instead of the interface macro. Cost real debugging time to
trace from "WordPress admin hangs after a PHP upgrade" back to this.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Two real gotchas from today's goddy->gringo Laravel migration: every jail
on an NPM-fronted host needs a dedicated listen port (8000+last-octet),
not just the shared port 80, or NPM cutover silently can't reach it even
though every direct/Host-header test passes. Separately, zsh ties a
variable literally named `path` to $PATH itself - overwriting it broke
every subsequent command in a config-editing script with no clear error.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Adapts the clean (no-profanity) SKILL.md variant from Mte90/linus-torvalds-skill,
distilled from 38,293 real Linus Torvalds code-review moves across two decades
of Linux kernel mailing list emails. The upstream project also ships a profane
"soul" persona variant, deliberately not installed here.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
New skill wordpress-plugin-staging-verification: use the persistent
staging-1 jail (real-world plugin set left active) instead of a
disposable clean-room jail, full verification checklist, and the
cosmetic-proc_open-error-vs-real-fatal distinction.
Extended bastille-jail-provisioning: bastille0-loopback-missing gotcha
(pass the interface explicitly), IP-alias-can-silently-fail-after-
recreate gotcha, host-reverse-proxy-vs-jail-IP curl mixup, Valkey as
part of the stock stack (correct FreeBSD package name, ACL auth
requirement).
Extended wordpress-plugin-conventions: drop-in source files
(object-cache.php/advanced-cache.php logic) must be excluded from any
glob-based plugin autoloader, or they redeclare WP core's own
wp_cache_*() functions and fatal -- real bug found and fixed live during
iWP Cache's first staging activation attempt.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
WordPress plugin rebrand/conventions/remote-CLI patterns, Gitea release
workflow, bastille jail provisioning, remote shell quoting safety, server
fleet map, delegate brief writing, and verification discipline -- all
derived from real incidents this session, plus two skills adapted (MIT
license, attributed) from obra/superpowers and andrej-karpathy-skills.