Commit Graph
37 Commits
Author SHA1 Message Date
MalinandClaude Sonnet 5 d6ad3fa684 Merge multisite/blast-radius safety practices into wordpress-cli-remote-execution
Both the skills.sh and autoskills.sh scans (dispatched this session, see
granja/_temp/codex-logs/{skills-sh-scan,autoskills-sh-scan}.md) independently
flagged wordpress/agent-skills' official wp-wpcli-and-ops module as high-value
source material for this skill: safe search-replace, db export/import,
multisite targeting, and deterministic environment inspection before any
destructive command.

Merged in (adapted to this fleet's bastille cmd + su -m www invocation model,
not the upstream's local/SSH-direct WP-CLI assumption):
- pre-write environment/blast-radius inspection sequence (plain wp-cli calls
  through the existing invocation pattern, not the upstream's Node.js
  wpcli_inspect.mjs script)
- multisite targeting checklist (--url requirement, site list iteration)
- safe search-replace/domain-migration workflow (backup, dry-run, flush)
- db export/import, plugin/theme, and cron/cache-flush guardrails

Ties the upstream --allow-root warning to this fleet's own documented
wp-content ownership-drift incident (docs/server-granja.md) and cites the
real jail counts/CVE rollout from docs/server-granja.md, server-staging.md,
and server-gringo.md for grounding. Provenance noted in the file with source
URLs. Deliberately left out generic plugin-development/performance/PHPStan
material from the same upstream repo — out of scope for this remote-execution
skill.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-15 21:25:44 +02:00
MalinandClaude Sonnet 5 3b8ef056cb Add mailcow-diagnostics skill for multi-tenant mailcow-dockerized ops
External DNS/SPF/DKIM/DMARC/MTA-STS/TLS/DNSBL diagnostics adapted from
arova-ai/agent-skills' email-server-diagnostics, combined with this
session's own direct mailcow migration experience (geeky/posta/postman
-> spoof consolidation): real container naming pattern
(mailcowdockerized-<service>-mailcow-1), mailcow's own official
helper-scripts/backup_and_restore.sh and update.sh, the acme-mailcow
cert container, and an explicit multi-tenant blast-radius guardrail
since one instance serves many unrelated businesses' domains.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-15 21:25:05 +02:00
MalinandClaude Sonnet 5 65c01ddb43 feat: add hallmark design skill
Anti-AI-slop design skill (greenfield pages, audits, redesigns, design
extraction from URLs/screenshots) -- installed and validated in an
earlier session, was sitting untracked. Full reference library:
components, macrostructures, themes, genres, verbs (audit/redesign).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-15 14:29:38 +02:00
MalinandClaude Sonnet 5 051688e196 feat: 10 new skills scouted from spec-kit and deepseek-harness
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>
2026-08-15 14:28:54 +02:00
Malin 8f34371a9f skills: add wordpress-elementor-safe-cli-editing
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).
2026-08-13 18:16:39 +02:00
Malin 09a96c74dc docs: correct pinky's SSH access note in server fleet map
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.
2026-08-13 13:57:32 +02:00
Malin 2fe7e44dc1 docs: add pinky to server fleet map
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.
2026-08-13 13:32:27 +02:00
Malin 86b06e5b47 Add Obsidian vault memory skill 2026-08-12 18:56:23 +02:00
Malin a44bf184b9 Add API, migration, and browser verification skills 2026-08-12 18:16:17 +02:00
Malin f69f2580b0 docs: gitea-release-workflow — asset downloads work via public host substitution
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.
2026-08-12 13:06:54 +02:00
MalinandClaude Sonnet 5 ae61c7ce7b skills: add SEO/AEO audit and grounded-JSON-LD skills from citeworthyio/seo-agent
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>
2026-08-11 13:28:29 +02:00
MalinandClaude Sonnet 5 c7ce105e00 skills: add writing-implementation-plans, receiving-code-review, finishing-development-branches
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>
2026-08-11 13:21:03 +02:00
Malin fa7c367420 skills: fleet map, default-deny standard, modded-app and vuln-scan skills
- 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
2026-08-08 14:01:43 +02:00
MalinandClaude Sonnet 5 be36bcc802 docs: document pf NAT interface-macro silent-no-op bug on shared-IP-alias hosts
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>
2026-08-07 21:04:24 +02:00
MalinandClaude Sonnet 5 106e61cfbb docs: document NPM dedicated-port jail convention and zsh $path footgun
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>
2026-08-07 19:44:23 +02:00
Kimi Code 27e3a2975f docs: list new skills and add external-skill vetting note 2026-08-07 18:58:38 +02:00
Kimi Code 02ecce3e3e feat: add tdd skill 2026-08-07 18:58:34 +02:00
Kimi Code 4cba99eb72 feat: add resolving-merge-conflicts skill 2026-08-07 18:58:34 +02:00
Kimi Code f4c52dee19 feat: add research skill 2026-08-07 18:58:34 +02:00
Kimi Code 950e646e7a feat: add redesign-existing-projects skill 2026-08-07 18:58:34 +02:00
Kimi Code 1c00431a0d feat: add handoff skill 2026-08-07 18:58:34 +02:00
Kimi Code 8d44dba880 feat: add full-output-enforcement skill 2026-08-07 18:58:34 +02:00
Kimi Code 8c126125cb feat: add diagnosing-bugs skill 2026-08-07 18:58:34 +02:00
Kimi Code 779d4ee693 feat: add codebase-design skill 2026-08-07 18:58:34 +02:00
Kimi Code 3e8b3ae917 feat: add code-review skill 2026-08-07 18:58:34 +02:00
MalinandClaude Sonnet 5 7c066c8f65 feat: add linus-torvalds-code-review skill
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>
2026-08-07 17:36:21 +02:00
Malin 8dbe1eb9c1 docs: document the proxy_pass cutover outage and its fix 2026-08-03 14:29:27 +02:00
Malin 4eff29939e docs: add disk-space-check discipline after a real venus MariaDB outage caused by bulk jail creation 2026-08-03 13:47:46 +02:00
Malin d837c6dc1d docs: add venus-specific gotchas from the first production migration (live sysctl, resolv.conf inheritance, STP display red herring) 2026-08-03 13:38:16 +02:00
Malin eb7c63d1f9 feat: document the dedicated-subnet jail migration pattern, update staging jail identity 2026-08-03 13:17:57 +02:00
Malin c868eae35f fix: wordpress-plugin-rebrand's updater-wiring example could reintroduce the dead-updater bug on singleton-class plugins 2026-08-03 06:25:28 +02:00
Malin 3242dadc47 feat: document the nested-add_action-at-lower-priority hook bug (real incident, 3 plugins affected) 2026-08-03 06:19:50 +02:00
MalinandClaude Sonnet 5 eeb08a0d77 feat: capture staging-verification lessons from iWP Cache deployment
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>
2026-08-02 21:39:39 +02:00
Malin 6a9c364012 feat: add parallel-delegate-shared-files skill from iWP Cache incident 2026-08-02 21:09:58 +02:00
iWP Claudy 5af3379470 Add design/accessibility/security/sanitization skills 2026-08-02 20:15:46 +02:00
iWP Claudy 39a637410c Initial skill library: 9 skills for delegate briefs
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.
2026-08-02 20:08:29 +02:00
Malin 9382b1efdc Initial commit 2026-08-02 18:02:40 +00:00