Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx agentmods add skills/kouroshez/coding-os/phpnpx skills add kouroshez/coding-os --skill phpgit clone --depth 1 https://github.com/kouroshez/coding-osWhat it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5 | $0.00155 | $0.01361 |
| Opus 5 | $0.00077 | $0.00681 |
| Sonnet 5 | $0.00031 | $0.00272 |
| Haiku 4.5 | $0.00015 | $0.00136 |
Grade A, and why
php scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured yesterday.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 117 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Modern PHP
PHP earned its insecure reputation from a decade of mysql_query("...$_GET..."). Modern PHP (8.3+) is a typed, fast, well-tooled language — the craft is using its type system and PDO, and never trusting $_GET/$_POST/$_REQUEST near a query, a shell, or output.
Scan PHP for the classic dangerous patterns:
python3 scripts/scan_php_smells.py src/**/*.php
Use the 8.x type system
// Wrong — untyped, mutable, verbose, no guarantees
class Money {
public $amount;
public $currency;
function __construct($amount, $currency) { $this->amount = $amount; $this->currency = $currency; }
}
// Correct — typed, readonly, promoted constructor params, enum
enum Currency: string { case USD = 'USD'; case EUR = 'EUR'; }
final class Money {
public function __construct(
public readonly int $amount, // promoted + readonly = immutable
public readonly Currency $currency,
) {}
}
declare(strict_types=1); at the top of every file makes type declarations
enforced, not coerced. Use readonly for value objects, enum for fixed sets,
match (exhaustive, strict ===) over switch, and union/nullable types. Detail
→ references/modern-php.md.
Never build SQL from request data
// Wrong — SQL injection, the canonical PHP breach
$id = $_GET['id'];
$db->query("SELECT * FROM users WHERE id = $id");
// Correct — PDO prepared statement; the value never touches the SQL text
$stmt = $pdo->prepare('SELECT * FROM users WHERE id = ?');
$stmt->execute([$_GET['id']]);
Use PDO with prepared statements (or an ORM) for every query. The legacy
mysql_* functions are removed; mysqli without bound params is the same hole.
Query craft (parameterization, joins, plans) is owned by
sql-authoring.
Escape on output, validate on input
// Wrong — reflected XSS
echo "<p>Hello {$_GET['name']}</p>";
// Correct — escape for the output context
echo '<p>Hello ' . htmlspecialchars($_GET['name'], ENT_QUOTES, 'UTF-8') . '</p>';
What ships with it
5 files beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- yesterday First seen · 117 lines · 155 tokens per session scan A 79ccfa93321a
php is a skill published in the GitHub repository kouroshez/coding-os (6 stars, last pushed yesterday), licensed Apache-2.0. It adds 155 tokens to every session and 1,361 once invoked, about $0.0008 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.
Other skills, from other repositories
graph-mutation-plan
Cookbook for composing an applygraphmutations plan — stable entitykey patterns, the canonical label/edge vocabulary, evidence/invalidation/confidence discipline, and a worked example. Load this when building a non-trivial mutation plan.
potpie-infra-architecture
Use for project infra and architecture context: environments, adapters, runtime configuration, deployments, service dependencies, datastores, API contracts, ownership, incidents, and dependency blast radius.
wiki-context-pack
Produce a token-bounded, citation-ready context slice from an existing Obsidian vault for a downstream agent or task. Use for "/wiki-context-pack", "use my vault as context", "context slice for X", "pack the wiki for my agent", or "bounded context for Y".
alfworld-receptacle-finder
Searches for a suitable empty or appropriately occupied receptacle (like a shelf or table) to place an object. Use when you are holding an object that needs to be stored or placed and must find a receptacle that meets the placement criteria. Examines candidate receptacles by navigating to and inspecting each one until…
alfworld-search-pattern-executor
Systematically searches a sequence of likely locations for a target object based on common sense. Use when you need to find a specific object and know which receptacles to check but not which one contains it. Takes a list of candidate receptacles, orchestrates navigation and inspection, and outputs when the target is…
ux-ui-analyze-single-page
Analyze exactly one captured UI page (from uxuimap screenshots + request JSON) and immediately write/update uxuimap/pages/{page}.md in neutral descriptive language. Use when asked to analyze screenshots, rewrite corresponding analysis immediately, or avoid memory/context saturation.