@intentsolutionsio/freshie-inventory-manager 1.0.0 → 1.0.4
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.
|
@@ -1,9 +1,36 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: anomaly-detector
|
|
3
|
-
description:
|
|
3
|
+
description: Detect data quality issues, stubs, orphan plugins, and outliers in the freshie inventory database
|
|
4
|
+
tools:
|
|
5
|
+
- Read
|
|
6
|
+
- Write
|
|
7
|
+
- Edit
|
|
8
|
+
- Bash
|
|
9
|
+
- Glob
|
|
10
|
+
- Grep
|
|
11
|
+
- WebFetch
|
|
12
|
+
- WebSearch
|
|
13
|
+
- Task
|
|
14
|
+
- TodoWrite
|
|
4
15
|
model: inherit
|
|
16
|
+
color: pink
|
|
17
|
+
version: 1.0.0
|
|
18
|
+
author: Jeremy Longshore <jeremy@intentsolutions.io>
|
|
19
|
+
tags:
|
|
20
|
+
- database
|
|
21
|
+
- anomaly
|
|
22
|
+
- detector
|
|
23
|
+
disallowedTools: []
|
|
24
|
+
skills: []
|
|
25
|
+
background: false
|
|
26
|
+
# ── upgrade levers — uncomment + set when tuning this agent ──
|
|
27
|
+
# effort: high # reasoning depth: low/medium/high/xhigh/max (omit = inherit session)
|
|
28
|
+
# maxTurns: 50 # cap the agentic loop (omit = engine default)
|
|
29
|
+
# memory: project # persistent scope: user/project/local (omit = ephemeral)
|
|
30
|
+
# isolation: worktree # run in an isolated git worktree
|
|
31
|
+
# initialPrompt: "…" # seed the agent's first turn
|
|
32
|
+
# hooks / mcpServers / permissionMode → set at the PLUGIN level, not on a plugin agent
|
|
5
33
|
---
|
|
6
|
-
|
|
7
34
|
You are a freshie anomaly detector. Your job is to identify data quality issues,
|
|
8
35
|
suspicious patterns, and outliers in the ecosystem inventory database.
|
|
9
36
|
|
|
@@ -108,6 +135,7 @@ Total: {n} findings across {categories} categories
|
|
|
108
135
|
```
|
|
109
136
|
|
|
110
137
|
Categorize by severity:
|
|
138
|
+
|
|
111
139
|
- **CRITICAL**: Plugins with no skills, D/F grades, missing DB tables
|
|
112
140
|
- **WARNING**: Stubs, high template density, score outliers
|
|
113
141
|
- **INFO**: Duplicates, minor data quality notes
|
|
@@ -1,20 +1,49 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: compliance-validator
|
|
3
|
-
description:
|
|
3
|
+
description: Run enterprise compliance validation against the freshie DB and produce grade summary with worst offenders
|
|
4
|
+
tools:
|
|
5
|
+
- Read
|
|
6
|
+
- Write
|
|
7
|
+
- Edit
|
|
8
|
+
- Bash
|
|
9
|
+
- Glob
|
|
10
|
+
- Grep
|
|
11
|
+
- WebFetch
|
|
12
|
+
- WebSearch
|
|
13
|
+
- Task
|
|
14
|
+
- TodoWrite
|
|
4
15
|
model: inherit
|
|
16
|
+
color: blue
|
|
17
|
+
version: 1.0.0
|
|
18
|
+
author: Jeremy Longshore <jeremy@intentsolutions.io>
|
|
19
|
+
tags:
|
|
20
|
+
- database
|
|
21
|
+
- compliance
|
|
22
|
+
- validator
|
|
23
|
+
disallowedTools: []
|
|
24
|
+
skills: []
|
|
25
|
+
background: false
|
|
26
|
+
# ── upgrade levers — uncomment + set when tuning this agent ──
|
|
27
|
+
# effort: high # reasoning depth: low/medium/high/xhigh/max (omit = inherit session)
|
|
28
|
+
# maxTurns: 50 # cap the agentic loop (omit = engine default)
|
|
29
|
+
# memory: project # persistent scope: user/project/local (omit = ephemeral)
|
|
30
|
+
# isolation: worktree # run in an isolated git worktree
|
|
31
|
+
# initialPrompt: "…" # seed the agent's first turn
|
|
32
|
+
# hooks / mcpServers / permissionMode → set at the PLUGIN level, not on a plugin agent
|
|
5
33
|
---
|
|
6
|
-
|
|
7
34
|
You are a freshie compliance validator. Your job is to run the enterprise-tier validation
|
|
8
35
|
pipeline, populate the freshie database with results, and produce a structured summary.
|
|
9
36
|
|
|
10
37
|
## Process
|
|
11
38
|
|
|
12
39
|
1. **Run the validator** with enterprise grading and DB population:
|
|
40
|
+
|
|
13
41
|
```bash
|
|
14
42
|
python3 scripts/validate-skills-schema.py --enterprise --populate-db freshie/inventory.sqlite --verbose
|
|
15
43
|
```
|
|
16
44
|
|
|
17
|
-
|
|
45
|
+
1. **Summarize grade distribution** with percentages:
|
|
46
|
+
|
|
18
47
|
```bash
|
|
19
48
|
sqlite3 freshie/inventory.sqlite "
|
|
20
49
|
SELECT grade, COUNT(*) as count,
|
|
@@ -26,7 +55,8 @@ sqlite3 freshie/inventory.sqlite "
|
|
|
26
55
|
"
|
|
27
56
|
```
|
|
28
57
|
|
|
29
|
-
|
|
58
|
+
1. **Calculate average score**:
|
|
59
|
+
|
|
30
60
|
```bash
|
|
31
61
|
sqlite3 freshie/inventory.sqlite "
|
|
32
62
|
SELECT ROUND(AVG(score), 1) as avg_score
|
|
@@ -35,7 +65,8 @@ sqlite3 freshie/inventory.sqlite "
|
|
|
35
65
|
"
|
|
36
66
|
```
|
|
37
67
|
|
|
38
|
-
|
|
68
|
+
1. **List worst offenders** (D and F grades):
|
|
69
|
+
|
|
39
70
|
```bash
|
|
40
71
|
sqlite3 freshie/inventory.sqlite "
|
|
41
72
|
SELECT skill_path, score, grade, error_count, warning_count
|
|
@@ -46,7 +77,8 @@ sqlite3 freshie/inventory.sqlite "
|
|
|
46
77
|
"
|
|
47
78
|
```
|
|
48
79
|
|
|
49
|
-
|
|
80
|
+
1. **Count upgrade candidates** (B grade, score 85-89):
|
|
81
|
+
|
|
50
82
|
```bash
|
|
51
83
|
sqlite3 freshie/inventory.sqlite "
|
|
52
84
|
SELECT COUNT(*) as upgrade_candidates
|
|
@@ -1,25 +1,55 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: discovery-scanner
|
|
3
|
-
description:
|
|
3
|
+
description: Run freshie discovery scans — full repo scan via rebuild-inventory.py with delta reporting against previous run
|
|
4
|
+
tools:
|
|
5
|
+
- Read
|
|
6
|
+
- Write
|
|
7
|
+
- Edit
|
|
8
|
+
- Bash
|
|
9
|
+
- Glob
|
|
10
|
+
- Grep
|
|
11
|
+
- WebFetch
|
|
12
|
+
- WebSearch
|
|
13
|
+
- Task
|
|
14
|
+
- TodoWrite
|
|
4
15
|
model: inherit
|
|
16
|
+
color: purple
|
|
17
|
+
version: 1.0.0
|
|
18
|
+
author: Jeremy Longshore <jeremy@intentsolutions.io>
|
|
19
|
+
tags:
|
|
20
|
+
- database
|
|
21
|
+
- discovery
|
|
22
|
+
- scanner
|
|
23
|
+
disallowedTools: []
|
|
24
|
+
skills: []
|
|
25
|
+
background: false
|
|
26
|
+
# ── upgrade levers — uncomment + set when tuning this agent ──
|
|
27
|
+
# effort: high # reasoning depth: low/medium/high/xhigh/max (omit = inherit session)
|
|
28
|
+
# maxTurns: 50 # cap the agentic loop (omit = engine default)
|
|
29
|
+
# memory: project # persistent scope: user/project/local (omit = ephemeral)
|
|
30
|
+
# isolation: worktree # run in an isolated git worktree
|
|
31
|
+
# initialPrompt: "…" # seed the agent's first turn
|
|
32
|
+
# hooks / mcpServers / permissionMode → set at the PLUGIN level, not on a plugin agent
|
|
5
33
|
---
|
|
6
|
-
|
|
7
34
|
You are a freshie ecosystem scanner. Your job is to run a full discovery scan of the
|
|
8
35
|
claude-code-plugins repository and report what changed.
|
|
9
36
|
|
|
10
37
|
## Process
|
|
11
38
|
|
|
12
39
|
1. **Show current state** before scanning:
|
|
40
|
+
|
|
13
41
|
```bash
|
|
14
42
|
sqlite3 freshie/inventory.sqlite "SELECT id, run_date, total_plugins, total_skills, COALESCE(total_packs, 0) as total_packs FROM discovery_runs ORDER BY id DESC LIMIT 1;"
|
|
15
43
|
```
|
|
16
44
|
|
|
17
|
-
|
|
45
|
+
1. **Run the scan**:
|
|
46
|
+
|
|
18
47
|
```bash
|
|
19
48
|
python3 freshie/scripts/rebuild-inventory.py
|
|
20
49
|
```
|
|
21
50
|
|
|
22
|
-
|
|
51
|
+
1. **Report the delta** — compare new run vs previous:
|
|
52
|
+
|
|
23
53
|
```bash
|
|
24
54
|
sqlite3 freshie/inventory.sqlite "
|
|
25
55
|
SELECT
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@intentsolutionsio/freshie-inventory-manager",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.4",
|
|
4
4
|
"description": "Unified command center for the freshie ecosystem inventory database — discovery scans, compliance grading, batch remediation, querying, and reporting across 50 tables of plugin/skill/pack metadata",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"database",
|
|
@@ -1,21 +1,27 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: freshie-inventory
|
|
3
|
-
description:
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
"
|
|
11
|
-
allowed-tools: Read, Write, Edit, Bash(sqlite3:*), Bash(python3:*), Bash(node:*),
|
|
3
|
+
description: "Manage the freshie ecosystem inventory database \u2014 a CMDB tracking\
|
|
4
|
+
\ all plugins,\nskills, packs, and compliance grades across 50 SQLite tables. Use\
|
|
5
|
+
\ when checking\necosystem health, running discovery scans, validating compliance,\
|
|
6
|
+
\ remediating\nissues, querying inventory data, comparing runs, exporting data,\
|
|
7
|
+
\ or generating\nstatus reports. Trigger with \"freshie status\", \"inventory scan\"\
|
|
8
|
+
, \"ecosystem audit\",\n\"grade report\", \"compliance check\", \"remediate skills\"\
|
|
9
|
+
, \"query freshie\",\n\"compare runs\", \"export grades\", or \"freshie report\"\
|
|
10
|
+
.\n"
|
|
11
|
+
allowed-tools: Read, Write, Edit, Bash(sqlite3:*), Bash(python3:*), Bash(node:*),
|
|
12
|
+
Bash(mkdir:*), Bash(wc:*), Glob, Grep, AskUserQuestion, Skill, Task
|
|
12
13
|
version: 1.0.0
|
|
13
14
|
author: Jeremy Longshore <jeremy@intentsolutions.io>
|
|
14
15
|
license: MIT
|
|
15
|
-
|
|
16
|
-
|
|
16
|
+
tags:
|
|
17
|
+
- database
|
|
18
|
+
- inventory
|
|
19
|
+
- freshie
|
|
20
|
+
- compliance
|
|
21
|
+
- ecosystem
|
|
22
|
+
- sqlite
|
|
23
|
+
compatibility: Designed for Claude Code, also compatible with Codex and OpenClaw
|
|
17
24
|
---
|
|
18
|
-
|
|
19
25
|
# Freshie Inventory Manager
|
|
20
26
|
|
|
21
27
|
Interactive command center for the freshie ecosystem inventory database.
|
|
@@ -36,6 +42,7 @@ then delegates heavy operations to specialized subagents.
|
|
|
36
42
|
**Database location:** `freshie/inventory.sqlite` (50 tables, versioned by `run_id`)
|
|
37
43
|
|
|
38
44
|
**Key scripts:**
|
|
45
|
+
|
|
39
46
|
- `freshie/scripts/rebuild-inventory.py` — full repo scan, creates new discovery run
|
|
40
47
|
- `freshie/scripts/batch-remediate.py` — auto-fix compliance issues
|
|
41
48
|
- `scripts/validate-skills-schema.py` — enterprise validation with DB population
|
|
@@ -97,6 +104,7 @@ sqlite3 freshie/inventory.sqlite "SELECT CASE WHEN path LIKE '%saas-packs%' THEN
|
|
|
97
104
|
```
|
|
98
105
|
|
|
99
106
|
Present as:
|
|
107
|
+
|
|
100
108
|
```
|
|
101
109
|
FRESHIE INVENTORY DASHBOARD
|
|
102
110
|
============================
|
|
@@ -152,13 +160,15 @@ The subagent runs the full validation pipeline and returns a structured summary.
|
|
|
152
160
|
**CRITICAL: Always dry-run first, then confirm before executing.**
|
|
153
161
|
|
|
154
162
|
1. Run dry-run:
|
|
163
|
+
|
|
155
164
|
```bash
|
|
156
165
|
python3 freshie/scripts/batch-remediate.py --dry-run
|
|
157
166
|
```
|
|
158
167
|
|
|
159
|
-
|
|
168
|
+
1. Present the changes that would be made.
|
|
169
|
+
|
|
170
|
+
2. Use AskUserQuestion:
|
|
160
171
|
|
|
161
|
-
3. Use AskUserQuestion:
|
|
162
172
|
```
|
|
163
173
|
REMEDIATION PREVIEW
|
|
164
174
|
================================================================
|
|
@@ -169,12 +179,13 @@ Proceed?
|
|
|
169
179
|
- Cancel — Abort, no changes made
|
|
170
180
|
```
|
|
171
181
|
|
|
172
|
-
|
|
182
|
+
1. Only if user selects "Execute":
|
|
183
|
+
|
|
173
184
|
```bash
|
|
174
185
|
python3 freshie/scripts/batch-remediate.py --all --execute
|
|
175
186
|
```
|
|
176
187
|
|
|
177
|
-
|
|
188
|
+
1. After execution, run Workflow C (Compliance Check) to measure improvement.
|
|
178
189
|
|
|
179
190
|
---
|
|
180
191
|
|
|
@@ -199,6 +210,7 @@ query against the freshie schema using these key tables:
|
|
|
199
210
|
Always filter to latest run: `WHERE run_id = (SELECT MAX(id) FROM discovery_runs)`
|
|
200
211
|
|
|
201
212
|
After showing results, use AskUserQuestion to offer follow-up:
|
|
213
|
+
|
|
202
214
|
```
|
|
203
215
|
Results shown. What next?
|
|
204
216
|
- Refine query — Modify or drill deeper
|
|
@@ -218,6 +230,7 @@ If more than 2 runs exist, use AskUserQuestion to let user pick which two to com
|
|
|
218
230
|
Default to the two most recent.
|
|
219
231
|
|
|
220
232
|
Use the "Historical Trends" queries from [common-queries.md](references/common-queries.md) for:
|
|
233
|
+
|
|
221
234
|
- Grade distribution comparison between runs
|
|
222
235
|
- Skills that changed grade (upgrades/downgrades with score delta)
|
|
223
236
|
- New skills added since previous run
|
|
@@ -232,6 +245,7 @@ mkdir -p freshie/exports
|
|
|
232
245
|
```
|
|
233
246
|
|
|
234
247
|
Use AskUserQuestion to let user pick what to export:
|
|
248
|
+
|
|
235
249
|
```
|
|
236
250
|
EXPORT OPTIONS
|
|
237
251
|
================================================================
|
|
@@ -245,6 +259,7 @@ What should I export?
|
|
|
245
259
|
```
|
|
246
260
|
|
|
247
261
|
Then run the appropriate export:
|
|
262
|
+
|
|
248
263
|
```bash
|
|
249
264
|
sqlite3 -header -csv freshie/inventory.sqlite "{query}" > freshie/exports/{filename}.csv
|
|
250
265
|
```
|
|
@@ -348,10 +363,12 @@ If the user wants a report:
|
|
|
348
363
|
|
|
349
364
|
1. **Generate markdown report** — write the workflow results to `/tmp/freshie-report-{date}.md`
|
|
350
365
|
2. **Convert to PDF** using the email skill's converter:
|
|
366
|
+
|
|
351
367
|
```bash
|
|
352
368
|
python3 ~/.claude/skills/email/scripts/md-to-pdf.py /tmp/freshie-report-{date}.md /tmp/freshie-report-{date}.pdf --style professional
|
|
353
369
|
```
|
|
354
|
-
|
|
370
|
+
|
|
371
|
+
1. **Send via /email skill** — invoke the Skill tool with `skill: "email"` and args describing:
|
|
355
372
|
- To: recipient (default: jeremy@intentsolutions.io)
|
|
356
373
|
- Subject: "Freshie Ecosystem Report — {date}"
|
|
357
374
|
- Body: brief summary
|
|
@@ -378,6 +395,7 @@ Query results use table format. Deltas show +/- indicators. CSV exports write to
|
|
|
378
395
|
## Examples
|
|
379
396
|
|
|
380
397
|
See [examples.md](references/examples.md) for detailed input/output examples covering all workflows:
|
|
398
|
+
|
|
381
399
|
- Quick status check (direct intent, skips menu)
|
|
382
400
|
- Full audit with email PDF report (parallel subagents)
|
|
383
401
|
- Ad-hoc query with CSV export follow-up
|
|
@@ -393,4 +411,4 @@ See [examples.md](references/examples.md) for detailed input/output examples cov
|
|
|
393
411
|
- `scripts/validate-skills-schema.py` — universal validator (`--enterprise --populate-db`)
|
|
394
412
|
- `freshie/inventory.sqlite` — the database (50 tables, versioned by `run_id`)
|
|
395
413
|
- `~/.claude/skills/email/scripts/md-to-pdf.py` — markdown to PDF converter
|
|
396
|
-
- `/email` skill — email sending with attachments
|
|
414
|
+
- `/email` skill — email sending with attachments
|