project-init

A project-startup settings file with hooks that run when a session begins, before commands, after file edits, and when notifications appear.

In plain words
What is it for?
It loads session context, scans shell commands for secrets, checks edited files against documentation, and denies commands such as forced pushes, hard resets, and recursive deletion.
Why use it?
It adds checks for secrets, documentation synchronisation, and several dangerous commands before or after the agent acts.

Settings file for Claude Code

Install

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.

agentmods
npx agentmods add settings/whchoi98/project-init/settings
Clone the repo
git clone --depth 1 https://github.com/whchoi98/project-init

Made for: Claude Code.

Per session not measured What this adds to a session before it is invoked.
When invoked not measured Not applicable: nothing here is loaded into a session.
Security scan D 3 findings. Scan, not verified.
Origin original No closer match found in the catalogue.
Security

Grade D, and why

project-init scanned grade D with 3 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.

Asks for rootmediumPrivilege escalation

A mod that escalates privileges can change anything on the machine, not only the project.

"Bash(chmod 777:*)",

Recursive force deletehighDestructive command

rm -rf with a variable or a broad path is one typo away from removing the wrong tree.

"Bash(rm -rf:*)",

Makes network callslowCapability

Not a fault in itself. Listed so you know the mod talks to something, and to what.

"Bash(curl*| bash*)",
Origin

Copies of this mod

1 near-identical copy found in the catalogue:

  • settings — 86% identical, 14 lines differ
.claude/settings.json · 64 lines

What it actually says

{
  "permissions": {
    "allow": [],
    "deny": [
      "Bash(rm -rf:*)",
      "Bash(rm -r:*)",
      "Bash(git push --force:*)",
      "Bash(git reset --hard:*)",
      "Bash(git clean -f:*)",
      "Bash(chmod 777:*)",
      "Bash(curl*| bash*)",
      "Bash(wget*| bash*)",
      "Bash(eval:*)",
      "Bash(python3 -c*import os*)"
    ]
  },
  "hooks": {
    "SessionStart": [
      {
        "matcher": "",
        "hooks": [
          {
            "type": "command",
            "command": "bash .claude/hooks/session-context.sh 2>/dev/null || true"
          }
        ]
      }
    ],
    "PreToolUse": [
      {
        "matcher": "Bash",
        "hooks": [
          {
            "type": "command",
            "command": "bash .claude/hooks/secret-scan.sh 2>/dev/null || true"
          }
        ]
      }
    ],
    "PostToolUse": [
      {
        "matcher": "Write|Edit",
        "hooks": [
          {
            "type": "command",
            "command": "bash .claude/hooks/check-doc-sync.sh \"$TOOL_INPUT_PATH\" 2>/dev/null || true"
          }
        ]
      }
    ],
    "Notification": [
      {
        "matcher": "",
        "hooks": [
          {
            "type": "command",
            "command": "bash .claude/hooks/notify.sh \"$EVENT\" \"$MESSAGE\" 2>/dev/null || true"
          }
        ]
      }
    ]
  }
}
Changes

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.

  1. yesterday First seen · 64 lines scan D bdd3ef51cfe1

Subscribe to this mod's changes

project-init is a settings file published in the GitHub repository whchoi98/project-init (2 stars, last pushed 1mo ago), licensed MIT. Its token cost is not measured: this kind of file is read by the harness, not the model. A static security scan graded it D with 3 findings (asks for root, recursive force delete, makes network calls). No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.