@mcpware/claude-code-organizer 0.1.1 → 0.1.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +2 -2
- package/server.json +20 -0
- package/PLAN.md +0 -243
- package/SHIP.md +0 -96
- package/mockup.html +0 -419
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mcpware/claude-code-organizer",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.3",
|
|
4
4
|
"description": "Organize all your Claude Code memories, skills, MCP servers, and hooks — view by scope hierarchy, move between scopes via drag-and-drop",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -26,7 +26,7 @@
|
|
|
26
26
|
"claude-hooks",
|
|
27
27
|
"config-manager"
|
|
28
28
|
],
|
|
29
|
-
"mcpName": "io.github.
|
|
29
|
+
"mcpName": "io.github.mcpware/claude-code-organizer",
|
|
30
30
|
"author": "ithiria894",
|
|
31
31
|
"license": "MIT",
|
|
32
32
|
"repository": {
|
package/server.json
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
|
|
3
|
+
"name": "io.github.mcpware/claude-code-organizer",
|
|
4
|
+
"description": "Organize Claude Code memories, skills, MCP servers, and hooks via drag-and-drop dashboard.",
|
|
5
|
+
"repository": {
|
|
6
|
+
"url": "https://github.com/mcpware/claude-code-organizer",
|
|
7
|
+
"source": "github"
|
|
8
|
+
},
|
|
9
|
+
"version": "0.1.1",
|
|
10
|
+
"packages": [
|
|
11
|
+
{
|
|
12
|
+
"registryType": "npm",
|
|
13
|
+
"identifier": "@mcpware/claude-code-organizer",
|
|
14
|
+
"version": "0.1.1",
|
|
15
|
+
"transport": {
|
|
16
|
+
"type": "stdio"
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
]
|
|
20
|
+
}
|
package/PLAN.md
DELETED
|
@@ -1,243 +0,0 @@
|
|
|
1
|
-
# Claude Inventory Manager
|
|
2
|
-
|
|
3
|
-
**A scope-aware inventory manager for Claude Code customizations — view, organize, and sync your memories, skills, MCP servers, hooks, commands, and plugins.**
|
|
4
|
-
|
|
5
|
-
## Problem
|
|
6
|
-
|
|
7
|
-
Claude Code customizations (memories, skills, MCP servers, hooks, etc.) are scattered across multiple directories with ugly encoded paths. Users don't know:
|
|
8
|
-
- What customizations they have
|
|
9
|
-
- Which scope each one applies to
|
|
10
|
-
- Whether something is in the wrong scope
|
|
11
|
-
- How parent-child scope inheritance works
|
|
12
|
-
|
|
13
|
-
## Solution
|
|
14
|
-
|
|
15
|
-
A lightweight web dashboard + MCP server that:
|
|
16
|
-
1. Scans all Claude Code customizations
|
|
17
|
-
2. Displays them in a scope-aware hierarchy
|
|
18
|
-
3. Lets users drag-and-drop items between scopes
|
|
19
|
-
4. Syncs changes to git for versioning
|
|
20
|
-
|
|
21
|
-
## Competitive Landscape (researched 2026-03-18)
|
|
22
|
-
|
|
23
|
-
### Direct Competitors
|
|
24
|
-
|
|
25
|
-
| Tool | Type | Scope View | Move Between Scopes | Threat |
|
|
26
|
-
|---|---|:---:|:---:|:---:|
|
|
27
|
-
| [drewipson/claude-code-config](https://github.com/drewipson/claude-code-config) | VS Code ext (pre-release v0.1.2) | ✅ Tree view | ✅ Right-click move | ⚠️ Medium |
|
|
28
|
-
| [conradBruchmann/claude-admin](https://github.com/conradBruchmann/claude-admin) | Web dashboard (v0.1.9, Feb 2026) | Partial | ❌ | Low |
|
|
29
|
-
| [joeyism/claude-code-config](https://github.com/joeyism/claude-code-config) | TUI | MCP only | ✅ MCP only | Low |
|
|
30
|
-
| [Claude Deck](https://claudedeck.org/) | Web dashboard (React+FastAPI) | ❌ | ❌ | Low |
|
|
31
|
-
| [claude-code-backup](https://github.com/Ranteck/claude-code-backup) | Backup scripts | ❌ | ❌ | None |
|
|
32
|
-
| [ocodista/claude-dashboard](https://github.com/ocodista/claude-dashboard) | Read-only HTML | ❌ | ❌ | None |
|
|
33
|
-
|
|
34
|
-
### Key Competitor Analysis
|
|
35
|
-
|
|
36
|
-
**drewipson/claude-code-config** — closest competitor:
|
|
37
|
-
- VS Code extension with tree view of memories, skills, hooks, permissions
|
|
38
|
-
- Right-click to move items between global and project scope
|
|
39
|
-
- **Gaps vs us:** VS Code only (not standalone), no drag-and-drop, no MCP servers, no scope hierarchy visualization, pre-release quality, no web UI
|
|
40
|
-
|
|
41
|
-
**conradBruchmann/claude-admin** — broadest feature set:
|
|
42
|
-
- Web dashboard covering skills, memory, MCP, agents, plugins, sessions, analytics
|
|
43
|
-
- Shipped Feb 20, 2026 — growing fast (33 commits, v0.1.9)
|
|
44
|
-
- **Gaps vs us:** No scope hierarchy view, no move between scopes, no drag-and-drop. Config editor, not inventory manager
|
|
45
|
-
|
|
46
|
-
### What Nobody Has Built (our lane)
|
|
47
|
-
|
|
48
|
-
No existing tool combines all three:
|
|
49
|
-
1. **Unified scope hierarchy** — all item types (memories, skills, MCP, hooks) organized by Global → workspace → project
|
|
50
|
-
2. **Move between scopes** via drag-and-drop or modal UI
|
|
51
|
-
3. **Standalone web dashboard** — not tied to VS Code or any IDE
|
|
52
|
-
|
|
53
|
-
### Anthropic Official Stance (researched 2026-03-18)
|
|
54
|
-
|
|
55
|
-
- `/config` is a per-scope settings toggle, NOT a cross-scope inventory
|
|
56
|
-
- No changelog entries, planned issues, or blog posts mention config dashboard / inventory
|
|
57
|
-
- Official plugin `claude-md-management` focuses on CLAUDE.md content quality, not scope management
|
|
58
|
-
- 2026 Anthropic focus: plugins ecosystem, remote control, scheduled tasks, auto memory, 1M context
|
|
59
|
-
- **Risk of Anthropic building this: LOW** — no signals in any channel
|
|
60
|
-
|
|
61
|
-
**Our unique angles:**
|
|
62
|
-
- Scope-aware hierarchy with drag-and-drop (nobody has this)
|
|
63
|
-
- Zero dependencies (single Node.js file + SortableJS CDN)
|
|
64
|
-
- Daily git versioning (track what changed over time)
|
|
65
|
-
- Cross-machine diff and export/import
|
|
66
|
-
- Standalone — works anywhere, not locked to VS Code
|
|
67
|
-
|
|
68
|
-
## Target User
|
|
69
|
-
|
|
70
|
-
Any Claude Code power user who has accumulated enough memories, skills, and configs that they need to organize and understand their setup.
|
|
71
|
-
|
|
72
|
-
---
|
|
73
|
-
|
|
74
|
-
## Architecture
|
|
75
|
-
|
|
76
|
-
### What We Manage
|
|
77
|
-
|
|
78
|
-
| Type | Has Sub-types | Has Scope | Can Move Scope | Storage |
|
|
79
|
-
|---|---|---|---|---|
|
|
80
|
-
| **Memory** | feedback / user / project / reference | Global, per-project | Yes — between memory folders | `.md` files with frontmatter |
|
|
81
|
-
| **Skills** | No | Global (`~/.claude/skills/`), per-repo (`.claude/skills/`) | Yes — between skill folders | Folders with `SKILL.md` |
|
|
82
|
-
| **MCP Servers** | No | Global (`.mcp.json`), workspace, per-repo | Yes — move JSON entry between `.mcp.json` files |
|
|
83
|
-
| **Hooks** | By event type (Stop, PreToolUse, PostToolUse, etc.) | Global, per-project, per-repo | Yes — move between `settings.json` files |
|
|
84
|
-
| **Commands** | No | Per-repo (`.claude/commands/`) | Yes — between command folders |
|
|
85
|
-
| **Plugins** | No | Global | No — installed globally only |
|
|
86
|
-
| **Config** | No | Global + per-project | No — locked, edit via Claude or manually |
|
|
87
|
-
| **Plans** | No | Global (`~/.claude/plans/`) | No — ephemeral |
|
|
88
|
-
| **Agents** | No | Per-repo (`.claude/agents/`) | Yes — between agent folders |
|
|
89
|
-
| **CLAUDE.md** | No | Global + per-repo | No — locked, edit manually |
|
|
90
|
-
|
|
91
|
-
### Scope Hierarchy
|
|
92
|
-
|
|
93
|
-
```
|
|
94
|
-
🌐 Global ← applies everywhere
|
|
95
|
-
↳ 📂 AlltrueAi (workspace) ← applies when cd ~/AlltrueAi/*
|
|
96
|
-
↳ 📂 ai-security-control-plane (project)
|
|
97
|
-
↳ 📂 ai-security-ui (project)
|
|
98
|
-
↳ 📂 rule-processor (project)
|
|
99
|
-
↳ 📂 MyGithub (project) ← applies when cd ~/MyGithub
|
|
100
|
-
↳ 📂 Documents (project) ← applies when cd ~/Documents
|
|
101
|
-
```
|
|
102
|
-
|
|
103
|
-
Child scopes inherit parent scope's memories, skills, and MCP servers.
|
|
104
|
-
|
|
105
|
-
### Move Safety Rules
|
|
106
|
-
|
|
107
|
-
- Memory → only to other memory folders
|
|
108
|
-
- Skill → only to other skill locations (global or per-repo)
|
|
109
|
-
- MCP → only between `.mcp.json` files
|
|
110
|
-
- Config/CLAUDE.md/Plans → locked, cannot move
|
|
111
|
-
- Every drag-and-drop shows a confirmation modal before executing
|
|
112
|
-
- Moves happen in real `~/.claude/` paths (not just the backup repo)
|
|
113
|
-
|
|
114
|
-
### Tech Stack
|
|
115
|
-
|
|
116
|
-
- **Server**: Single Node.js file (zero npm dependencies, built-in modules only)
|
|
117
|
-
- **Client**: HTML + CSS + [SortableJS](https://github.com/SortableJS/Sortable) via CDN (13KB)
|
|
118
|
-
- **Distribution**: MCP server + npm package (`npx @mcpware/claude-inventory`)
|
|
119
|
-
- **Also works as**: standalone `localhost` dashboard
|
|
120
|
-
|
|
121
|
-
### Platform Support
|
|
122
|
-
|
|
123
|
-
| Platform | Status | Notes |
|
|
124
|
-
|----------|:------:|-------|
|
|
125
|
-
| **Ubuntu / Linux** | ✅ Supported | Primary development and testing platform |
|
|
126
|
-
| **macOS** | ⚠️ Untested | `~/.claude/` path should work, needs verification |
|
|
127
|
-
| **Windows** | ❌ Not yet | Path handling needs adaptation (`C:\Users\...\.claude\`) |
|
|
128
|
-
| **WSL** | ⚠️ Untested | Should work like Linux, needs verification |
|
|
129
|
-
|
|
130
|
-
Current limitation: developed and tested on Ubuntu only. macOS and Windows support planned for future release.
|
|
131
|
-
|
|
132
|
-
**Cross-platform notes (researched 2026-03-18):**
|
|
133
|
-
- macOS: `~/.claude/` same as Linux, `os.homedir()` works → should work out of the box
|
|
134
|
-
- Windows: `%USERPROFILE%\.claude\`, but path encoding uses `--` for `:\` (known Claude Code bug [#14403](https://github.com/anthropics/claude-code/issues/14403))
|
|
135
|
-
- `CLAUDE_CONFIG_DIR` env var can override config location — should check this first
|
|
136
|
-
- `fs.rename` needs `EXDEV` fallback (copy+delete) for cross-filesystem moves
|
|
137
|
-
|
|
138
|
-
---
|
|
139
|
-
|
|
140
|
-
## Roadmap
|
|
141
|
-
|
|
142
|
-
### MVP 1 — View + Move + Sync ✅ DONE (2026-03-18)
|
|
143
|
-
- [x] UI mockup (see `mockup.html`)
|
|
144
|
-
- [x] Node.js server that scans real `~/.claude/` directory
|
|
145
|
-
- [x] Scope-aware hierarchy display (Global → projects → sub-projects)
|
|
146
|
-
- [x] Categories: Memory, Skills, MCP Servers, Config, Hooks, Plugins, Plans
|
|
147
|
-
- [x] SortableJS drag-and-drop between same-type scopes
|
|
148
|
-
- [x] Confirmation modal on every move
|
|
149
|
-
- [x] Move files in real `~/.claude/` paths
|
|
150
|
-
- [x] "Open in Editor" button (VS Code deeplink)
|
|
151
|
-
- [x] Search across all items
|
|
152
|
-
- [x] Multi-select filter pills with counts
|
|
153
|
-
- [x] Detail panel on click
|
|
154
|
-
- [x] Move-to modal with scope tree + correct indentation
|
|
155
|
-
- [x] Current scope indicator in move modal
|
|
156
|
-
- [x] Auto-scroll during drag
|
|
157
|
-
- [x] Locked items (config, plugins, plans) cannot be moved
|
|
158
|
-
- [x] Generic — no hardcoded paths, works on any user's machine
|
|
159
|
-
- [x] Frontend/backend separation (4 UI files, 3 backend files)
|
|
160
|
-
- [ ] Daily git sync (`sync.sh` + cron) — already working separately
|
|
161
|
-
- [ ] Export/import tarball
|
|
162
|
-
|
|
163
|
-
### MVP 2 — Inline Edit + Polish
|
|
164
|
-
- [ ] Click item → show full `.md` content in detail panel
|
|
165
|
-
- [ ] Edit content inline, save back to file
|
|
166
|
-
- [ ] Improve confirm modal design (show item icon, type, scope badges)
|
|
167
|
-
- [ ] Add Commands management
|
|
168
|
-
- [ ] Check `CLAUDE_CONFIG_DIR` env var for custom config paths
|
|
169
|
-
- [ ] `fs.rename` EXDEV fallback (copy + delete)
|
|
170
|
-
- [ ] Add Agents management
|
|
171
|
-
|
|
172
|
-
### MVP 3 — Dashboard Stats + Polish
|
|
173
|
-
- [ ] Stats panel (total counts, size, last modified)
|
|
174
|
-
- [ ] Scope inheritance visualization
|
|
175
|
-
- [ ] Cross-machine diff (compare two exports)
|
|
176
|
-
- [ ] Config health/lint (detect conflicts, redundancies)
|
|
177
|
-
- [ ] Dark mode toggle
|
|
178
|
-
|
|
179
|
-
### MVP 4 — MCP + npm Distribution
|
|
180
|
-
- [ ] Package as MCP server (`@mcpware/claude-inventory`)
|
|
181
|
-
- [ ] MCP tools: `scan_setup`, `move_memory`, `list_memories`, `export_setup`
|
|
182
|
-
- [ ] `npx @mcpware/claude-inventory` one-command start
|
|
183
|
-
- [ ] Publish to npm (@mcpware org)
|
|
184
|
-
- [ ] Register on Official MCP Registry
|
|
185
|
-
- [ ] Submit to awesome-mcp-servers
|
|
186
|
-
|
|
187
|
-
---
|
|
188
|
-
|
|
189
|
-
## UI Design
|
|
190
|
-
|
|
191
|
-
### Design Principles
|
|
192
|
-
- Light theme, clean, minimal
|
|
193
|
-
- Hierarchy: Scope headers (most prominent) > Category bars (medium) > Item rows (subtle)
|
|
194
|
-
- All light backgrounds with dark text
|
|
195
|
-
- Items indented under categories, categories indented under scopes
|
|
196
|
-
- Same-type icons: all memories use 🧠, all skills use ⚡, all MCP use 🔌, all scopes use 📂
|
|
197
|
-
|
|
198
|
-
### Current Mockup
|
|
199
|
-
See `mockup.html` — interactive prototype with:
|
|
200
|
-
- Collapsible scope/category sections
|
|
201
|
-
- SortableJS drag-and-drop (memory↔memory, skill↔skill, mcp↔mcp only)
|
|
202
|
-
- Drag confirmation modal
|
|
203
|
-
- Detail panel on click
|
|
204
|
-
- Search and filter pills
|
|
205
|
-
- Scope inheritance indicators (`↳ Inherits 🌐 Global 📂 AlltrueAi`)
|
|
206
|
-
|
|
207
|
-
### Color Palette
|
|
208
|
-
```
|
|
209
|
-
Background: #fafbfc
|
|
210
|
-
Surface: #ffffff
|
|
211
|
-
Border: #e2e4ea
|
|
212
|
-
Text primary: #1e2028
|
|
213
|
-
Text secondary: #5a5d6e
|
|
214
|
-
Text muted: #9598a8
|
|
215
|
-
Accent: #5b5fc7 (indigo)
|
|
216
|
-
Accent light: #ededfa
|
|
217
|
-
Scope bg: #f0f1f8
|
|
218
|
-
Category bg: #f6f7fb
|
|
219
|
-
|
|
220
|
-
Tags:
|
|
221
|
-
Global: bg #e8e9fa text #5b5fc7
|
|
222
|
-
Workspace: bg #fef0e4 text #c67a2e
|
|
223
|
-
Project: bg #e4f6ec text #2d8a56
|
|
224
|
-
|
|
225
|
-
Badges:
|
|
226
|
-
feedback: #e6960a
|
|
227
|
-
user: #7c3aed
|
|
228
|
-
project: #2563eb
|
|
229
|
-
reference: #059669
|
|
230
|
-
skill: #ea580c
|
|
231
|
-
mcp: #d946a8
|
|
232
|
-
config: #9ca3af
|
|
233
|
-
```
|
|
234
|
-
|
|
235
|
-
---
|
|
236
|
-
|
|
237
|
-
## Research Sources
|
|
238
|
-
|
|
239
|
-
- [Drag-and-drop research](../.claude/skills/claude-inventory/) — SortableJS recommended over raw HTML5 DnD
|
|
240
|
-
- [Market research: existing tools](PLAN.md#competitive-landscape)
|
|
241
|
-
- [MCP ecosystem analysis](https://github.com/punkpeye/awesome-mcp-servers) — 83K stars, 600+ servers
|
|
242
|
-
- [Claude Code GitHub issues](https://github.com/anthropics/claude-code) — 280+ issues about config/memory management
|
|
243
|
-
- [Official MCP Registry](https://registry.modelcontextprotocol.io/) — distribution channel
|
package/SHIP.md
DELETED
|
@@ -1,96 +0,0 @@
|
|
|
1
|
-
# Ship Plan — claude-code-organizer
|
|
2
|
-
|
|
3
|
-
> Follow side-hustle/3-ship/ship-workflow.md template
|
|
4
|
-
> Created: 2026-03-18
|
|
5
|
-
|
|
6
|
-
---
|
|
7
|
-
|
|
8
|
-
## Phase 0: Launch Checklist (TODAY)
|
|
9
|
-
|
|
10
|
-
### README
|
|
11
|
-
- [ ] One-line description (3 seconds)
|
|
12
|
-
- [ ] Screenshot / demo GIF at the top
|
|
13
|
-
- [ ] Features bullet list
|
|
14
|
-
- [ ] Quick Start (`npx @mcpware/claude-code-organizer`)
|
|
15
|
-
- [ ] Comparison table (vs claude-control, claude-admin, claude-deck)
|
|
16
|
-
- [ ] Usage examples
|
|
17
|
-
|
|
18
|
-
### GitHub Repo Setup
|
|
19
|
-
- [ ] Description ✅ (already set)
|
|
20
|
-
- [ ] Topics / Tags (use all 20)
|
|
21
|
-
- [ ] Social Preview Image (1280×640) — use Canva MCP
|
|
22
|
-
- [ ] LICENSE file (MIT)
|
|
23
|
-
- [ ] .gitignore
|
|
24
|
-
- [ ] Release tag (v0.1.0)
|
|
25
|
-
- [ ] Badges (version, license, npm downloads)
|
|
26
|
-
|
|
27
|
-
### Package Registry
|
|
28
|
-
- [ ] `npm publish --access public` as `@mcpware/claude-code-organizer`
|
|
29
|
-
- [ ] Also publish as `claude-code-organizer` (unscoped, for discoverability)
|
|
30
|
-
|
|
31
|
-
### Plugin Marketplace
|
|
32
|
-
- [ ] Create `.claude-plugin/plugin.json` manifest
|
|
33
|
-
- [ ] Create marketplace repo `mcpware/marketplace`
|
|
34
|
-
- [ ] Submit to Anthropic official marketplace (claude.ai/settings/plugins/submit)
|
|
35
|
-
|
|
36
|
-
---
|
|
37
|
-
|
|
38
|
-
## Phase 1: Registry Registration (Day 1-2)
|
|
39
|
-
|
|
40
|
-
| Platform | URL | Status | Notes |
|
|
41
|
-
|----------|-----|:------:|-------|
|
|
42
|
-
| **npm** | npmjs.com | [ ] | `@mcpware/claude-code-organizer` + `claude-code-organizer` |
|
|
43
|
-
| **Anthropic Plugin Marketplace** | claude.ai/settings/plugins/submit | [ ] | Official, needs review |
|
|
44
|
-
| **Official MCP Registry** | registry.modelcontextprotocol.io | [ ] | Submit via `mcp-publisher` CLI |
|
|
45
|
-
| **awesome-mcp-servers** | github.com/punkpeye/awesome-mcp-servers | [ ] | PR (need Glama listing first) |
|
|
46
|
-
| **awesome-claude-code** | github.com/hesreallyhim/awesome-claude-code | [ ] | PR |
|
|
47
|
-
| **awesome-claude-plugins** | github.com/ComposioHQ/awesome-claude-plugins | [ ] | PR |
|
|
48
|
-
| **Glama.ai** | glama.ai/mcp/servers | [ ] | Need Dockerfile + glama.json + release tag |
|
|
49
|
-
| **MCP.so** | mcp.so | [ ] | Submit form |
|
|
50
|
-
| **Smithery.ai** | smithery.ai | [ ] | Submit MCP server |
|
|
51
|
-
| **MCPServers.org** | mcpservers.org | [ ] | Submit to directory |
|
|
52
|
-
| **PulseMCP** | pulsemcp.com | [ ] | Submit |
|
|
53
|
-
| **mcpmarket.com** | mcpmarket.com | [ ] | Submit |
|
|
54
|
-
|
|
55
|
-
### Glama Requirements (blocks awesome-mcp-servers PR)
|
|
56
|
-
- [ ] Add `Dockerfile`
|
|
57
|
-
- [ ] Add `glama.json`
|
|
58
|
-
- [ ] Create GitHub Release v0.1.0
|
|
59
|
-
- [ ] Submit to Glama → Claim → Wait for indexing
|
|
60
|
-
|
|
61
|
-
---
|
|
62
|
-
|
|
63
|
-
## Phase 2: Social Media Launch (Day 2-5)
|
|
64
|
-
|
|
65
|
-
| Day | Platform | Content | Status |
|
|
66
|
-
|-----|----------|---------|:------:|
|
|
67
|
-
| Day 2 | Reddit r/ClaudeAI | "I built a visual organizer for Claude Code memories, skills, and MCP servers" | [ ] |
|
|
68
|
-
| Day 2 | Reddit r/MCP | Technical angle — scope hierarchy + drag-and-drop | [ ] |
|
|
69
|
-
| Day 3 | Twitter/X | Thread: problem → solution → demo GIF → link | [ ] |
|
|
70
|
-
| Day 4 | Dev.to | Blog post: "I was drowning in 84 Claude Code config files" | [ ] |
|
|
71
|
-
| Day 5 | LinkedIn | Professional: "Built an open-source tool used by X developers" | [ ] |
|
|
72
|
-
|
|
73
|
-
---
|
|
74
|
-
|
|
75
|
-
## Phase 3: Content Angles
|
|
76
|
-
|
|
77
|
-
### Problem-first (Dev.to, HN)
|
|
78
|
-
> "Claude Code saves memories, skills, MCP servers, and hooks across 5+ scattered directories with ugly encoded paths. I had 84 config files and couldn't tell which scope each one applied to. So I built Claude Code Organizer — a visual dashboard that shows everything organized by scope hierarchy with drag-and-drop to move items between scopes."
|
|
79
|
-
|
|
80
|
-
### Comparison (Reddit, Twitter)
|
|
81
|
-
> "There are 10+ Claude Code config tools, but none let you actually MOVE items between scopes. claude-control is read-only. Claude Deck needs React+FastAPI+SQLite. I built a zero-dependency organizer with real drag-and-drop. Here's how they compare: [table]"
|
|
82
|
-
|
|
83
|
-
### Build-in-public (Twitter)
|
|
84
|
-
> "Day 1: Built a scope-aware inventory manager for Claude Code in one session. Zero npm dependencies, SortableJS for drag-and-drop. Here's what I learned about Claude's config system..."
|
|
85
|
-
|
|
86
|
-
---
|
|
87
|
-
|
|
88
|
-
## Execution Order (Today)
|
|
89
|
-
|
|
90
|
-
1. ~~Rename repo~~ ✅
|
|
91
|
-
2. Write README
|
|
92
|
-
3. Add LICENSE, .gitignore, topics
|
|
93
|
-
4. npm publish
|
|
94
|
-
5. Create plugin structure
|
|
95
|
-
6. Create GitHub Release v0.1.0
|
|
96
|
-
7. Submit to registries
|
package/mockup.html
DELETED
|
@@ -1,419 +0,0 @@
|
|
|
1
|
-
<!DOCTYPE html>
|
|
2
|
-
<html lang="en">
|
|
3
|
-
<head>
|
|
4
|
-
<meta charset="utf-8">
|
|
5
|
-
<meta name="viewport" content="width=device-width,initial-scale=1">
|
|
6
|
-
<title>Claude Inventory</title>
|
|
7
|
-
<script src="https://cdn.jsdelivr.net/npm/sortablejs@1.15.6/Sortable.min.js"></script>
|
|
8
|
-
<style>
|
|
9
|
-
:root {
|
|
10
|
-
--bg: #fafbfc;
|
|
11
|
-
--surface: #ffffff;
|
|
12
|
-
--border: #e2e4ea;
|
|
13
|
-
--border-light: #eef0f4;
|
|
14
|
-
--text-primary: #1e2028;
|
|
15
|
-
--text-secondary: #5a5d6e;
|
|
16
|
-
--text-muted: #9598a8;
|
|
17
|
-
--text-faint: #c2c5d0;
|
|
18
|
-
--accent: #5b5fc7;
|
|
19
|
-
--accent-light: #ededfa;
|
|
20
|
-
--accent-text: #4345a0;
|
|
21
|
-
--scope-bg: #f0f1f8;
|
|
22
|
-
--scope-border: #d8dae8;
|
|
23
|
-
--cat-bg: #f6f7fb;
|
|
24
|
-
--cat-border: #e8e9f0;
|
|
25
|
-
--hover: #f5f6fa;
|
|
26
|
-
--tag-global-bg: #e8e9fa; --tag-global-text: #5b5fc7;
|
|
27
|
-
--tag-workspace-bg: #fef0e4; --tag-workspace-text: #c67a2e;
|
|
28
|
-
--tag-project-bg: #e4f6ec; --tag-project-text: #2d8a56;
|
|
29
|
-
--badge-feedback: #e6960a; --badge-user: #7c3aed; --badge-project: #2563eb;
|
|
30
|
-
--badge-reference: #059669; --badge-skill: #ea580c; --badge-mcp: #d946a8;
|
|
31
|
-
--badge-config: #9ca3af;
|
|
32
|
-
--shadow-sm: 0 1px 2px rgba(0,0,0,0.04);
|
|
33
|
-
--shadow-md: 0 2px 8px rgba(0,0,0,0.06);
|
|
34
|
-
--radius: 10px;
|
|
35
|
-
}
|
|
36
|
-
* { margin:0; padding:0; box-sizing:border-box; }
|
|
37
|
-
body { font-family:'Inter',-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif; background:var(--bg); color:var(--text-primary); height:100vh; overflow:hidden; -webkit-font-smoothing:antialiased; font-size:14px; }
|
|
38
|
-
.app { display:flex; height:100vh; }
|
|
39
|
-
.tree-area { flex:1; overflow-y:auto; padding:32px 40px 80px; max-width:920px; margin:0 auto; }
|
|
40
|
-
|
|
41
|
-
/* ── Page header ── */
|
|
42
|
-
.page-hdr { display:flex; align-items:center; gap:16px; margin-bottom:32px; }
|
|
43
|
-
.logo { width:32px; height:32px; background:var(--accent); border-radius:8px; display:flex; align-items:center; justify-content:center; color:#fff; font-size:16px; font-weight:700; }
|
|
44
|
-
.page-hdr h1 { font-size:1.25rem; color:var(--text-primary); font-weight:700; letter-spacing:-0.4px; }
|
|
45
|
-
.spacer { flex:1; }
|
|
46
|
-
.search { background:var(--surface); border:1px solid var(--border); border-radius:8px; padding:8px 14px; color:var(--text-primary); font-size:0.8rem; width:200px; font-family:inherit; outline:none; transition:all 0.15s; }
|
|
47
|
-
.search:focus { border-color:var(--accent); box-shadow:0 0 0 3px var(--accent-light); }
|
|
48
|
-
.search::placeholder { color:var(--text-faint); }
|
|
49
|
-
.pills { display:flex; gap:4px; }
|
|
50
|
-
.pill { background:var(--surface); border:1px solid var(--border); border-radius:20px; padding:5px 14px; color:var(--text-secondary); font-size:0.72rem; cursor:pointer; font-weight:500; transition:all 0.15s; }
|
|
51
|
-
.pill:hover { background:var(--hover); border-color:var(--scope-border); }
|
|
52
|
-
.pill.active { background:var(--accent); border-color:var(--accent); color:#fff; }
|
|
53
|
-
.pill b { font-weight:700; margin-left:2px; opacity:0.7; }
|
|
54
|
-
.pill.active b { opacity:1; }
|
|
55
|
-
.pills { display:flex; gap:4px; flex-wrap:wrap; }
|
|
56
|
-
|
|
57
|
-
/* ══════════════════════════════════════════
|
|
58
|
-
SCOPE HEADER — Most prominent
|
|
59
|
-
══════════════════════════════════════════ */
|
|
60
|
-
.scope-block { margin-bottom:4px; }
|
|
61
|
-
.scope-block .scope-block { margin-left:20px; }
|
|
62
|
-
|
|
63
|
-
.scope-hdr {
|
|
64
|
-
display:flex; align-items:center; gap:10px;
|
|
65
|
-
padding:12px 16px; cursor:pointer; border-radius:var(--radius);
|
|
66
|
-
background:var(--scope-bg); border:1px solid var(--scope-border);
|
|
67
|
-
user-select:none; transition:all 0.15s; margin-bottom:3px;
|
|
68
|
-
}
|
|
69
|
-
.scope-hdr:hover { background:#e8e9f4; border-color:#cfd1e2; }
|
|
70
|
-
.scope-tog { width:16px; text-align:center; color:var(--accent); font-size:0.7rem; transition:transform 0.15s; }
|
|
71
|
-
.scope-tog.c { transform:rotate(-90deg); }
|
|
72
|
-
.scope-ico { font-size:1rem; }
|
|
73
|
-
.scope-nm { font-size:0.95rem; font-weight:700; color:var(--text-primary); letter-spacing:-0.2px; }
|
|
74
|
-
.scope-tag { font-size:0.58rem; padding:2px 8px; border-radius:5px; font-weight:600; }
|
|
75
|
-
.tag-global { background:var(--tag-global-bg); color:var(--tag-global-text); }
|
|
76
|
-
.tag-workspace { background:var(--tag-workspace-bg); color:var(--tag-workspace-text); }
|
|
77
|
-
.tag-project { background:var(--tag-project-bg); color:var(--tag-project-text); }
|
|
78
|
-
.scope-info { font-size:0.65rem; color:var(--text-muted); margin-left:auto; }
|
|
79
|
-
.scope-cnt { background:var(--accent-light); color:var(--accent-text); border-radius:10px; padding:2px 9px; font-size:0.62rem; font-weight:700; }
|
|
80
|
-
|
|
81
|
-
.scope-body { padding:0 0 6px; }
|
|
82
|
-
.scope-body.c { display:none; }
|
|
83
|
-
.inherit { font-size:0.68rem; color:var(--accent-text); padding:6px 14px 10px 40px; font-style:normal; font-weight:500; display:flex; align-items:center; gap:6px; }
|
|
84
|
-
.inherit-pill { background:var(--accent-light); color:var(--accent-text); padding:2px 8px; border-radius:4px; font-size:0.6rem; font-weight:600; }
|
|
85
|
-
.inherit-arrow { color:var(--accent); font-size:0.8rem; }
|
|
86
|
-
|
|
87
|
-
/* ══════════════════════════════════════════
|
|
88
|
-
CATEGORY BAR — Medium prominence
|
|
89
|
-
══════════════════════════════════════════ */
|
|
90
|
-
.cat-hdr {
|
|
91
|
-
display:flex; align-items:center; gap:8px;
|
|
92
|
-
padding:8px 14px; margin:4px 0 2px 24px; cursor:pointer;
|
|
93
|
-
background:var(--cat-bg); border:1px solid var(--cat-border);
|
|
94
|
-
border-radius:8px; user-select:none; transition:all 0.15s;
|
|
95
|
-
}
|
|
96
|
-
.cat-hdr:hover { background:#eeeef6; border-color:#dddee8; }
|
|
97
|
-
.cat-tog { width:14px; text-align:center; color:var(--text-muted); font-size:0.6rem; transition:transform 0.15s; }
|
|
98
|
-
.cat-tog.c { transform:rotate(-90deg); }
|
|
99
|
-
.cat-ico { font-size:0.85rem; }
|
|
100
|
-
.cat-nm { font-size:0.72rem; color:var(--text-secondary); font-weight:700; text-transform:uppercase; letter-spacing:1px; }
|
|
101
|
-
.cat-cnt { font-size:0.62rem; color:var(--text-muted); margin-left:auto; font-weight:500; }
|
|
102
|
-
|
|
103
|
-
.cat-body { padding:0; }
|
|
104
|
-
.cat-body.c { display:none; }
|
|
105
|
-
|
|
106
|
-
/* ══════════════════════════════════════════
|
|
107
|
-
ITEM ROW — Least prominent, subtle
|
|
108
|
-
══════════════════════════════════════════ */
|
|
109
|
-
.sortable-zone { min-height:4px; margin-left:64px; padding:2px 0; }
|
|
110
|
-
|
|
111
|
-
.item-row {
|
|
112
|
-
display:flex; align-items:center; gap:8px;
|
|
113
|
-
padding:6px 10px; margin:1px 0; border-radius:6px;
|
|
114
|
-
cursor:grab; transition:all 0.1s;
|
|
115
|
-
border:1px solid transparent;
|
|
116
|
-
}
|
|
117
|
-
.item-row:hover { background:var(--hover); border-color:var(--border-light); }
|
|
118
|
-
.item-row:active { cursor:grabbing; }
|
|
119
|
-
.item-row.sortable-ghost { opacity:0.2; border:1px dashed var(--accent); background:var(--accent-light); }
|
|
120
|
-
.item-row.sortable-chosen { background:var(--accent-light); border-color:var(--accent); }
|
|
121
|
-
.item-row.locked { opacity:0.35; cursor:default; }
|
|
122
|
-
.item-row.selected { background:var(--accent-light); border-color:var(--accent); }
|
|
123
|
-
|
|
124
|
-
.row-ico { font-size:0.72rem; flex-shrink:0; }
|
|
125
|
-
.row-name { font-size:0.75rem; color:var(--text-secondary); font-weight:500; flex-shrink:0; max-width:220px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
|
|
126
|
-
.row-badge { font-size:0.5rem; padding:1px 5px; border-radius:3px; color:#fff; font-weight:600; flex-shrink:0; }
|
|
127
|
-
.b-feedback { background:var(--badge-feedback); }
|
|
128
|
-
.b-user { background:var(--badge-user); }
|
|
129
|
-
.b-project { background:var(--badge-project); }
|
|
130
|
-
.b-reference { background:var(--badge-reference); }
|
|
131
|
-
.b-skill { background:var(--badge-skill); }
|
|
132
|
-
.b-mcp { background:var(--badge-mcp); }
|
|
133
|
-
.b-config { background:var(--badge-config); }
|
|
134
|
-
.row-desc { font-size:0.65rem; color:var(--text-muted); flex:1; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
|
|
135
|
-
.row-meta { font-size:0.58rem; color:var(--text-faint); flex-shrink:0; }
|
|
136
|
-
.row-acts { display:flex; gap:3px; opacity:0; transition:opacity 0.1s; flex-shrink:0; }
|
|
137
|
-
.item-row:hover .row-acts { opacity:1; }
|
|
138
|
-
.rbtn { background:var(--surface); border:1px solid var(--border); border-radius:5px; color:var(--text-secondary); padding:3px 8px; cursor:pointer; font-size:0.6rem; font-family:inherit; transition:all 0.12s; }
|
|
139
|
-
.rbtn:hover { background:var(--accent); color:#fff; border-color:var(--accent); }
|
|
140
|
-
|
|
141
|
-
/* ── Detail panel ── */
|
|
142
|
-
.detail { width:340px; border-left:1px solid var(--border); display:flex; flex-direction:column; flex-shrink:0; background:var(--surface); }
|
|
143
|
-
.detail.hidden { display:none; }
|
|
144
|
-
.detail-hdr { padding:18px 20px; border-bottom:1px solid var(--border-light); display:flex; align-items:center; }
|
|
145
|
-
.detail-hdr h2 { font-size:0.88rem; color:var(--text-primary); flex:1; font-weight:600; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
|
|
146
|
-
.detail-x { background:none; border:none; color:var(--text-faint); cursor:pointer; font-size:1.1rem; transition:color 0.1s; }
|
|
147
|
-
.detail-x:hover { color:var(--text-primary); }
|
|
148
|
-
.detail-bd { flex:1; overflow-y:auto; padding:18px 20px; }
|
|
149
|
-
.df { margin-bottom:16px; }
|
|
150
|
-
.dl { font-size:0.6rem; color:var(--text-muted); text-transform:uppercase; letter-spacing:0.8px; margin-bottom:4px; font-weight:600; }
|
|
151
|
-
.dv { font-size:0.78rem; color:var(--text-secondary); line-height:1.4; }
|
|
152
|
-
.dv a { color:var(--accent); text-decoration:none; }
|
|
153
|
-
.detail-ft { padding:16px 20px; border-top:1px solid var(--border-light); display:flex; gap:8px; }
|
|
154
|
-
.btn { padding:7px 16px; border-radius:8px; font-size:0.73rem; cursor:pointer; font-family:inherit; border:1px solid var(--border); font-weight:500; transition:all 0.15s; }
|
|
155
|
-
.btn-p { background:var(--accent); color:#fff; border-color:var(--accent); }
|
|
156
|
-
.btn-p:hover { background:#4e52b8; }
|
|
157
|
-
.btn-s { background:var(--surface); color:var(--text-secondary); }
|
|
158
|
-
.btn-s:hover { background:var(--hover); }
|
|
159
|
-
|
|
160
|
-
/* ── Modals ── */
|
|
161
|
-
.modal-bg { position:fixed; inset:0; background:rgba(30,32,40,0.25); display:flex; align-items:center; justify-content:center; z-index:100; backdrop-filter:blur(3px); }
|
|
162
|
-
.modal-bg.hidden { display:none; }
|
|
163
|
-
.modal { background:var(--surface); border:1px solid var(--border); border-radius:16px; width:420px; padding:24px; box-shadow:var(--shadow-md), 0 12px 40px rgba(0,0,0,0.08); }
|
|
164
|
-
.modal h3 { font-size:1rem; color:var(--text-primary); font-weight:700; margin-bottom:6px; }
|
|
165
|
-
.modal .modal-sub { font-size:0.7rem; color:var(--text-muted); margin-bottom:16px; }
|
|
166
|
-
.move-preview { background:var(--bg); border:1px solid var(--border-light); border-radius:10px; padding:16px; margin-bottom:18px; font-size:0.78rem; line-height:1.8; }
|
|
167
|
-
.move-from { color:#dc2626; font-weight:600; }
|
|
168
|
-
.move-to { color:#16a34a; font-weight:600; }
|
|
169
|
-
.move-item { color:var(--accent); font-weight:700; }
|
|
170
|
-
.modal-btns { display:flex; gap:8px; justify-content:flex-end; }
|
|
171
|
-
.modal-body { max-height:40vh; overflow-y:auto; margin-bottom:16px; }
|
|
172
|
-
|
|
173
|
-
.dest { padding:10px 14px; cursor:pointer; border-radius:8px; display:flex; align-items:center; gap:10px; font-size:0.78rem; margin:2px 0; border:1px solid transparent; transition:all 0.12s; }
|
|
174
|
-
.dest:hover { background:var(--hover); }
|
|
175
|
-
.dest.sel { background:var(--accent-light); border-color:var(--accent); }
|
|
176
|
-
.dest.cur { opacity:0.35; pointer-events:none; }
|
|
177
|
-
.dest.cur::after { content:'(current)'; font-size:0.58rem; color:var(--text-faint); margin-left:4px; }
|
|
178
|
-
.dest .di { font-size:0.85rem; }
|
|
179
|
-
.dest .dn { color:var(--text-primary); font-weight:600; }
|
|
180
|
-
.dest .dp { color:var(--text-muted); font-size:0.6rem; margin-left:auto; }
|
|
181
|
-
|
|
182
|
-
.toast { position:fixed; bottom:24px; left:50%; transform:translateX(-50%); background:var(--text-primary); color:#fff; padding:12px 28px; border-radius:12px; font-size:0.78rem; z-index:200; box-shadow:0 4px 20px rgba(0,0,0,0.12); font-weight:500; }
|
|
183
|
-
.toast.hidden { display:none; }
|
|
184
|
-
|
|
185
|
-
::-webkit-scrollbar { width:6px; }
|
|
186
|
-
::-webkit-scrollbar-track { background:transparent; }
|
|
187
|
-
::-webkit-scrollbar-thumb { background:var(--border); border-radius:3px; }
|
|
188
|
-
::-webkit-scrollbar-thumb:hover { background:var(--text-faint); }
|
|
189
|
-
</style>
|
|
190
|
-
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap" rel="stylesheet">
|
|
191
|
-
</head>
|
|
192
|
-
<body>
|
|
193
|
-
<div class="app">
|
|
194
|
-
<div class="tree-area">
|
|
195
|
-
<div class="page-hdr">
|
|
196
|
-
<div class="logo">C</div>
|
|
197
|
-
<h1>Claude Inventory</h1>
|
|
198
|
-
<span class="spacer"></span>
|
|
199
|
-
<div class="pills">
|
|
200
|
-
<span class="pill active" onclick="filterAll(this)">All <b>94</b></span>
|
|
201
|
-
<span class="pill" onclick="ft('memory',this)">🧠 Memory <b>30</b></span>
|
|
202
|
-
<span class="pill" onclick="ft('skill',this)">⚡ Skills <b>44</b></span>
|
|
203
|
-
<span class="pill" onclick="ft('mcp',this)">🔌 MCP <b>3</b></span>
|
|
204
|
-
<span class="pill" onclick="ft('config',this)">⚙️ Config <b>6</b></span>
|
|
205
|
-
<span class="pill" onclick="ft('hook',this)">🪝 Hooks <b>1</b></span>
|
|
206
|
-
<span class="pill" onclick="ft('plugin',this)">🧩 Plugins <b>1</b></span>
|
|
207
|
-
<span class="pill" onclick="ft('plan',this)">📐 Plans <b>9</b></span>
|
|
208
|
-
</div>
|
|
209
|
-
<input class="search" placeholder="Search..." id="si">
|
|
210
|
-
</div>
|
|
211
|
-
|
|
212
|
-
<!-- ═══ GLOBAL ═══ -->
|
|
213
|
-
<div class="scope-block">
|
|
214
|
-
<div class="scope-hdr" onclick="togS(this)"><span class="scope-tog">▼</span><span class="scope-ico">🌐</span><span class="scope-nm">Global</span><span class="scope-tag tag-global">applies everywhere</span><span class="scope-info"></span><span class="scope-cnt">21</span></div>
|
|
215
|
-
<div class="scope-body">
|
|
216
|
-
<div class="cat-hdr" data-cat="config" onclick="togC(this)"><span class="cat-tog">▼</span><span class="cat-ico">⚙️</span><span class="cat-nm">Config</span><span class="cat-cnt">3</span></div>
|
|
217
|
-
<div class="cat-body" data-cat="config"><div class="sortable-zone">
|
|
218
|
-
<div class="item-row locked" data-t="config"><span class="row-ico">📋</span><span class="row-name">CLAUDE.md</span><span class="row-badge b-config">🔒</span><span class="row-desc">Global instructions</span><span class="row-meta">5.1K</span></div>
|
|
219
|
-
<div class="item-row locked" data-t="config"><span class="row-ico">⚙️</span><span class="row-name">settings.json</span><span class="row-badge b-config">🔒</span><span class="row-meta">3.0K</span></div>
|
|
220
|
-
<div class="item-row locked" data-t="config"><span class="row-ico">⚙️</span><span class="row-name">settings.local.json</span><span class="row-badge b-config">🔒</span><span class="row-meta">4.4K</span></div>
|
|
221
|
-
</div></div>
|
|
222
|
-
|
|
223
|
-
<div class="cat-hdr" data-cat="memory" onclick="togC(this)"><span class="cat-tog">▼</span><span class="cat-ico">🧠</span><span class="cat-nm">Memories</span><span class="cat-cnt">2</span></div>
|
|
224
|
-
<div class="cat-body" data-cat="memory"><div class="sortable-zone" id="z-g-mem" data-scope="Global" data-group="memory">
|
|
225
|
-
<div class="item-row" data-t="memory" onclick="sd(this,'Use company GitHub for company repos','Always use nicole-alltrue for AllTrue repos, not ithiria894 (personal). gh CLI v2.88.1 with dual account setup.','feedback','Global','1.0K','2026-03-17')"><span class="row-ico">🧠</span><span class="row-name">Use company GitHub for company repos</span><span class="row-badge b-feedback">feedback</span><span class="row-desc">Always use nicole-alltrue for AllTrue repos</span><span class="row-meta">1.0K</span><span class="row-acts"><button class="rbtn" onclick="ev(event);om()">Move</button><button class="rbtn" onclick="ev(event)">Open</button></span></div>
|
|
226
|
-
<div class="item-row" data-t="memory" onclick="sd(this,'Always teach with real code','After every task, walkthrough what was done using real merged code. Teach like explaining to a high schooler.','feedback','Global','1.7K','2026-03-17')"><span class="row-ico">🧠</span><span class="row-name">Always teach with real code</span><span class="row-badge b-feedback">feedback</span><span class="row-desc">Walkthrough using real merged code</span><span class="row-meta">1.7K</span><span class="row-acts"><button class="rbtn" onclick="ev(event);om()">Move</button><button class="rbtn" onclick="ev(event)">Open</button></span></div>
|
|
227
|
-
</div></div>
|
|
228
|
-
|
|
229
|
-
<div class="cat-hdr" data-cat="skill" onclick="togC(this)"><span class="cat-tog">▼</span><span class="cat-ico">⚡</span><span class="cat-nm">Skills</span><span class="cat-cnt">17</span></div>
|
|
230
|
-
<div class="cat-body" data-cat="skill"><div class="sortable-zone" id="z-g-skill" data-scope="Global" data-group="skill">
|
|
231
|
-
<div class="item-row" data-t="skill"><span class="row-ico">⚡</span><span class="row-name">chrome-cdp</span><span class="row-badge b-skill">skill</span><span class="row-desc">Interact with local Chrome browser</span><span class="row-meta">3.1K</span><span class="row-acts"><button class="rbtn" onclick="ev(event);om()">Move</button><button class="rbtn" onclick="ev(event)">Open</button></span></div>
|
|
232
|
-
<div class="item-row" data-t="skill"><span class="row-ico">⚡</span><span class="row-name">fullstack-debug</span><span class="row-badge b-skill">skill</span><span class="row-desc">Full-stack debugging workflow</span><span class="row-meta">24.2K</span><span class="row-acts"><button class="rbtn" onclick="ev(event);om()">Move</button><button class="rbtn" onclick="ev(event)">Open</button></span></div>
|
|
233
|
-
<div class="item-row" data-t="skill"><span class="row-ico">⚡</span><span class="row-name">auto-commit</span><span class="row-badge b-skill">skill</span><span class="row-desc">Pre-commit, stage, commit</span><span class="row-meta">2.5K</span><span class="row-acts"><button class="rbtn" onclick="ev(event);om()">Move</button><button class="rbtn" onclick="ev(event)">Open</button></span></div>
|
|
234
|
-
<div class="item-row" data-t="skill"><span class="row-ico">⚡</span><span class="row-name">code-review</span><span class="row-badge b-skill">skill</span><span class="row-desc">CodeRabbit critical review</span><span class="row-meta">6.3K</span><span class="row-acts"><button class="rbtn" onclick="ev(event);om()">Move</button><button class="rbtn" onclick="ev(event)">Open</button></span></div>
|
|
235
|
-
<div class="item-row" data-t="skill"><span class="row-ico">⚡</span><span class="row-name">journal</span><span class="row-badge b-skill">skill</span><span class="row-desc">Daily work journal</span><span class="row-meta">7.7K</span><span class="row-acts"><button class="rbtn" onclick="ev(event);om()">Move</button><button class="rbtn" onclick="ev(event)">Open</button></span></div>
|
|
236
|
-
<div class="item-row" data-t="skill"><span class="row-ico">⚡</span><span class="row-name">babysit-pr</span><span class="row-badge b-skill">skill</span><span class="row-desc">Monitor PRs, auto-merge when CI passes</span><span class="row-meta">4.7K</span><span class="row-acts"><button class="rbtn" onclick="ev(event);om()">Move</button><button class="rbtn" onclick="ev(event)">Open</button></span></div>
|
|
237
|
-
<div class="item-row" data-t="skill"><span class="row-ico">⚡</span><span class="row-name">claude-inventory</span><span class="row-badge b-skill">skill</span><span class="row-desc">Visualize all Claude Code customizations</span><span class="row-meta">1.5K</span><span class="row-acts"><button class="rbtn" onclick="ev(event);om()">Move</button><button class="rbtn" onclick="ev(event)">Open</button></span></div>
|
|
238
|
-
<div class="item-row" data-t="skill"><span class="row-ico">⚡</span><span class="row-name">file-tax</span><span class="row-badge b-skill">skill</span><span class="row-desc">File Canadian income tax return</span><span class="row-meta">7.5K</span><span class="row-acts"><button class="rbtn" onclick="ev(event);om()">Move</button><button class="rbtn" onclick="ev(event)">Open</button></span></div>
|
|
239
|
-
<div class="item-row" data-t="skill"><span class="row-ico">⚡</span><span class="row-name">git-log</span><span class="row-badge b-skill">skill</span><span class="row-desc">Search git history for changes</span><span class="row-meta">3.3K</span><span class="row-acts"><button class="rbtn" onclick="ev(event);om()">Move</button><button class="rbtn" onclick="ev(event)">Open</button></span></div>
|
|
240
|
-
<div class="item-row" data-t="skill"><span class="row-ico">⚡</span><span class="row-name">inspect-branch</span><span class="row-badge b-skill">skill</span><span class="row-desc">Inspect local branches and PR links</span><span class="row-meta">795B</span><span class="row-acts"><button class="rbtn" onclick="ev(event);om()">Move</button><button class="rbtn" onclick="ev(event)">Open</button></span></div>
|
|
241
|
-
<div class="item-row" data-t="skill"><span class="row-ico">⚡</span><span class="row-name">paraphrase</span><span class="row-badge b-skill">skill</span><span class="row-desc">Rewrite message into natural English</span><span class="row-meta">3.2K</span><span class="row-acts"><button class="rbtn" onclick="ev(event);om()">Move</button><button class="rbtn" onclick="ev(event)">Open</button></span></div>
|
|
242
|
-
<div class="item-row" data-t="skill"><span class="row-ico">⚡</span><span class="row-name">slack-update</span><span class="row-badge b-skill">skill</span><span class="row-desc">Short Slack-style progress update</span><span class="row-meta">2.5K</span><span class="row-acts"><button class="rbtn" onclick="ev(event);om()">Move</button><button class="rbtn" onclick="ev(event)">Open</button></span></div>
|
|
243
|
-
<div class="item-row" data-t="skill"><span class="row-ico">⚡</span><span class="row-name">submit-ticket</span><span class="row-badge b-skill">skill</span><span class="row-desc">Submit Varonis IT ServiceNow ticket</span><span class="row-meta">7.5K</span><span class="row-acts"><button class="rbtn" onclick="ev(event);om()">Move</button><button class="rbtn" onclick="ev(event)">Open</button></span></div>
|
|
244
|
-
<div class="item-row" data-t="skill"><span class="row-ico">⚡</span><span class="row-name">todo</span><span class="row-badge b-skill">skill</span><span class="row-desc">Manage personal TODO list</span><span class="row-meta">4.7K</span><span class="row-acts"><button class="rbtn" onclick="ev(event);om()">Move</button><button class="rbtn" onclick="ev(event)">Open</button></span></div>
|
|
245
|
-
<div class="item-row" data-t="skill"><span class="row-ico">⚡</span><span class="row-name">update-branch</span><span class="row-badge b-skill">skill</span><span class="row-desc">Merge develop into feature branch</span><span class="row-meta">812B</span><span class="row-acts"><button class="rbtn" onclick="ev(event);om()">Move</button><button class="rbtn" onclick="ev(event)">Open</button></span></div>
|
|
246
|
-
<div class="item-row" data-t="skill"><span class="row-ico">⚡</span><span class="row-name">aws-login</span><span class="row-badge b-skill">skill</span><span class="row-desc">Check and refresh AWS SSO credentials</span><span class="row-meta">1.7K</span><span class="row-acts"><button class="rbtn" onclick="ev(event);om()">Move</button><button class="rbtn" onclick="ev(event)">Open</button></span></div>
|
|
247
|
-
<div class="item-row" data-t="skill"><span class="row-ico">⚡</span><span class="row-name">all-open-pr-code-review</span><span class="row-badge b-skill">skill</span><span class="row-desc">CodeRabbit review on all open PRs</span><span class="row-meta">6.5K</span><span class="row-acts"><button class="rbtn" onclick="ev(event);om()">Move</button><button class="rbtn" onclick="ev(event)">Open</button></span></div>
|
|
248
|
-
</div></div>
|
|
249
|
-
|
|
250
|
-
<div class="cat-hdr" data-cat="mcp" onclick="togC(this)"><span class="cat-tog">▼</span><span class="cat-ico">🔌</span><span class="cat-nm">MCP Servers</span><span class="cat-cnt">2</span></div>
|
|
251
|
-
<div class="cat-body" data-cat="mcp"><div class="sortable-zone" id="z-g-mcp" data-scope="Global" data-group="mcp">
|
|
252
|
-
<div class="item-row" data-t="mcp"><span class="row-ico">🔌</span><span class="row-name">gmail</span><span class="row-badge b-mcp">mcp</span><span class="row-desc">@gongrzhe/server-gmail-autoauth-mcp</span><span class="row-acts"><button class="rbtn" onclick="ev(event);om()">Move</button></span></div>
|
|
253
|
-
<div class="item-row" data-t="mcp"><span class="row-ico">🔌</span><span class="row-name">playwright</span><span class="row-badge b-mcp">mcp</span><span class="row-desc">@playwright/mcp@latest</span><span class="row-acts"><button class="rbtn" onclick="ev(event);om()">Move</button></span></div>
|
|
254
|
-
</div></div>
|
|
255
|
-
</div>
|
|
256
|
-
</div>
|
|
257
|
-
|
|
258
|
-
<!-- Projects wrapper (indented from Global) -->
|
|
259
|
-
<div style="margin-left:20px;">
|
|
260
|
-
|
|
261
|
-
<!-- ═══ ALLTRUEAI ═══ -->
|
|
262
|
-
<div class="scope-block">
|
|
263
|
-
<div class="scope-hdr" onclick="togS(this)"><span class="scope-tog">▼</span><span class="scope-ico">📂</span><span class="scope-nm">AlltrueAi</span><span class="scope-tag tag-workspace">workspace</span><span class="scope-info">3 sub-projects</span><span class="scope-cnt">28</span></div>
|
|
264
|
-
<div class="scope-body">
|
|
265
|
-
<div class="inherit"><span class="inherit-arrow">↳</span> Inherits <span class="inherit-pill">🌐 Global</span></div>
|
|
266
|
-
<div class="cat-hdr" data-cat="memory" onclick="togC(this)"><span class="cat-tog">▼</span><span class="cat-ico">🧠</span><span class="cat-nm">Memories</span><span class="cat-cnt">1</span></div>
|
|
267
|
-
<div class="cat-body" data-cat="memory"><div class="sortable-zone" id="z-at-mem" data-scope="AlltrueAi" data-group="memory">
|
|
268
|
-
<div class="item-row" data-t="memory"><span class="row-ico">🧠</span><span class="row-name">Chrome Pilot testing goals</span><span class="row-badge b-project">project</span><span class="row-desc">Testing goals for chrome-pilot 0.4.0</span><span class="row-meta">2.1K</span><span class="row-acts"><button class="rbtn" onclick="ev(event);om()">Move</button><button class="rbtn" onclick="ev(event)">Open</button></span></div>
|
|
269
|
-
</div></div>
|
|
270
|
-
|
|
271
|
-
<div class="cat-hdr" data-cat="mcp" onclick="togC(this)"><span class="cat-tog">▼</span><span class="cat-ico">🔌</span><span class="cat-nm">MCP Servers</span><span class="cat-cnt">1</span></div>
|
|
272
|
-
<div class="cat-body" data-cat="mcp"><div class="sortable-zone" id="z-at-mcp" data-scope="AlltrueAi" data-group="mcp">
|
|
273
|
-
<div class="item-row" data-t="mcp"><span class="row-ico">🔌</span><span class="row-name">logfire</span><span class="row-badge b-mcp">mcp</span><span class="row-desc">Logfire MCP server</span><span class="row-acts"><button class="rbtn" onclick="ev(event);om()">Move</button></span></div>
|
|
274
|
-
</div></div>
|
|
275
|
-
|
|
276
|
-
<div class="scope-block">
|
|
277
|
-
<div class="scope-hdr" onclick="togS(this)"><span class="scope-tog">▼</span><span class="scope-ico">📂</span><span class="scope-nm">ai-security-control-plane</span><span class="scope-tag tag-project">project</span><span class="scope-cnt">22</span></div>
|
|
278
|
-
<div class="scope-body">
|
|
279
|
-
<div class="inherit"><span class="inherit-arrow">↳</span> Inherits <span class="inherit-pill">🌐 Global</span> <span class="inherit-pill">📂 AlltrueAi</span></div>
|
|
280
|
-
<div class="cat-hdr" data-cat="memory" onclick="togC(this)"><span class="cat-tog">▼</span><span class="cat-ico">🧠</span><span class="cat-nm">Memories</span><span class="cat-cnt">8</span></div>
|
|
281
|
-
<div class="cat-body" data-cat="memory"><div class="sortable-zone" id="z-ascp-mem" data-scope="ai-security-control-plane" data-group="memory">
|
|
282
|
-
<div class="item-row" data-t="memory"><span class="row-ico">🧠</span><span class="row-name">Minimize screenshots</span><span class="row-badge b-feedback">feedback</span><span class="row-desc">Avoid screenshots with Chrome DevTools</span><span class="row-meta">607B</span><span class="row-acts"><button class="rbtn" onclick="ev(event);om()">Move</button><button class="rbtn" onclick="ev(event)">Open</button></span></div>
|
|
283
|
-
<div class="item-row" data-t="memory"><span class="row-ico">🧠</span><span class="row-name">Stop asking permission</span><span class="row-badge b-feedback">feedback</span><span class="row-desc">Never ask "can I?" — just execute</span><span class="row-meta">1.1K</span><span class="row-acts"><button class="rbtn" onclick="ev(event);om()">Move</button><button class="rbtn" onclick="ev(event)">Open</button></span></div>
|
|
284
|
-
<div class="item-row" data-t="memory"><span class="row-ico">🧠</span><span class="row-name">Verify DB schema before SQL</span><span class="row-badge b-feedback">feedback</span><span class="row-desc">Read actual DB models first</span><span class="row-meta">770B</span><span class="row-acts"><button class="rbtn" onclick="ev(event);om()">Move</button><button class="rbtn" onclick="ev(event)">Open</button></span></div>
|
|
285
|
-
<div class="item-row" data-t="memory"><span class="row-ico">🧠</span><span class="row-name">MCP Activity Dashboard</span><span class="row-badge b-reference">reference</span><span class="row-desc">Dashboard data flow, DB tables</span><span class="row-meta">7.3K</span><span class="row-acts"><button class="rbtn" onclick="ev(event);om()">Move</button><button class="rbtn" onclick="ev(event)">Open</button></span></div>
|
|
286
|
-
<div class="item-row" data-t="memory"><span class="row-ico">🧠</span><span class="row-name">user_languages</span><span class="row-badge b-user">user</span><span class="row-desc">Cantonese, English, Mandarin, Japanese</span><span class="row-meta">284B</span><span class="row-acts"><button class="rbtn" onclick="ev(event);om()">Move</button><button class="rbtn" onclick="ev(event)">Open</button></span></div>
|
|
287
|
-
<div class="item-row" data-t="memory"><span class="row-ico">🧠</span><span class="row-name">Slack updates don't need recipient</span><span class="row-badge b-feedback">feedback</span><span class="row-desc">Don't ask who the message is for</span><span class="row-meta">731B</span><span class="row-acts"><button class="rbtn" onclick="ev(event);om()">Move</button><button class="rbtn" onclick="ev(event)">Open</button></span></div>
|
|
288
|
-
<div class="item-row" data-t="memory"><span class="row-ico">🧠</span><span class="row-name">Always use slack-update skill for reports</span><span class="row-badge b-feedback">feedback</span><span class="row-desc">All reports must use /slack-update skill</span><span class="row-meta">668B</span><span class="row-acts"><button class="rbtn" onclick="ev(event);om()">Move</button><button class="rbtn" onclick="ev(event)">Open</button></span></div>
|
|
289
|
-
<div class="item-row" data-t="memory"><span class="row-ico">🧠</span><span class="row-name">Playground environment URLs</span><span class="row-badge b-reference">reference</span><span class="row-desc">AllTrue playground frontend and API URLs</span><span class="row-meta">349B</span><span class="row-acts"><button class="rbtn" onclick="ev(event);om()">Move</button><button class="rbtn" onclick="ev(event)">Open</button></span></div>
|
|
290
|
-
</div></div>
|
|
291
|
-
|
|
292
|
-
<div class="cat-hdr" data-cat="skill" onclick="togC(this)"><span class="cat-tog">▼</span><span class="cat-ico">⚡</span><span class="cat-nm">Skills</span><span class="cat-cnt">14</span></div>
|
|
293
|
-
<div class="cat-body" data-cat="skill"><div class="sortable-zone" id="z-ascp-skill" data-scope="ai-security-control-plane" data-group="skill">
|
|
294
|
-
<div class="item-row" data-t="skill"><span class="row-ico">⚡</span><span class="row-name">test-runner</span><span class="row-badge b-skill">skill</span><span class="row-desc">Run tests — verify before committing</span><span class="row-meta">4.3K</span><span class="row-acts"><button class="rbtn" onclick="ev(event);om()">Move</button><button class="rbtn" onclick="ev(event)">Open</button></span></div>
|
|
295
|
-
<div class="item-row" data-t="skill"><span class="row-ico">⚡</span><span class="row-name">test-generator</span><span class="row-badge b-skill">skill</span><span class="row-desc">Guide writing pytest tests</span><span class="row-meta">4.8K</span><span class="row-acts"><button class="rbtn" onclick="ev(event);om()">Move</button><button class="rbtn" onclick="ev(event)">Open</button></span></div>
|
|
296
|
-
<div class="item-row" data-t="skill"><span class="row-ico">⚡</span><span class="row-name">register-guardrail</span><span class="row-badge b-skill">skill</span><span class="row-desc">Register guardrail end-to-end</span><span class="row-meta">11.8K</span><span class="row-acts"><button class="rbtn" onclick="ev(event);om()">Move</button><button class="rbtn" onclick="ev(event)">Open</button></span></div>
|
|
297
|
-
<div class="item-row" data-t="skill"><span class="row-ico">⚡</span><span class="row-name">create-db-table</span><span class="row-badge b-skill">skill</span><span class="row-desc">Create database table</span><span class="row-meta">8.9K</span><span class="row-acts"><button class="rbtn" onclick="ev(event);om()">Move</button><button class="rbtn" onclick="ev(event)">Open</button></span></div>
|
|
298
|
-
<div class="item-row" data-t="skill"><span class="row-ico">⚡</span><span class="row-name">create-schema</span><span class="row-badge b-skill">skill</span><span class="row-desc">Create Pydantic schema</span><span class="row-meta">9.6K</span><span class="row-acts"><button class="rbtn" onclick="ev(event);om()">Move</button><button class="rbtn" onclick="ev(event)">Open</button></span></div>
|
|
299
|
-
<div class="item-row" data-t="skill"><span class="row-ico">⚡</span><span class="row-name">generate-alembic-migration</span><span class="row-badge b-skill">skill</span><span class="row-desc">Generate Alembic migration</span><span class="row-meta">3.5K</span><span class="row-acts"><button class="rbtn" onclick="ev(event);om()">Move</button><button class="rbtn" onclick="ev(event)">Open</button></span></div>
|
|
300
|
-
<div class="item-row" data-t="skill"><span class="row-ico">⚡</span><span class="row-name">make-pr</span><span class="row-badge b-skill">skill</span><span class="row-desc">Create GitHub pull request</span><span class="row-meta">3.0K</span><span class="row-acts"><button class="rbtn" onclick="ev(event);om()">Move</button><button class="rbtn" onclick="ev(event)">Open</button></span></div>
|
|
301
|
-
<div class="item-row" data-t="skill"><span class="row-ico">⚡</span><span class="row-name">new-feature-branch</span><span class="row-badge b-skill">skill</span><span class="row-desc">Start new feature branch</span><span class="row-meta">4.3K</span><span class="row-acts"><button class="rbtn" onclick="ev(event);om()">Move</button><button class="rbtn" onclick="ev(event)">Open</button></span></div>
|
|
302
|
-
<div class="item-row" data-t="skill"><span class="row-ico">⚡</span><span class="row-name">new-router</span><span class="row-badge b-skill">skill</span><span class="row-desc">Create new API router</span><span class="row-meta">9.7K</span><span class="row-acts"><button class="rbtn" onclick="ev(event);om()">Move</button><button class="rbtn" onclick="ev(event)">Open</button></span></div>
|
|
303
|
-
<div class="item-row" data-t="skill"><span class="row-ico">⚡</span><span class="row-name">paginate-graphql-endpoint</span><span class="row-badge b-skill">skill</span><span class="row-desc">Add pagination to GraphQL</span><span class="row-meta">10.0K</span><span class="row-acts"><button class="rbtn" onclick="ev(event);om()">Move</button><button class="rbtn" onclick="ev(event)">Open</button></span></div>
|
|
304
|
-
<div class="item-row" data-t="skill"><span class="row-ico">⚡</span><span class="row-name">paginate-rest-endpoint</span><span class="row-badge b-skill">skill</span><span class="row-desc">Add pagination to REST</span><span class="row-meta">9.8K</span><span class="row-acts"><button class="rbtn" onclick="ev(event);om()">Move</button><button class="rbtn" onclick="ev(event)">Open</button></span></div>
|
|
305
|
-
<div class="item-row" data-t="skill"><span class="row-ico">⚡</span><span class="row-name">query-local-db</span><span class="row-badge b-skill">skill</span><span class="row-desc">Query local database</span><span class="row-meta">2.1K</span><span class="row-acts"><button class="rbtn" onclick="ev(event);om()">Move</button><button class="rbtn" onclick="ev(event)">Open</button></span></div>
|
|
306
|
-
<div class="item-row" data-t="skill"><span class="row-ico">⚡</span><span class="row-name">skill-builder</span><span class="row-badge b-skill">skill</span><span class="row-desc">Create a new Claude Code skill</span><span class="row-meta">2.9K</span><span class="row-acts"><button class="rbtn" onclick="ev(event);om()">Move</button><button class="rbtn" onclick="ev(event)">Open</button></span></div>
|
|
307
|
-
<div class="item-row" data-t="skill"><span class="row-ico">⚡</span><span class="row-name">add-common-error</span><span class="row-badge b-skill">skill</span><span class="row-desc">Document new common error pattern</span><span class="row-meta">1.7K</span><span class="row-acts"><button class="rbtn" onclick="ev(event);om()">Move</button><button class="rbtn" onclick="ev(event)">Open</button></span></div>
|
|
308
|
-
</div></div>
|
|
309
|
-
</div>
|
|
310
|
-
</div>
|
|
311
|
-
|
|
312
|
-
<div class="scope-block"><div class="scope-hdr" onclick="togS(this)"><span class="scope-tog c">▼</span><span class="scope-ico">📂</span><span class="scope-nm">ai-security-ui</span><span class="scope-tag tag-project">project</span><span class="scope-cnt">3</span></div><div class="scope-body c"></div></div>
|
|
313
|
-
<div class="scope-block"><div class="scope-hdr" onclick="togS(this)"><span class="scope-tog c">▼</span><span class="scope-ico">📂</span><span class="scope-nm">rule-processor</span><span class="scope-tag tag-project">project</span><span class="scope-cnt">8</span></div><div class="scope-body c"></div></div>
|
|
314
|
-
</div>
|
|
315
|
-
</div>
|
|
316
|
-
|
|
317
|
-
<!-- ═══ MYGITHUB ═══ -->
|
|
318
|
-
<div class="scope-block">
|
|
319
|
-
<div class="scope-hdr" onclick="togS(this)"><span class="scope-tog">▼</span><span class="scope-ico">📂</span><span class="scope-nm">MyGithub</span><span class="scope-tag tag-project">project</span><span class="scope-cnt">10</span></div>
|
|
320
|
-
<div class="scope-body">
|
|
321
|
-
<div class="inherit"><span class="inherit-arrow">↳</span> Inherits <span class="inherit-pill">🌐 Global</span></div>
|
|
322
|
-
<div class="cat-hdr" data-cat="memory" onclick="togC(this)"><span class="cat-tog">▼</span><span class="cat-ico">🧠</span><span class="cat-nm">Memories</span><span class="cat-cnt">10</span></div>
|
|
323
|
-
<div class="cat-body" data-cat="memory"><div class="sortable-zone" id="z-mg-mem" data-scope="MyGithub" data-group="memory">
|
|
324
|
-
<div class="item-row" data-t="memory"><span class="row-ico">🧠</span><span class="row-name">Use Codex for personal study</span><span class="row-badge b-feedback">feedback</span><span class="row-desc">Study code must go through Codex CLI</span><span class="row-meta">1.6K</span><span class="row-acts"><button class="rbtn" onclick="ev(event);om()">Move</button><button class="rbtn" onclick="ev(event)">Open</button></span></div>
|
|
325
|
-
<div class="item-row" data-t="memory"><span class="row-ico">🧠</span><span class="row-name">MyGithub uses personal GitHub</span><span class="row-badge b-feedback">feedback</span><span class="row-desc">All repos must use ithiria894</span><span class="row-meta">1.0K</span><span class="row-acts"><button class="rbtn" onclick="ev(event);om()">Move</button><button class="rbtn" onclick="ev(event)">Open</button></span></div>
|
|
326
|
-
<div class="item-row" data-t="memory"><span class="row-ico">🧠</span><span class="row-name">Nicole's AI usage profile</span><span class="row-badge b-user">user</span><span class="row-desc">Heavy AI user, AI as infrastructure</span><span class="row-meta">1.0K</span><span class="row-acts"><button class="rbtn" onclick="ev(event);om()">Move</button><button class="rbtn" onclick="ev(event)">Open</button></span></div>
|
|
327
|
-
<div class="item-row" data-t="memory"><span class="row-ico">🧠</span><span class="row-name">Business philosophy — system architect</span><span class="row-badge b-user">user</span><span class="row-desc">Businesses as distributed systems</span><span class="row-meta">1.1K</span><span class="row-acts"><button class="rbtn" onclick="ev(event);om()">Move</button><button class="rbtn" onclick="ev(event)">Open</button></span></div>
|
|
328
|
-
<div class="item-row" data-t="memory"><span class="row-ico">🧠</span><span class="row-name">Market research must check official sources</span><span class="row-badge b-feedback">feedback</span><span class="row-desc">Exhaustively search for official solutions first</span><span class="row-meta">1.1K</span><span class="row-acts"><button class="rbtn" onclick="ev(event);om()">Move</button><button class="rbtn" onclick="ev(event)">Open</button></span></div>
|
|
329
|
-
<div class="item-row" data-t="memory"><span class="row-ico">🧠</span><span class="row-name">Use neutral professional framing</span><span class="row-badge b-feedback">feedback</span><span class="row-desc">Claude output uses professional terminology</span><span class="row-meta">2.4K</span><span class="row-acts"><button class="rbtn" onclick="ev(event);om()">Move</button><button class="rbtn" onclick="ev(event)">Open</button></span></div>
|
|
330
|
-
<div class="item-row" data-t="memory"><span class="row-ico">🧠</span><span class="row-name">Always source nvm before node/npx</span><span class="row-badge b-feedback">feedback</span><span class="row-desc">Running npx without nvm.sh can break nvm default</span><span class="row-meta">980B</span><span class="row-acts"><button class="rbtn" onclick="ev(event);om()">Move</button><button class="rbtn" onclick="ev(event)">Open</button></span></div>
|
|
331
|
-
<div class="item-row" data-t="memory"><span class="row-ico">🧠</span><span class="row-name">Use personal SSH key for MyGithub pushes</span><span class="row-badge b-feedback">feedback</span><span class="row-desc">Switch gh to ithiria894, use github.com-personal</span><span class="row-meta">872B</span><span class="row-acts"><button class="rbtn" onclick="ev(event);om()">Move</button><button class="rbtn" onclick="ev(event)">Open</button></span></div>
|
|
332
|
-
<div class="item-row" data-t="memory"><span class="row-ico">🧠</span><span class="row-name">Always update C facts folder</span><span class="row-badge b-feedback">feedback</span><span class="row-desc">Update ~/MyGithub/C/ when user shares C info</span><span class="row-meta">705B</span><span class="row-acts"><button class="rbtn" onclick="ev(event);om()">Move</button><button class="rbtn" onclick="ev(event)">Open</button></span></div>
|
|
333
|
-
<div class="item-row" data-t="memory"><span class="row-ico">🧠</span><span class="row-name">Side hustle docs structure</span><span class="row-badge b-project">project</span><span class="row-desc">OVERVIEW.md → 1-think/2-build/3-ship/4-grow</span><span class="row-meta">1.2K</span><span class="row-acts"><button class="rbtn" onclick="ev(event);om()">Move</button><button class="rbtn" onclick="ev(event)">Open</button></span></div>
|
|
334
|
-
<div class="item-row" data-t="memory"><span class="row-ico">🧠</span><span class="row-name">npm publish setup</span><span class="row-badge b-reference">reference</span><span class="row-desc">npm account ithiria, orgs @mcpware @agents-io</span><span class="row-meta">881B</span><span class="row-acts"><button class="rbtn" onclick="ev(event);om()">Move</button><button class="rbtn" onclick="ev(event)">Open</button></span></div>
|
|
335
|
-
</div></div>
|
|
336
|
-
</div>
|
|
337
|
-
</div>
|
|
338
|
-
|
|
339
|
-
<!-- ═══ DOCUMENTS ═══ -->
|
|
340
|
-
<div class="scope-block"><div class="scope-hdr" onclick="togS(this)"><span class="scope-tog c">▼</span><span class="scope-ico">📂</span><span class="scope-nm">Documents</span><span class="scope-tag tag-project">project</span><span class="scope-cnt">1</span></div><div class="scope-body c"></div></div>
|
|
341
|
-
|
|
342
|
-
</div><!-- end projects wrapper -->
|
|
343
|
-
</div>
|
|
344
|
-
|
|
345
|
-
<!-- Detail panel -->
|
|
346
|
-
<div class="detail hidden" id="dp">
|
|
347
|
-
<div class="detail-hdr"><h2 id="dt">—</h2><button class="detail-x" onclick="cd()">×</button></div>
|
|
348
|
-
<div class="detail-bd">
|
|
349
|
-
<div class="df"><div class="dl">Type</div><div class="dv" id="dty">—</div></div>
|
|
350
|
-
<div class="df"><div class="dl">Scope</div><div class="dv" id="dsc">—</div></div>
|
|
351
|
-
<div class="df"><div class="dl">Description</div><div class="dv" id="dde">—</div></div>
|
|
352
|
-
<div class="df"><div class="dl">Size</div><div class="dv" id="dsz">—</div></div>
|
|
353
|
-
<div class="df"><div class="dl">Modified</div><div class="dv" id="dda">—</div></div>
|
|
354
|
-
</div>
|
|
355
|
-
<div class="detail-ft"><button class="btn btn-p">Open in Editor</button><button class="btn btn-s" onclick="om()">Move to...</button></div>
|
|
356
|
-
</div>
|
|
357
|
-
</div>
|
|
358
|
-
|
|
359
|
-
<!-- Drag confirm -->
|
|
360
|
-
<div class="modal-bg hidden" id="dragConfirm">
|
|
361
|
-
<div class="modal">
|
|
362
|
-
<h3>Confirm Move</h3>
|
|
363
|
-
<div class="modal-sub">This will move the file in your Claude config</div>
|
|
364
|
-
<div class="move-preview">
|
|
365
|
-
<div>Move <span class="move-item" id="dc-item">—</span></div>
|
|
366
|
-
<div style="margin-top:8px">From: <span class="move-from" id="dc-from">—</span></div>
|
|
367
|
-
<div>To: <span class="move-to" id="dc-to">—</span></div>
|
|
368
|
-
</div>
|
|
369
|
-
<div class="modal-btns"><button class="btn btn-s" onclick="cancelDrag()">Cancel</button><button class="btn btn-p" onclick="confirmDrag()">Yes, move it</button></div>
|
|
370
|
-
</div>
|
|
371
|
-
</div>
|
|
372
|
-
|
|
373
|
-
<!-- Move-to picker -->
|
|
374
|
-
<div class="modal-bg hidden" id="mm" onclick="if(event.target===this)cm()">
|
|
375
|
-
<div class="modal">
|
|
376
|
-
<h3>Move to...</h3>
|
|
377
|
-
<div class="modal-sub">Select destination scope</div>
|
|
378
|
-
<div class="modal-body">
|
|
379
|
-
<div class="dest" onclick="sld(this)"><span class="di">🌐</span><span class="dn">Global</span><span class="dp">applies everywhere</span></div>
|
|
380
|
-
<div class="dest" onclick="sld(this)"><span class="di">📂</span><span class="dn">AlltrueAi</span><span class="dp">workspace</span></div>
|
|
381
|
-
<div class="dest" onclick="sld(this)" style="padding-left:36px"><span class="di">📂</span><span class="dn">ai-security-control-plane</span></div>
|
|
382
|
-
<div class="dest" onclick="sld(this)" style="padding-left:36px"><span class="di">📂</span><span class="dn">ai-security-ui</span></div>
|
|
383
|
-
<div class="dest" onclick="sld(this)" style="padding-left:36px"><span class="di">📂</span><span class="dn">rule-processor</span></div>
|
|
384
|
-
<div class="dest" onclick="sld(this)"><span class="di">📂</span><span class="dn">MyGithub</span></div>
|
|
385
|
-
<div class="dest" onclick="sld(this)"><span class="di">📂</span><span class="dn">Documents</span></div>
|
|
386
|
-
</div>
|
|
387
|
-
<div class="modal-btns"><button class="btn btn-s" onclick="cm()">Cancel</button><button class="btn btn-p" id="cmb" onclick="dm()" disabled>Move here</button></div>
|
|
388
|
-
</div>
|
|
389
|
-
</div>
|
|
390
|
-
|
|
391
|
-
<div class="toast hidden" id="tt"><span id="tm">Done</span></div>
|
|
392
|
-
|
|
393
|
-
<script>
|
|
394
|
-
function ev(e){e.stopPropagation()}
|
|
395
|
-
function togS(h){const b=h.closest('.scope-block').querySelector(':scope>.scope-body');const t=h.querySelector('.scope-tog');b.classList.toggle('c');t.classList.toggle('c')}
|
|
396
|
-
function togC(r){const b=r.nextElementSibling;const t=r.querySelector('.cat-tog');b.classList.toggle('c');t.classList.toggle('c')}
|
|
397
|
-
function sd(el,n,d,t,s,sz,dt){document.getElementById('dp').classList.remove('hidden');document.getElementById('dt').textContent=n;document.getElementById('dty').innerHTML='<span class="row-badge b-'+t+'">'+t+'</span>';document.getElementById('dsc').textContent=s;document.getElementById('dde').textContent=d;document.getElementById('dsz').textContent=sz;document.getElementById('dda').textContent=dt;document.querySelectorAll('.item-row.selected').forEach(c=>c.classList.remove('selected'));el.classList.add('selected')}
|
|
398
|
-
function cd(){document.getElementById('dp').classList.add('hidden');document.querySelectorAll('.item-row.selected').forEach(c=>c.classList.remove('selected'))}
|
|
399
|
-
function om(){document.getElementById('mm').classList.remove('hidden')}
|
|
400
|
-
function cm(){document.getElementById('mm').classList.add('hidden');document.querySelectorAll('.dest').forEach(d=>d.classList.remove('sel'));document.getElementById('cmb').disabled=true}
|
|
401
|
-
function sld(el){document.querySelectorAll('.dest').forEach(d=>d.classList.remove('sel'));el.classList.add('sel');document.getElementById('cmb').disabled=false}
|
|
402
|
-
function dm(){cm();toast('Moved successfully!')}
|
|
403
|
-
let pendingDrag=null;
|
|
404
|
-
function showDragConfirm(n,f,t,rv){pendingDrag={rv};document.getElementById('dc-item').textContent=n;document.getElementById('dc-from').textContent=f;document.getElementById('dc-to').textContent=t;document.getElementById('dragConfirm').classList.remove('hidden')}
|
|
405
|
-
function confirmDrag(){document.getElementById('dragConfirm').classList.add('hidden');toast('Moved "'+document.getElementById('dc-item').textContent+'" → '+document.getElementById('dc-to').textContent);pendingDrag=null}
|
|
406
|
-
function cancelDrag(){document.getElementById('dragConfirm').classList.add('hidden');if(pendingDrag&&pendingDrag.rv)pendingDrag.rv();pendingDrag=null}
|
|
407
|
-
function toast(m){const t=document.getElementById('tt');document.getElementById('tm').textContent=m;t.classList.remove('hidden');setTimeout(()=>t.classList.add('hidden'),3000)}
|
|
408
|
-
function filterAll(el){document.querySelectorAll('.pill').forEach(p=>p.classList.remove('active'));el.classList.add('active');document.querySelectorAll('.cat-hdr,.cat-body').forEach(s=>s.style.display='')}
|
|
409
|
-
function ft(type,el){document.querySelectorAll('.pill').forEach(p=>p.classList.remove('active'));el.classList.add('active');document.querySelectorAll('.cat-hdr').forEach(r=>{r.style.display=r.dataset.cat===type?'':'none'});document.querySelectorAll('.cat-body').forEach(b=>{b.style.display=b.dataset.cat===type?'':'none'})}
|
|
410
|
-
document.getElementById('si').addEventListener('input',function(){const q=this.value.toLowerCase();document.querySelectorAll('.item-row').forEach(c=>{c.style.display=(!q||c.textContent.toLowerCase().includes(q))?'':'none'})});
|
|
411
|
-
document.querySelectorAll('.sortable-zone').forEach(el=>{
|
|
412
|
-
const grp=el.dataset.group||'none';
|
|
413
|
-
Sortable.create(el,{group:grp,animation:150,ghostClass:'sortable-ghost',chosenClass:'sortable-chosen',draggable:'.item-row:not(.locked)',fallbackOnBody:true,scroll:true,scrollSensitivity:60,
|
|
414
|
-
onEnd(evt){if(evt.from!==evt.to){const item=evt.item;const name=item.querySelector('.row-name')?.textContent||'item';const fromScope=evt.from.dataset.scope||'?';const toScope=evt.to.dataset.scope||'?';const oldParent=evt.from;const oldIndex=evt.oldIndex;const rv=()=>{if(oldIndex>=oldParent.children.length)oldParent.appendChild(item);else oldParent.insertBefore(item,oldParent.children[oldIndex])};showDragConfirm(name,fromScope,toScope,rv)}}
|
|
415
|
-
});
|
|
416
|
-
});
|
|
417
|
-
</script>
|
|
418
|
-
</body>
|
|
419
|
-
</html>
|