~ / rigs / Smart-AI-Memory / attune-ai

Smart-AI-Memory/attune-ai

Persistent memory and receipt-verified workflows for Claude Code — plugin, MCP server, and spec-driven dev framework in one pip install.

↗ GitHub ★ 10 apache-2.0 updated 8d ago project Claude CodeCodex Claude plugin
share on X
ARCHETYPE
Skill Collector
Ten-plus skills loaded on demand. A procedural-knowledge library.
CONTEXT TAX · EVERY TURN
~27.0k tokens
Context hog · median rig: 2.3k · breakdown
GUARDRAILS
3/5
Blocks destructive commands · Pre-tool screening hook · No YOLO mode · details

Copy this rig

# review before running: this installs third-party code
$ claude mcp add attune-ai -e ANTHROPIC_<redacted> -e ATTUNE_REDIS_REQUIRED=YOUR_ATTUNE_REDIS_REQUIRED -- uv run python -m attune.mcp.server
$ claude mcp add attune-help -- uvx --from 'attune-help[plugin]' python -m attune_help.mcp.server
$ npx degit Smart-AI-Memory/attune-ai/.claude ./rig-attune-ai  # inspect, then merge into .claude/

MCP servers are added to Claude Code at local scope; env vars are shown as YOUR_… placeholders — we never store values. Files are fetched with degit into a separate folder so you can review before merging.

$ claude mcp add attune-ai -e ANTHROPIC_<redacted> -e ATTUNE_REDIS_REQUIRED=YOUR_ATTUNE_REDIS_REQUIRED -- uv run python -m attune.mcp.server
$ claude mcp add attune-help -- uvx --from 'attune-help[plugin]' python -m attune_help.mcp.server
$ npx degit Smart-AI-Memory/attune-ai/.agents/skills/agent .claude/skills/agent
$ npx degit Smart-AI-Memory/attune-ai/.agents/skills/attune-hub .claude/skills/attune-hub
$ npx degit Smart-AI-Memory/attune-ai/.agents/skills/attune .claude/skills/attune
$ npx degit Smart-AI-Memory/attune-ai/.agents/skills/author-feature .claude/skills/author-feature
$ npx degit Smart-AI-Memory/attune-ai/.agents/skills/brainstorm .claude/skills/brainstorm
$ npx degit Smart-AI-Memory/attune-ai/.agents/skills/bug-predict .claude/skills/bug-predict
$ npx degit Smart-AI-Memory/attune-ai/.agents/skills/bulk .claude/skills/bulk
$ npx degit Smart-AI-Memory/attune-ai/.agents/skills/catalog .claude/skills/catalog
$ npx degit Smart-AI-Memory/attune-ai/.agents/skills/coach .claude/skills/coach
$ npx degit Smart-AI-Memory/attune-ai/.agents/skills/code-quality .claude/skills/code-quality
$ npx degit Smart-AI-Memory/attune-ai/.agents/skills/commit-push-pr .claude/skills/commit-push-pr
$ npx degit Smart-AI-Memory/attune-ai/.agents/skills/cross-review .claude/skills/cross-review
$ npx degit Smart-AI-Memory/attune-ai/.agents/skills/deep-review .claude/skills/deep-review
$ npx degit Smart-AI-Memory/attune-ai/.agents/skills/dev .claude/skills/dev
$ npx degit Smart-AI-Memory/attune-ai/.agents/skills/discovery-sweep .claude/skills/discovery-sweep
$ npx degit Smart-AI-Memory/attune-ai/.agents/skills/doc-gen .claude/skills/doc-gen
$ npx degit Smart-AI-Memory/attune-ai/.agents/skills/docs-outbox .claude/skills/docs-outbox
$ npx degit Smart-AI-Memory/attune-ai/.agents/skills/docs .claude/skills/docs
$ npx degit Smart-AI-Memory/attune-ai/.agents/skills/elicit .claude/skills/elicit
$ npx degit Smart-AI-Memory/attune-ai/.agents/skills/fix-test .claude/skills/fix-test
$ npx degit Smart-AI-Memory/attune-ai/.agents/skills/fix .claude/skills/fix
$ npx degit Smart-AI-Memory/attune-ai/.agents/skills/help .claude/skills/help
$ npx degit Smart-AI-Memory/attune-ai/.agents/skills/image-analysis .claude/skills/image-analysis
$ npx degit Smart-AI-Memory/attune-ai/.agents/skills/memory-and-context .claude/skills/memory-and-context
$ npx degit Smart-AI-Memory/attune-ai/.agents/skills/personal-memory .claude/skills/personal-memory
$ npx degit Smart-AI-Memory/attune-ai/.agents/skills/pipeline .claude/skills/pipeline
$ npx degit Smart-AI-Memory/attune-ai/.agents/skills/plan .claude/skills/plan
$ npx degit Smart-AI-Memory/attune-ai/.agents/skills/planning .claude/skills/planning
$ npx degit Smart-AI-Memory/attune-ai/.agents/skills/quick-test .claude/skills/quick-test
$ npx degit Smart-AI-Memory/attune-ai/.agents/skills/rag-code-gen .claude/skills/rag-code-gen
$ npx degit Smart-AI-Memory/attune-ai/.agents/skills/recall .claude/skills/recall
$ npx degit Smart-AI-Memory/attune-ai/.agents/skills/refactor-plan .claude/skills/refactor-plan
$ npx degit Smart-AI-Memory/attune-ai/.agents/skills/release-prep .claude/skills/release-prep
$ npx degit Smart-AI-Memory/attune-ai/.agents/skills/release .claude/skills/release
$ npx degit Smart-AI-Memory/attune-ai/.agents/skills/roundtable .claude/skills/roundtable
$ npx degit Smart-AI-Memory/attune-ai/.agents/skills/security-audit .claude/skills/security-audit
$ npx degit Smart-AI-Memory/attune-ai/.agents/skills/simplify .claude/skills/simplify
$ npx degit Smart-AI-Memory/attune-ai/.agents/skills/smart-test .claude/skills/smart-test
$ npx degit Smart-AI-Memory/attune-ai/.agents/skills/spec .claude/skills/spec
$ npx degit Smart-AI-Memory/attune-ai/.agents/skills/testing .claude/skills/testing
$ curl -fsSL --create-dirs -o .claude/agents/PHASE_3_FINDINGS.md https://raw.githubusercontent.com/Smart-AI-Memory/attune-ai/main/agents/book_production/PHASE_3_FINDINGS.md

