Skip to content

Commit 0c7794e

Browse files
cwinvestmentsclaude
andcommitted
fix: portable paths, TTS toggle, junction merge, skill descriptions (issues #2 #3 #4, PR #1)
- Replace all hardcoded C:/Projects/memstack paths with $MEMSTACK_PATH in 7 skills - Add MEMSTACK_DISABLE_TTS=true env var toggle to pre-tool-notify.sh - Fix start-memstack.bat junction logic: merge rules into existing .claude dirs - Expand api-integration skill description with auth/circuit-breaker details - Add Pro upsell note to secrets-scanner skill Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
1 parent 5698e6a commit 0c7794e

11 files changed

Lines changed: 55 additions & 35 deletions

File tree

.claude/hooks/pre-tool-notify.sh

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,11 @@
11
#!/bin/bash
22
# Pre-tool TTS notification — reads config from .claude/tts-config.json
33

4+
# TTS notifications can be disabled by setting MEMSTACK_DISABLE_TTS=true
5+
if [ "$MEMSTACK_DISABLE_TTS" = "true" ]; then
6+
exit 0
7+
fi
8+
49
CONFIG_FILE="${BASH_SOURCE%/*}/../tts-config.json"
510

611
# Default message

skills/automation/api-integration/SKILL.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
---
22
name: memstack-automation-api-integration
3-
description: "Use this skill when the user says 'API integration', 'connect APIs', 'sync data', 'data mapping', 'rate limiting', or needs system-to-system connectors with authentication, rate limit handling, and error recovery. Do NOT use for visual n8n workflows or webhook receiving."
3+
description: "Use this skill when the user says 'API integration', 'connect APIs', 'sync data', 'data mapping', 'rate limiting', or needs system-to-system connectors with authentication, rate limit handling, and error recovery. Generates API integration code with authentication (OAuth, API key, JWT), request/response mapping, rate limit handling, error recovery with circuit breakers, and sync monitoring. Do NOT use for visual n8n workflows or webhook receiving."
44
version: 1.0.0
55
license: "Proprietary — MemStack™ Pro by CW Affiliate Investments LLC. See LICENSE.txt"
66
---

skills/diary/SKILL.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -89,17 +89,17 @@ When the user asks to save a diary, keep these in mind:
8989

9090
4. **Save to SQLite database** (primary storage):
9191
```bash
92-
python C:/Projects/memstack/db/memstack-db.py add-session '{"project":"<name>","date":"<YYYY-MM-DD>","accomplished":"<bullets>","files_changed":"<bullets>","commits":"<bullets>","decisions":"<bullets>","problems":"<bullets>","next_steps":"<bullets>","duration":"<estimate>","raw_markdown":"<full text>"}'
92+
python "$MEMSTACK_PATH/db/memstack-db.py" add-session '{"project":"<name>","date":"<YYYY-MM-DD>","accomplished":"<bullets>","files_changed":"<bullets>","commits":"<bullets>","decisions":"<bullets>","problems":"<bullets>","next_steps":"<bullets>","duration":"<estimate>","raw_markdown":"<full text>"}'
9393
```
9494

9595
5. **Also save decisions as insights** for cross-project search:
9696
```bash
97-
python C:/Projects/memstack/db/memstack-db.py add-insight '{"project":"<name>","type":"decision","content":"<decision>","context":"Session <date>","tags":"<project>"}'
97+
python "$MEMSTACK_PATH/db/memstack-db.py" add-insight '{"project":"<name>","type":"decision","content":"<decision>","context":"Session <date>","tags":"<project>"}'
9898
```
9999

100100
6. **Update project context** with last session date:
101101
```bash
102-
python C:/Projects/memstack/db/memstack-db.py set-context '{"project":"<name>","last_session_date":"<YYYY-MM-DD>"}'
102+
python "$MEMSTACK_PATH/db/memstack-db.py" set-context '{"project":"<name>","last_session_date":"<YYYY-MM-DD>"}'
103103
```
104104

105105
7. **Also save markdown copy** to `memory/sessions/{date}-{project}.md` (export format, human-readable backup)

skills/echo/SKILL.md

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ If you're thinking any of these, STOP — you're about to skip the protocol:
4747

4848
Try LanceDB vector search first for best-quality results:
4949
```bash
50-
python C:/Projects/memstack/skills/echo/search.py "<keywords>" --top-k 5
50+
python "$MEMSTACK_PATH/skills/echo/search.py "<keywords>" --top-k 5
5151
```
5252
5353
If this returns results, present them with scores, dates, and source files.
@@ -56,15 +56,15 @@ If this returns results, present them with scores, dates, and source files.
5656
5757
Always run SQLite search to supplement vector results or as fallback if Step 1 fails:
5858
```bash
59-
python C:/Projects/memstack/db/memstack-db.py search "<keywords>" --project <project>
59+
python "$MEMSTACK_PATH/db/memstack-db.py" search "<keywords>" --project <project>
6060
```
6161
6262
### Step 3: Recent Sessions and Insights
6363
6464
For additional context:
6565
```bash
66-
python C:/Projects/memstack/db/memstack-db.py get-sessions <project> --limit 5
67-
python C:/Projects/memstack/db/memstack-db.py get-insights <project>
66+
python "$MEMSTACK_PATH/db/memstack-db.py" get-sessions <project> --limit 5
67+
python "$MEMSTACK_PATH/db/memstack-db.py" get-insights <project>
6868
```
6969
7070
### Step 4: Markdown Fallback
@@ -90,19 +90,19 @@ If nothing found across all sources — say clearly: "No session logs found for
9090
9191
To re-index sessions after new diary entries (normally done automatically):
9292
```bash
93-
python C:/Projects/memstack/skills/echo/index-sessions.py
93+
python "$MEMSTACK_PATH/skills/echo/index-sessions.py
9494
```
9595
9696
Use `--force` to re-embed all content (e.g., after changing embedding model):
9797
```bash
98-
python C:/Projects/memstack/skills/echo/index-sessions.py --force
98+
python "$MEMSTACK_PATH/skills/echo/index-sessions.py --force
9999
```
100100
101101
## Inputs
102102
- Keywords from the user's prompt (project name, feature name, date range)
103-
- Vector DB: `C:\Projects\memstack\memory\vectors\lancedb\` (via LanceDB)
104-
- Database: `C:\Projects\memstack\db\memstack.db` (via memstack-db.py)
105-
- Fallback: `C:\Projects\memstack\memory\` (legacy markdown files)
103+
- Vector DB: `$MEMSTACK_PATH/memory\vectors\lancedb\` (via LanceDB)
104+
- Database: `$MEMSTACK_PATH/db\memstack.db` (via memstack-db.py)
105+
- Fallback: `$MEMSTACK_PATH/memory\` (legacy markdown files)
106106
107107
## Outputs
108108
- Ranked results with semantic similarity scores

skills/familiar/SKILL.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ Then execute the protocol below.
2424
- Working directory path
2525
- Full task description with acceptance criteria
2626
- Any shared context (database schema, API contracts, types)
27-
- MemStack activation line: `Read C:\Projects\memstack\MEMSTACK.md`
27+
- MemStack activation line: `Read $MEMSTACK_PATH/MEMSTACK.md`
2828
- CC Monitor reporting snippet (if configured in config.json)
2929
4. **Add coordination notes** — specify what each session should NOT touch to avoid conflicts
3030
5. **Define merge order** — which session's work should be committed first

skills/forge/SKILL.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ Then execute the protocol below.
3434
- Example usage
3535
- Level history starting at Lv.1
3636

37-
3. **Write the file** to `C:\Projects\memstack\skills\{name}.md`
37+
3. **Write the file** to `$MEMSTACK_PATH/skills/{name}.md`
3838

3939
4. **Update MEMSTACK.md** — add a new row to the Skill Index table
4040

skills/project/SKILL.md

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ Then execute the protocol below.
2929
2. **Run git status** to capture uncommitted state
3030
3. **Save project context to SQLite:**
3131
```bash
32-
python C:/Projects/memstack/db/memstack-db.py set-context '{"project":"<name>","status":"active","current_branch":"<branch>","last_session_date":"<YYYY-MM-DD>","known_issues":"<issues>","backlog":"<next tasks>"}'
32+
python "$MEMSTACK_PATH/db/memstack-db.py" set-context '{"project":"<name>","status":"active","current_branch":"<branch>","last_session_date":"<YYYY-MM-DD>","known_issues":"<issues>","backlog":"<next tasks>"}'
3333
```
3434
4. **Also save markdown handoff** to `memory/projects/{project}-{date}.md`
3535
5. **Present the ready-to-paste prompt** for the next CC session
@@ -38,15 +38,15 @@ Then execute the protocol below.
3838

3939
1. **Load project context from SQLite:**
4040
```bash
41-
python C:/Projects/memstack/db/memstack-db.py get-context <project>
41+
python "$MEMSTACK_PATH/db/memstack-db.py" get-context <project>
4242
```
4343
2. **Load recent sessions:**
4444
```bash
45-
python C:/Projects/memstack/db/memstack-db.py get-sessions <project> --limit 3
45+
python "$MEMSTACK_PATH/db/memstack-db.py" get-sessions <project> --limit 3
4646
```
4747
3. **Load plan if exists:**
4848
```bash
49-
python C:/Projects/memstack/db/memstack-db.py get-plan <project>
49+
python "$MEMSTACK_PATH/db/memstack-db.py" get-plan <project>
5050
```
5151
4. **Fallback:** Check `memory/projects/` for markdown handoffs
5252
5. **Present combined state** so CC can continue immediately
@@ -70,8 +70,8 @@ Then execute the protocol below.
7070
Saved: memory/projects/adminstack-2026-02-18.md
7171
7272
--- PASTE INTO NEXT CC SESSION ---
73-
Working directory: C:\Projects\AdminStack
74-
Read C:\Projects\memstack\MEMSTACK.md
73+
Working directory: /path/to/your-project
74+
Read $MEMSTACK_PATH/MEMSTACK.md
7575
7676
Resume AdminStack. Last session completed:
7777
- Built CC Monitor page with auto-refresh

skills/quill/SKILL.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ Then execute the protocol below.
3737

3838
5. **Save to SQLite** (primary):
3939
```bash
40-
python C:/Projects/memstack/db/memstack-db.py set-context '{"project":"<client>","last_quote_date":"<date>","quote_summary":"<scope>"}'
40+
python "$MEMSTACK_PATH/db/memstack-db.py" set-context '{"project":"<client>","last_quote_date":"<date>","quote_summary":"<scope>"}'
4141
```
4242
6. **Also save markdown copy** to `memory/projects/{client}-quote-{date}.md` (human-readable backup)
4343
7. **Present formatted** for copy-paste into email or PDF export

skills/security/secrets-scanner/SKILL.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -437,3 +437,7 @@ This manual skill remains available for **deep audits** — git history analysis
437437
- **Lv.1** — Base: 7-check scan (hardcoded secrets, .env audit, config/docs, env validation, client exposure, git history, Docker), pattern reference for 14+ secret formats, .env.example generation, remediation guide. Derived from real credential incidents across AdminStack, EpsteinScan, and 10+ production projects. (Origin: MemStack Pro v1.0, Mar 2026)
438438
- **Lv.2** — Audit feedback: Added deployment platform config scan (Netlify, Vercel, Railway, Render, Fly.io), base64-encoded secret detection, private key block detection (RSA/EC/DSA/OpenSSH PEM), pre-rotation checklist with dependency mapping and priority matrix. (Origin: AdminStack audit, Mar 2026)
439439
- **Lv.3** — Hook integration: Documented automated pre-commit and pre-push hook coverage (700+ credential formats), fallback behavior, and relationship between manual skill audits and automated hook scanning. (Origin: MemStack Pro v3.3.3, Mar 2026)
440+
441+
## Pro Feature
442+
443+
Pro: Secrets scanning hooks run automatically before every commit and push, covering 700+ credential formats across every major cloud provider and API service. Free version requires manual scanning only.

skills/work/SKILL.md

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ Before executing ANY mode, silently gather current state. Do NOT present finding
3434
2. Read the project's `CLAUDE.md` (if it exists) — conventions, architecture decisions
3535
3. Check recent diary:
3636
```bash
37-
python C:/Projects/memstack/db/memstack-db.py get-sessions <project> --limit 3
37+
python "$MEMSTACK_PATH/db/memstack-db.py" get-sessions <project> --limit 3
3838
```
3939
4. Check git state:
4040
```bash
@@ -51,7 +51,7 @@ Before executing ANY mode, silently gather current state. Do NOT present finding
5151
1. Parse the entire plan into individual numbered tasks
5252
2. For each task, save to SQLite:
5353
```bash
54-
python C:/Projects/memstack/db/memstack-db.py add-plan-task '{"project":"<name>","task_number":<n>,"description":"<task>","status":"pending"}'
54+
python "$MEMSTACK_PATH/db/memstack-db.py" add-plan-task '{"project":"<name>","task_number":<n>,"description":"<task>","status":"pending"}'
5555
```
5656
3. Confirm with task count
5757
4. Also write a markdown copy to `memory/projects/{project}-plan.md` for human readability
@@ -64,11 +64,11 @@ Before executing ANY mode, silently gather current state. Do NOT present finding
6464

6565
1. Read current plan from SQLite:
6666
```bash
67-
python C:/Projects/memstack/db/memstack-db.py get-plan <project>
67+
python "$MEMSTACK_PATH/db/memstack-db.py" get-plan <project>
6868
```
6969
2. Update individual task statuses:
7070
```bash
71-
python C:/Projects/memstack/db/memstack-db.py update-task '{"project":"<name>","task_number":<n>,"status":"completed"}'
71+
python "$MEMSTACK_PATH/db/memstack-db.py" update-task '{"project":"<name>","task_number":<n>,"status":"completed"}'
7272
```
7373
3. Add new tasks if needed via `add-plan-task`
7474
4. No size limits needed — SQLite handles scale
@@ -79,7 +79,7 @@ Before executing ANY mode, silently gather current state. Do NOT present finding
7979

8080
1. Load plan from SQLite:
8181
```bash
82-
python C:/Projects/memstack/db/memstack-db.py get-plan <project>
82+
python "$MEMSTACK_PATH/db/memstack-db.py" get-plan <project>
8383
```
8484
2. Parse the JSON output for task statuses
8585
3. Output a summary:
@@ -103,8 +103,8 @@ Before executing ANY mode, silently gather current state. Do NOT present finding
103103

104104
## Inputs
105105
- Plan text (copy mode) or project name (append/resume)
106-
- Database: `C:\Projects\memstack\db\memstack.db` (via memstack-db.py)
107-
- Fallback: `C:\Projects\memstack\memory\projects\` (legacy markdown)
106+
- Database: `$MEMSTACK_PATH/db\memstack.db` (via memstack-db.py)
107+
- Fallback: `$MEMSTACK_PATH/memory\projects\` (legacy markdown)
108108

109109
## Outputs
110110
- Formatted task list with status indicators

0 commit comments

Comments
 (0)