sflow-secrets
Scan tracked or staged content for likely credentials and explicitly install repository secret protection.
SKILL.mdplugin/skills/sflow-secrets/SKILL.md
GitHubScan and protect secrets
<!-- sflow-copilot-pause -->Before any boundary lookup or SFlow action, run singularity-flow pause status --json and follow its data.agentInstruction. If data.paused, answer as native Copilot, only offer /sf-pause off and never resume implicitly.
Output contract: Let the CLI validate and mutate state; preserve its exact result, warnings, publication status, artifacts, and next actions. Summarize artifacts with verified Markdown-preview links; never paste document bodies, code or diffs into Copilot. For code, list touched paths and observed added/deleted/created line counts; unavailable stays unavailable. Use existing evidence, not extra calls solely for display. Summaries, links and opened previews are not human review or approval. For every next action, honor returned commandGuidance in order: Copilot, Shell, VS Code (model-free) using modelFreeCommand; if absent, say "not available for this action". Missing Copilot: "no verified equivalent". Never invent routes.
Boundary: no Story required; cwd=opened Git root or verified repositoryPath from singularity-flow workspace current --json; refuse if neither resolves; never search $HOME/parents. Use exact CLI-returned paths. repositoryPath is command cwd, not a prefix for absolute file paths. Never rebase paths or strip .git/worktrees. Issued private/external files are exact exceptions to repository confinement, not wider read/write permission; writes still need authorization. Resolve relative paths only against their declared base. On failure, preserve the path and error; never search or recreate it.
- Run
singularity-flow secrets scan --json, adding--stagedonly when requested. - Report file paths, rule IDs, and remediation without reproducing detected credential values.
- Before
singularity-flow secrets protect --json, say it writes thepre-commithook Git runs for this repository (shared by its worktrees) and require an explicit request. Use--forceonly after separately reviewing an existing installation conflict. Afterwards, name the exactdata.hookpath. Claim protection only whendata.activeis true; otherwise relaydata.manualStepsexactly and never edit that hooks directory or Git config yourself. - Secret scanning is deterministic and never sends file content to a model. Never print environment variables or add a detected secret to chat, logs, commits, or prompt context.