Skip to content
Development
Skill

/security-hygiene

Security hygiene for GSD's self-modifying skill and agent system. Use this skill whenever: creating, editing, or deleting skill files (.claude/skills/, .claude/commands/), modifying agent definitions (.claude/agents/), working with YAML configuration or chipset files, handling

From plugin
gsd-skill-creator
71102 skills61 agents26 commands1 MCP

Claude Code

$ npx -y skills add Tibsfox/gsd-skill-creator --skill security-hygiene --agent claude-code

SKILL.md

security-hygiene.SKILL.md
name: security-hygiene
description: >
  Security hygiene for GSD's self-modifying skill and agent system.
  Use this skill whenever: creating, editing, or deleting skill files
  (.claude/skills/, .claude/commands/), modifying agent definitions
  (.claude/agents/), working with YAML configuration or chipset files,
  handling JSONL observation data (.planning/patterns/), processing
  community-contributed skills or chipsets, any file path operations
  that could involve user input, or when installing/updating
  project-claude configuration. Also activates for discussions about
  skill-creator security, trust models, or content hygiene.
user-invocable: true
version: 1.0.0
format: 2025-10-02
triggers:
  - "for discussions about skill-creator security, trust models, or content hygiene"
updated: 2026-04-25
status: ACTIVE

Security Hygiene

Security Philosophy

This is a self-modifying system. Security should work like a helpful companion, not an adversarial checkpoint — zen and the art of programming. Tools protect by default, guide by suggestion, block only when there is a real reason.

Threat Surface

| Vector | Risk | Check | |---|---|---| | **Path traversal** | Skill names used in file paths could escape directory | Sanitize all skill names: alphanumeric, hyphens, underscores only. Reject `..`, `/`, `\`. | | **YAML deserialization** | Unsafe YAML loading executes arbitrary code | Use safe parsing only (`yaml.safe_load` or equivalent). Never `yaml.load` with untrusted input. | | **Data poisoning** | Append-only JSONL could contain injected entries | Validate entries on read: check schema, reject oversized entries, verify timestamps are monotonic. | | **Permission bypass** | Automated workflows might skip user confirmation | **Never bypass user confirmation for skill application**, even in YOLO mode. YOLO applies to GSD workflow commands, not skill modifications. | | **Cross-project leakage** | User-level skills might expose project-specific patterns | User-level skills must be generic. Project-specific patterns stay in project-level skills. | | **Observation privacy** | Pattern data could leak into shared repos | `.planning/patterns/` must be in `.gitignore`. Verify on any git operation. |

Content Hygiene Rules

When processing community-contributed content (skills, chipsets, LoRA adapters):

  • Check for embedded commands or script execution
  • Verify YAML does not contain unsafe tags (`!!python/object`, etc.)
  • Validate that skill descriptions match their actual content
  • Quarantine new community content for review before activation

Privacy Tier Taxonomy (4-tier, OOPS-08-P03)

All telemetry, observation data, and skill artefacts are classified into one of four privacy tiers. Telemetry writers MUST stamp every record with its tier and MUST NOT mix tiers in a single sink.

| Tier | Name | Description | Examples | |------|------|-------------|----------| | **A** | **Public** | No PII, no proprietary content; safe to publish externally. | Open-source skill descriptions, public release notes, anonymised aggregate metrics. | | **B** | **Internal** | Non-PII operational data; safe to share within the project team. | Phase activity counts, commit-type distributions, hook firing rates, build-time profiles. | | **C** | **Sensitive** | PII, credentials, authentication tokens, individual session transcripts. | `.env` contents, OAuth tokens, individual user prompts, raw conversation logs. | | **D** | **Restricted** | Regulated data, proprietary IP, Fox Companies content. | `.planning/fox-companies/` artefacts, `wasteland/` content, customer-identifiable records, anything subject to legal hold. |

Defaults and enforcement:

  • New telemetry writers default to **Tier B** unless an explicit tier label

is supplied at construction.

  • **Tier C** data MUST be encrypted at rest and MUST be excluded from any

artefact published outside the local repository (no `git push` of files containing Tier C content; no FTP sync; no inclusion in release notes).

  • **Tier D** data MUST never leave the `.planning/` tree or

`wasteland/` branch. Surface alignments in conversation only; never commit Tier D content to a public-facing path.

  • Mixed-tier sinks are FORBIDDEN — a writer that mixes Tier A and Tier C

records loses the ability to safely publish the Tier A subset.

Referenced by C5 W3.P6 tool-tracker (telemetry writer wiring) and the post-tool-use observation hook.

Authoring around the leak-scanner — don't re-trip the control (Lesson #10462)

The release-history publisher (`tools/release-history/publish.mjs`, `leakScan`) runs a hard leak-scan gate over every published chapter. Its effective patterns combine committed base patterns with operator-private patterns loaded from the gitignored `release-history.local.json`, so the scan is **operator-machine-specific**: a fresh CI checkout sees only the base patterns and never the local ones.

Two failure modes recur whenever you DOCUMENT leak-scan or security-hardening work:

1. **The control's own documentation re-trips it.** A retrospective that quotes a leak *pattern* verbatim (e.g. v1.49.588 quoting the narrowed private-path regex it was describing) matches that pattern and is HARD-BLOCKED — even though it contains no real secret. 2. **The recursion trap.** Documenting the *fix* for #1 by enumerating the private literals the control guards (company / email / credential-var) embeds those values into published content — a genuine leak the scanner correctly blocks. The v1.49.916 retrospective re-tripped exactly this way while documenting the v916 AC7 allowlist fix.

**Authoring rule: describe the pattern, never quote the literal.** In release notes, retrospectives, or docs that touch leak-scan work, refer to a pattern by name or shape ("the company-name local pattern", "the credential-var form") — never paste the regex source and never paste the private value.

**Allowlist-vs-scrub decision rule:**

  • The doc legitimate
Read more
@tibsfox
Ships withgsd-skill-creator

An adaptive learning and coprocessor architecture for Claude Code, built as an extension to GSD (open-gsd)

71102 skills61 agents1 MCP
Get the whole plugin

Stars on GitHub

Momentum

stars in total
71
Star history of Tibsfox/gsd-skill-creator on GitHub, a chart by star-history.com

Other skills on gsd-skill-creator.

aminet-index

aminet-index

Manages Aminet INDEX infrastructure: fetch, parse, cache, and incremental update of ~84,000-entry package database. Use when…

aminet-mirror

aminet-mirror

Selective Aminet package mirroring: single-package fetch, integrity verification, mirror state tracking, bulk download, and sync…

More skills from other plugins.

brainstorming
Auto-invoked

brainstorming

You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or…

@obra@obraInstall Skill
ask-matt

ask-matt

Ask which skill or flow fits your situation. A router over the skills in this repo.

skills10d309k
@mattpocock@mattpocockInstall Skill
accessibility
Auto-invoked

accessibility

Design, implement, and audit accessible UI to WCAG 2.2 Level AA across Web, iOS, and Android — semantic ARIA roles and labels,…

ecc12d293k
@affaan-m@affaan-mInstall Skill
compiler-commit

compiler-commit

Use when you want to verify compiler changes and commit with the correct convention. Runs tests, lint, and format, then commits…

react1d252k
@facebook@facebookInstall Skill

Questions about security-hygiene.

Which coding agents can use security-hygiene?
security-hygiene installs in Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode and Windsurf with the skills CLI, using each agent's flag shown on this page. Flowy's auto-invocation, which fires a skill when your prompt matches, runs in Claude Code only.