Merge into .claude/settings.json (project) or ~/.claude/settings.json (user). Hook commands reference scripts in the source repo — copy those too.

{
  "hooks": {
    "PreToolUse": [
      {
        "matcher": "Bash",
        "hooks": [
          {
            "type": "command",
            "command": "PY=$(command -v python3 || command -v python) && \"$PY\" \"$CLAUDE_PROJECT_DIR/src/attune/hooks/scripts/security_guard.py\""
          },
          {
            "type": "command",
            "command": "PY=$(command -v python3 || command -v python) && \"$PY\" \"$CLAUDE_PROJECT_DIR/src/attune/hooks/scripts/worktree_add_guard.py\""
          },
          {
            "type": "command",
            "command": "PY=$(command -v python3 || command -v python) && \"$PY\" \"$CLAUDE_PROJECT_DIR/src/attune/hooks/scripts/changelog_entry_guard.py\""
          }
        ]
      },
      {
        "matcher": "Edit|Write",
        "hooks": [
          {
            "type": "command",
            "command": "PY=$(command -v python3 || command -v python) && \"$PY\" \"$CLAUDE_PROJECT_DIR/src/attune/hooks/scripts/security_guard.py\""
          },
          {
            "type": "command",
            "command": "PY=$(command -v python3 || command -v python) && \"$PY\" \"$CLAUDE_PROJECT_DIR/src/attune/hooks/scripts/worktree_path_guard.py\""
          },
          {
            "type": "command",
            "command": "PY=$(command -v python3 || command -v python) && \"$PY\" \"$CLAUDE_PROJECT_DIR/src/attune/hooks/scripts/dirty_switch_guard.py\""
          },
          {
            "type": "command",
            "command": "PY=$(command -v python3 || command -v python) && \"$PY\" \"$CLAUDE_PROJECT_DIR/src/attune/hooks/scripts/detached_head_push_guard.py\""
          }
        ]
      }
    ]
  }
}

MCP servers (2)

serversourceest. tokens
python · "attune-ai"
env: ANTHROPIC_API_KEY, ATTUNE_REDIS_REQUIRED
pypi 2.5k
attune-help[plugin] · "attune-help" pypi 2.5k

Skills (49)

Subagents (1)

PHASE_3_FINDINGS—

Hooks (13)

eventmatcherruns
SessionStart*PY=$(command -v python3 || command -v python) && "$PY" "$CLAUDE_PROJECT_DIR/src/attune/hooks/scripts/help_freshness_nudge.py"
SessionStart*PY=$(command -v python3 || command -v python) && "$PY" "$CLAUDE_PROJECT_DIR/src/attune/hooks/scripts/starter_prompt_nudge.py"
SessionStart*PY=$(command -v python3 || command -v python) && "$PY" "$CLAUDE_PROJECT_DIR/src/attune/hooks/scripts/starter_reconciler.py"
Stop*PY=$(command -v python3 || command -v python) && "$PY" "$CLAUDE_PROJECT_DIR/src/attune/hooks/scripts/lessons_reminder.py"
PreToolUseBashPY=$(command -v python3 || command -v python) && "$PY" "$CLAUDE_PROJECT_DIR/src/attune/hooks/scripts/security_guard.py"
PreToolUseBashPY=$(command -v python3 || command -v python) && "$PY" "$CLAUDE_PROJECT_DIR/src/attune/hooks/scripts/worktree_add_guard.py"
PreToolUseBashPY=$(command -v python3 || command -v python) && "$PY" "$CLAUDE_PROJECT_DIR/src/attune/hooks/scripts/changelog_entry_guard.py"
PreToolUseEdit|WritePY=$(command -v python3 || command -v python) && "$PY" "$CLAUDE_PROJECT_DIR/src/attune/hooks/scripts/security_guard.py"
PreToolUseEdit|WritePY=$(command -v python3 || command -v python) && "$PY" "$CLAUDE_PROJECT_DIR/src/attune/hooks/scripts/worktree_path_guard.py"
PreToolUseEdit|WritePY=$(command -v python3 || command -v python) && "$PY" "$CLAUDE_PROJECT_DIR/src/attune/hooks/scripts/dirty_switch_guard.py"
PreToolUseEdit|WritePY=$(command -v python3 || command -v python) && "$PY" "$CLAUDE_PROJECT_DIR/src/attune/hooks/scripts/detached_head_push_guard.py"
PostToolUseEdit|WritePY=$(command -v python3 || command -v python) && "$PY" "$CLAUDE_PROJECT_DIR/src/attune/hooks/scripts/format_on_save.py"
PostToolUseBash|Edit|WritePY=$(command -v python3 || command -v python) && "$PY" "$CLAUDE_PROJECT_DIR/src/attune/hooks/scripts/telemetry_hook.py"

Permissions

deny (0)
—
ask (0)
—
allow (1)
Edit(tests/unit/**)

Similar rigs

copied ✓