@mcpware/claude-code-organizer 0.1.0

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/mockup.html ADDED
@@ -0,0 +1,419 @@
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()">&times;</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>
package/package.json ADDED
@@ -0,0 +1,39 @@
1
+ {
2
+ "name": "@mcpware/claude-code-organizer",
3
+ "version": "0.1.0",
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
+ "type": "module",
6
+ "bin": {
7
+ "claude-code-organizer": "./bin/cli.mjs"
8
+ },
9
+ "scripts": {
10
+ "start": "node bin/cli.mjs"
11
+ },
12
+ "keywords": [
13
+ "claude-code",
14
+ "organizer",
15
+ "claude-memory",
16
+ "claude-skills",
17
+ "mcp-servers",
18
+ "claude-config",
19
+ "scope-manager",
20
+ "memory-manager",
21
+ "skill-manager",
22
+ "drag-and-drop",
23
+ "claude-code-plugin",
24
+ "claude-admin",
25
+ "claude-settings",
26
+ "claude-hooks",
27
+ "config-manager"
28
+ ],
29
+ "author": "ithiria894",
30
+ "license": "MIT",
31
+ "repository": {
32
+ "type": "git",
33
+ "url": "https://github.com/mcpware/claude-code-organizer"
34
+ },
35
+ "engines": {
36
+ "node": ">=20"
37
+ },
38
+ "dependencies": {}
39
+ }