vibesuite 1.0.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/.agent/skills/agent-recovery/SKILL.md +147 -0
- package/.agent/skills/code-review/SKILL.md +81 -0
- package/.agent/skills/component-analysis/SKILL.md +103 -0
- package/.agent/skills/git-worktree/SKILL.md +78 -0
- package/.agent/skills/github-ops/SKILL.md +220 -0
- package/.agent/skills/github-ops/scripts/publish_issues.ps1 +443 -0
- package/.agent/skills/github-ops/scripts/smart-ops.ps1 +128 -0
- package/.agent/skills/github-ops/scripts/smart-ops.sh +130 -0
- package/.agent/skills/google-trends/SKILL.md +157 -0
- package/.agent/skills/google-trends/scripts/node_modules/.modules.yaml +21 -0
- package/.agent/skills/google-trends/scripts/node_modules/.pnpm/commander@12.1.0/node_modules/commander/LICENSE +22 -0
- package/.agent/skills/google-trends/scripts/node_modules/.pnpm/commander@12.1.0/node_modules/commander/Readme.md +1157 -0
- package/.agent/skills/google-trends/scripts/node_modules/.pnpm/commander@12.1.0/node_modules/commander/esm.mjs +16 -0
- package/.agent/skills/google-trends/scripts/node_modules/.pnpm/commander@12.1.0/node_modules/commander/index.js +24 -0
- package/.agent/skills/google-trends/scripts/node_modules/.pnpm/commander@12.1.0/node_modules/commander/lib/argument.js +149 -0
- package/.agent/skills/google-trends/scripts/node_modules/.pnpm/commander@12.1.0/node_modules/commander/lib/command.js +2509 -0
- package/.agent/skills/google-trends/scripts/node_modules/.pnpm/commander@12.1.0/node_modules/commander/lib/error.js +39 -0
- package/.agent/skills/google-trends/scripts/node_modules/.pnpm/commander@12.1.0/node_modules/commander/lib/help.js +520 -0
- package/.agent/skills/google-trends/scripts/node_modules/.pnpm/commander@12.1.0/node_modules/commander/lib/option.js +330 -0
- package/.agent/skills/google-trends/scripts/node_modules/.pnpm/commander@12.1.0/node_modules/commander/lib/suggestSimilar.js +101 -0
- package/.agent/skills/google-trends/scripts/node_modules/.pnpm/commander@12.1.0/node_modules/commander/package-support.json +16 -0
- package/.agent/skills/google-trends/scripts/node_modules/.pnpm/commander@12.1.0/node_modules/commander/package.json +84 -0
- package/.agent/skills/google-trends/scripts/node_modules/.pnpm/commander@12.1.0/node_modules/commander/typings/esm.d.mts +3 -0
- package/.agent/skills/google-trends/scripts/node_modules/.pnpm/commander@12.1.0/node_modules/commander/typings/index.d.ts +969 -0
- package/.agent/skills/google-trends/scripts/node_modules/.pnpm/google-trends-api@4.9.2/node_modules/google-trends-api/CHANGES.md +132 -0
- package/.agent/skills/google-trends/scripts/node_modules/.pnpm/google-trends-api@4.9.2/node_modules/google-trends-api/LICENSE +21 -0
- package/.agent/skills/google-trends/scripts/node_modules/.pnpm/google-trends-api@4.9.2/node_modules/google-trends-api/README.md +561 -0
- package/.agent/skills/google-trends/scripts/node_modules/.pnpm/google-trends-api@4.9.2/node_modules/google-trends-api/lib/google-trends-api.min.js +2 -0
- package/.agent/skills/google-trends/scripts/node_modules/.pnpm/google-trends-api@4.9.2/node_modules/google-trends-api/package.json +68 -0
- package/.agent/skills/google-trends/scripts/node_modules/.pnpm/google-trends-api@4.9.2/node_modules/google-trends-api/src/api.js +18 -0
- package/.agent/skills/google-trends/scripts/node_modules/.pnpm/google-trends-api@4.9.2/node_modules/google-trends-api/src/index.js +27 -0
- package/.agent/skills/google-trends/scripts/node_modules/.pnpm/google-trends-api@4.9.2/node_modules/google-trends-api/src/request.js +69 -0
- package/.agent/skills/google-trends/scripts/node_modules/.pnpm/google-trends-api@4.9.2/node_modules/google-trends-api/src/utilities.js +395 -0
- package/.agent/skills/google-trends/scripts/node_modules/.pnpm/lock.yaml +31 -0
- package/.agent/skills/google-trends/scripts/node_modules/.pnpm-workspace-state-v1.json +25 -0
- package/.agent/skills/google-trends/scripts/package.json +17 -0
- package/.agent/skills/google-trends/scripts/pnpm-lock.yaml +31 -0
- package/.agent/skills/google-trends/scripts/search.js +168 -0
- package/.agent/skills/high-fidelity-extraction/SKILL.md +59 -0
- package/.agent/skills/prime-agent/SKILL.md +97 -0
- package/.agent/skills/security-audit/SKILL.md +81 -0
- package/.agent/skills/seo-ready/SKILL.md +133 -0
- package/.agent/skills/spawn-task/SKILL.md +130 -0
- package/.agent/skills/sync-docs/SKILL.md +88 -0
- package/.agent/skills/vercel-ai-sdk/SKILL.md +34083 -0
- package/.agent/skills/youtube-pipeline/SKILL.md +194 -0
- package/.agent/skills/youtube-pipeline/resources/youtube-phase1-strategy.md +224 -0
- package/.agent/skills/youtube-pipeline/resources/youtube-phase2-packaging.md +148 -0
- package/.agent/skills/youtube-pipeline/resources/youtube-phase3-scripting.md +197 -0
- package/.agent/skills/youtube-pipeline/resources/youtube-phase3.5-shorts.md +271 -0
- package/.agent/skills/youtube-pipeline/resources/youtube-phase4-production.md +193 -0
- package/.agent/skills/youtube-pipeline/resources/youtube-phase5-repurposing.md +159 -0
- package/.agent/skills/youtube-pipeline/resources/youtube-pipeline.md +161 -0
- package/.agent/skills/youtube-pipeline/scripts/parse_yt_studio.ps1 +150 -0
- package/.agent/workflows/LEGACY/ANTIGRAVITY_TOOLBOX.md +200 -0
- package/.agent/workflows/LEGACY/analyze_component.md +141 -0
- package/.agent/workflows/LEGACY/build_vibecode_project.md +154 -0
- package/.agent/workflows/LEGACY/deep_code_audit.md +79 -0
- package/.agent/workflows/LEGACY/gemini-orchestrate.md +63 -0
- package/.agent/workflows/LEGACY/git_worktree.md +71 -0
- package/.agent/workflows/LEGACY/init_smart_ops.md +101 -0
- package/.agent/workflows/LEGACY/multi_agent_strategy.md +62 -0
- package/.agent/workflows/LEGACY/orchestrate.md +321 -0
- package/.agent/workflows/LEGACY/seo_ready.md +249 -0
- package/.agent/workflows/LEGACY/vibe-orchestrator.md +305 -0
- package/.agent/workflows/LEGACY/youtube-phase1-strategy.md +224 -0
- package/.agent/workflows/LEGACY/youtube-phase2-packaging.md +148 -0
- package/.agent/workflows/LEGACY/youtube-phase3-scripting.md +197 -0
- package/.agent/workflows/LEGACY/youtube-phase3.5-shorts.md +271 -0
- package/.agent/workflows/LEGACY/youtube-phase4-production.md +193 -0
- package/.agent/workflows/LEGACY/youtube-phase5-repurposing.md +159 -0
- package/.agent/workflows/LEGACY/youtube-pipeline.md +161 -0
- package/.agent/workflows/README.md +349 -0
- package/.agent/workflows/Vercel Ai SDK.md +34083 -0
- package/.agent/workflows/agent_reset.md +138 -0
- package/.agent/workflows/build_vibecode_project_v2.md +158 -0
- package/.agent/workflows/escalate.md +112 -0
- package/.agent/workflows/init_vibecode_design.md +98 -0
- package/.agent/workflows/init_vibecode_genesis.md +137 -0
- package/.agent/workflows/migrate.md +135 -0
- package/.agent/workflows/prime_agent.md +211 -0
- package/.agent/workflows/reverse_genesis.md +132 -0
- package/.agent/workflows/review_code.md +133 -0
- package/.agent/workflows/spawn-jstar-code-review.md +121 -0
- package/.agent/workflows/spawn_task.md +187 -0
- package/.agent/workflows/sync_docs.md +90 -0
- package/Legacy (Manual Method)/0 VibeCode User Manual.md +173 -0
- package/Legacy (Manual Method)/1 Project Genesis Protocol The VibeCode Workflow.md +89 -0
- package/Legacy (Manual Method)/2/342/234/250 ULTIMATE ORCHESTRATION PROMPT/342/234/250.md" +114 -0
- package/Legacy (Manual Method)/3 Design System Genesis Protocol.md +75 -0
- package/Legacy (Manual Method)/3.1.1 my_design_system_rules.md +177 -0
- package/Legacy (Manual Method)/3.1.2 Material You M3 Genesis Protocol.md +73 -0
- package/Legacy (Manual Method)/4 The Ultimate GitHub Issue Meta-Prompt Template.md +54 -0
- package/Legacy (Manual Method)/5 The Escalation & Handoff Protocol.md +97 -0
- package/Legacy (Manual Method)/8 The Seamless Migration Meta-Prompt (Your Reusable Tool).md +38 -0
- package/Legacy (Manual Method)/9 The Reverse Genesis Protocol.md +75 -0
- package/README.md +209 -0
- package/VibeCode-Agents (e.g Kilo-code)/README.md +142 -0
- package/VibeCode-Agents (e.g Kilo-code)/vibe-analyzer.yaml +254 -0
- package/VibeCode-Agents (e.g Kilo-code)/vibe-architect.yaml +397 -0
- package/VibeCode-Agents (e.g Kilo-code)/vibe-auditor.yaml +325 -0
- package/VibeCode-Agents (e.g Kilo-code)/vibe-builder.yaml +472 -0
- package/VibeCode-Agents (e.g Kilo-code)/vibe-designer.yaml +305 -0
- package/VibeCode-Agents (e.g Kilo-code)/vibe-documentor.yaml +222 -0
- package/VibeCode-Agents (e.g Kilo-code)/vibe-escalator.yaml +255 -0
- package/VibeCode-Agents (e.g Kilo-code)/vibe-isolator.yaml +332 -0
- package/VibeCode-Agents (e.g Kilo-code)/vibe-onboarder.yaml +335 -0
- package/VibeCode-Agents (e.g Kilo-code)/vibe-orchestrator.yaml +365 -0
- package/VibeCode-Agents (e.g Kilo-code)/vibe-orchestrator_legacy.yaml +284 -0
- package/VibeCode-Agents (e.g Kilo-code)/vibe-orchestrator_v1.yaml +336 -0
- package/VibeCode-Agents (e.g Kilo-code)/vibe-primer.yaml +213 -0
- package/VibeCode-Agents (e.g Kilo-code)/vibe-reviewer.yaml +233 -0
- package/VibeCode-Agents (e.g Kilo-code)/vibe-spawner.yaml +259 -0
- package/bin/vibesuite.js +2 -0
- package/package.json +43 -0
- package/src/cli.js +159 -0
- package/src/utils.js +76 -0
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { program } from 'commander';
|
|
3
|
+
import googleTrends from 'google-trends-api';
|
|
4
|
+
|
|
5
|
+
program
|
|
6
|
+
.name('search')
|
|
7
|
+
.description('Google Trends CLI for topic research')
|
|
8
|
+
.requiredOption('-k, --keyword <string>', 'Topic to search')
|
|
9
|
+
.option('-p, --property <string>', 'youtube | web | images | news | froogle', 'youtube')
|
|
10
|
+
.option('-t, --time <string>', 'Time range (now 7-d, now 1-m, today 3-m, today 12-m)', 'now 7-d')
|
|
11
|
+
.option('-c, --category <number>', 'Category ID (5 = Tech)', '5')
|
|
12
|
+
.option('-o, --output <string>', 'Output format: table | json | markdown', 'table')
|
|
13
|
+
.option('-f, --file <path>', 'Output file path')
|
|
14
|
+
.option('--interest', 'Include interest-over-time data', false)
|
|
15
|
+
.parse();
|
|
16
|
+
|
|
17
|
+
const opts = program.opts();
|
|
18
|
+
|
|
19
|
+
// Parse time range string to date
|
|
20
|
+
function getStartTime(timeStr) {
|
|
21
|
+
const now = Date.now();
|
|
22
|
+
const match = timeStr.match(/^(now|today)\s+(\d+)-([dmy])$/);
|
|
23
|
+
if (!match) return new Date(now - 7 * 24 * 60 * 60 * 1000); // default 7 days
|
|
24
|
+
|
|
25
|
+
const [, , num, unit] = match;
|
|
26
|
+
const amount = parseInt(num, 10);
|
|
27
|
+
switch (unit) {
|
|
28
|
+
case 'd': return new Date(now - amount * 24 * 60 * 60 * 1000);
|
|
29
|
+
case 'm': return new Date(now - amount * 30 * 24 * 60 * 60 * 1000);
|
|
30
|
+
case 'y': return new Date(now - amount * 365 * 24 * 60 * 60 * 1000);
|
|
31
|
+
default: return new Date(now - 7 * 24 * 60 * 60 * 1000);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
async function fetchRelatedQueries() {
|
|
36
|
+
const result = await googleTrends.relatedQueries({
|
|
37
|
+
keyword: opts.keyword,
|
|
38
|
+
startTime: getStartTime(opts.time),
|
|
39
|
+
property: opts.property === 'web' ? '' : opts.property,
|
|
40
|
+
category: parseInt(opts.category, 10),
|
|
41
|
+
});
|
|
42
|
+
return JSON.parse(result);
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
async function fetchInterestOverTime() {
|
|
46
|
+
if (!opts.interest) return null;
|
|
47
|
+
const result = await googleTrends.interestOverTime({
|
|
48
|
+
keyword: opts.keyword,
|
|
49
|
+
startTime: getStartTime(opts.time),
|
|
50
|
+
property: opts.property === 'web' ? '' : opts.property,
|
|
51
|
+
category: parseInt(opts.category, 10),
|
|
52
|
+
});
|
|
53
|
+
return JSON.parse(result);
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
function formatTable(data, interest) {
|
|
57
|
+
const lines = [];
|
|
58
|
+
lines.push(`\n[TrendProbe] Searching: "${opts.keyword}" on ${opts.property} (${opts.time})\n`);
|
|
59
|
+
|
|
60
|
+
const ranked = data?.default?.rankedList || [];
|
|
61
|
+
ranked.forEach((list, idx) => {
|
|
62
|
+
const label = idx === 0 ? 'Top' : 'Rising';
|
|
63
|
+
lines.push(`--- Related Queries (${label}) ---`);
|
|
64
|
+
|
|
65
|
+
(list.rankedKeyword || []).forEach((item, i) => {
|
|
66
|
+
const value = typeof item.value === 'string' ? item.value : item.value;
|
|
67
|
+
const display = item.formattedValue || (value === 'Breakout' ? 'BREAKOUT' : value);
|
|
68
|
+
lines.push(`${i + 1}. ${item.query} (${display})`);
|
|
69
|
+
});
|
|
70
|
+
lines.push('');
|
|
71
|
+
});
|
|
72
|
+
|
|
73
|
+
if (interest?.default?.timelineData) {
|
|
74
|
+
lines.push('--- Interest Over Time ---');
|
|
75
|
+
const timeline = interest.default.timelineData.slice(-7); // Last 7 data points
|
|
76
|
+
timeline.forEach(point => {
|
|
77
|
+
lines.push(`${point.formattedTime}: ${point.value[0]}`);
|
|
78
|
+
});
|
|
79
|
+
lines.push('');
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
return lines.join('\n');
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
function formatJSON(data, interest) {
|
|
86
|
+
const ranked = data?.default?.rankedList || [];
|
|
87
|
+
const result = {
|
|
88
|
+
keyword: opts.keyword,
|
|
89
|
+
property: opts.property,
|
|
90
|
+
time: opts.time,
|
|
91
|
+
category: opts.category,
|
|
92
|
+
top: (ranked[0]?.rankedKeyword || []).map(q => ({ query: q.query, value: q.value })),
|
|
93
|
+
rising: (ranked[1]?.rankedKeyword || []).map(q => ({ query: q.query, value: q.formattedValue || q.value })),
|
|
94
|
+
};
|
|
95
|
+
if (interest?.default?.timelineData) {
|
|
96
|
+
result.interest = interest.default.timelineData.map(p => ({ time: p.formattedTime, value: p.value[0] }));
|
|
97
|
+
}
|
|
98
|
+
return JSON.stringify(result, null, 2);
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
function formatMarkdown(data, interest) {
|
|
102
|
+
const lines = [];
|
|
103
|
+
lines.push(`## ${opts.keyword} (${opts.property}, ${opts.time})`);
|
|
104
|
+
lines.push('');
|
|
105
|
+
|
|
106
|
+
const ranked = data?.default?.rankedList || [];
|
|
107
|
+
if (ranked[0]?.rankedKeyword?.length) {
|
|
108
|
+
lines.push('### Top Queries');
|
|
109
|
+
ranked[0].rankedKeyword.forEach((q, i) => {
|
|
110
|
+
lines.push(`${i + 1}. ${q.query} (${q.value})`);
|
|
111
|
+
});
|
|
112
|
+
lines.push('');
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
if (ranked[1]?.rankedKeyword?.length) {
|
|
116
|
+
lines.push('### Rising Queries');
|
|
117
|
+
ranked[1].rankedKeyword.forEach((q, i) => {
|
|
118
|
+
const display = q.formattedValue || q.value;
|
|
119
|
+
lines.push(`${i + 1}. ${q.query} (${display})`);
|
|
120
|
+
});
|
|
121
|
+
lines.push('');
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
if (interest?.default?.timelineData) {
|
|
125
|
+
lines.push('### Interest Over Time');
|
|
126
|
+
interest.default.timelineData.slice(-7).forEach(p => {
|
|
127
|
+
lines.push(`- ${p.formattedTime}: ${p.value[0]}`);
|
|
128
|
+
});
|
|
129
|
+
lines.push('');
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
return lines.join('\n');
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
async function main() {
|
|
136
|
+
try {
|
|
137
|
+
const [relatedData, interestData] = await Promise.all([
|
|
138
|
+
fetchRelatedQueries(),
|
|
139
|
+
fetchInterestOverTime(),
|
|
140
|
+
]);
|
|
141
|
+
|
|
142
|
+
let output;
|
|
143
|
+
switch (opts.output) {
|
|
144
|
+
case 'json':
|
|
145
|
+
output = formatJSON(relatedData, interestData);
|
|
146
|
+
break;
|
|
147
|
+
case 'markdown':
|
|
148
|
+
output = formatMarkdown(relatedData, interestData);
|
|
149
|
+
break;
|
|
150
|
+
default:
|
|
151
|
+
output = formatTable(relatedData, interestData);
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
console.log(output);
|
|
155
|
+
|
|
156
|
+
if (opts.file) {
|
|
157
|
+
const fs = await import('fs');
|
|
158
|
+
fs.writeFileSync(opts.file, output, 'utf-8');
|
|
159
|
+
console.log(`\n[Saved to ${opts.file}]`);
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
} catch (err) {
|
|
163
|
+
console.error('[Error]', err.message);
|
|
164
|
+
process.exit(1);
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
main();
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: high-fidelity-extraction
|
|
3
|
+
description: Advanced protocol for extracting granular social media and web intelligence using browser automation and DOM analysis.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# High Fidelity Data Extraction Protocol
|
|
7
|
+
|
|
8
|
+
This skill enables the agent to extract deep intelligence from social media platforms (Instagram, TikTok, YouTube, etc.) and complex web environments with high precision.
|
|
9
|
+
|
|
10
|
+
## 🚀 Core Philosophy: The Extraction Spectrum
|
|
11
|
+
|
|
12
|
+
When tasked with extraction, always check the prompt for specific limitations. If no limitations are provided, assume **Standard Level**.
|
|
13
|
+
|
|
14
|
+
### Extraction Capability Matrix
|
|
15
|
+
|
|
16
|
+
| Feature | Basic (Standard) | Deep (Advanced) | Elite (Full Intelligence) |
|
|
17
|
+
| :--- | :--- | :--- | :--- |
|
|
18
|
+
| **Captions** | Full Text + Hashtags | + Edited timestamps | + OCR from video overlays |
|
|
19
|
+
| **Comments** | Top 3-5 (Top Level) | Top 10 + Threaded replies | Full sentiment & pain point mapping |
|
|
20
|
+
| **Engagement** | Likes / Views count | Engagement Rate % | Share/Save estimates & Viral Velocity |
|
|
21
|
+
| **Brand Intel** | @Mentions in caption | + Link-in-bio analysis | + Competitor comparison vs Meta Ad Library |
|
|
22
|
+
| **Visuals** | Profile Screen/Grid | Individual Post Screenshots | UI/UX Reverse Engineering of Funnel |
|
|
23
|
+
| **Technical** | URL collection | Precise ISO Timestamps | API Pattern Mapping & DB Schema generation |
|
|
24
|
+
|
|
25
|
+
## 📊 Tabular Output Format
|
|
26
|
+
|
|
27
|
+
Unless the user specifies otherwise, all extracted data should be compiled into a Markdown table for maximum scannability.
|
|
28
|
+
|
|
29
|
+
### Standard Template:
|
|
30
|
+
```markdown
|
|
31
|
+
| Post Type | Caption Snippet | Top Comments (Synthesized) | Key Metrics | Brand/Tags |
|
|
32
|
+
| :--- | :--- | :--- | :--- | :--- |
|
|
33
|
+
| Pinned | "How to be..." | Users asking about discipline tips | 30k Likes | @Adidas, #NYC |
|
|
34
|
+
| Recent 1 | "Day in life..." | High praise for work/life balance | 15k Views | @CeraVe |
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
## 🧠 Smart Filtering Strategy (Instagram Reels)
|
|
38
|
+
When the goal involves "high-performing" content or maximizing engagement:
|
|
39
|
+
|
|
40
|
+
1. **Reels First**: Navigate to the `/reels/` tab immediately. View counts are not visible on the main grid but are overlayed on Reel thumbnails.
|
|
41
|
+
2. **Baseline Calculation**:
|
|
42
|
+
- Extract view counts from the first 6-12 visible Reels.
|
|
43
|
+
- Calculate the **average (mean)** view count.
|
|
44
|
+
3. **Filtration**:
|
|
45
|
+
- Only click/extract posts that exceed this average.
|
|
46
|
+
- This ensures we focus valuable browser resources on proven content.
|
|
47
|
+
|
|
48
|
+
## 🛠️ Execution Instructions for the Subagent
|
|
49
|
+
|
|
50
|
+
1. **DOM First**: Never navigate blindly. Use `browser_get_dom` to identify the obfuscated class names for captions and comments.
|
|
51
|
+
2. **Surgical Navigation**: To avoid 429 errors (Too Many Requests), navigate directly to post URLs once the links are gathered from the grid, rather than infinite scrolling.
|
|
52
|
+
3. **Expansion Logic**: Always look for `... more` or "View all comments" buttons and trigger them via JavaScript to ensure data completeness.
|
|
53
|
+
4. **Verification**: Always capture a final screenshot of the "Main Extraction Target" to verify text accuracy against the visual truth.
|
|
54
|
+
|
|
55
|
+
## 🛑 Limitations & Compliance
|
|
56
|
+
|
|
57
|
+
- **Obey Prompt Bounds**: If the user says "Only get usernames," do NOT extract captions.
|
|
58
|
+
- **Privacy**: Respect platform TOS by focusing on public-facing data and ignoring private user details.
|
|
59
|
+
- **Anti-Spam**: Filter out "Promote on..." or generic bot comments automatically.
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: prime-agent
|
|
3
|
+
description: Load project context including coding guidelines, styling rules, and folder structure before starting work.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Prime Agent Skill
|
|
7
|
+
|
|
8
|
+
Load the "brain" of the project — coding guidelines, styling rules, and architectural decisions.
|
|
9
|
+
|
|
10
|
+
## When to Use
|
|
11
|
+
- Start of session
|
|
12
|
+
- Before complex work
|
|
13
|
+
- After `/migrate` to supplement snapshot
|
|
14
|
+
- When context seems lost
|
|
15
|
+
|
|
16
|
+
## Load Core Documentation
|
|
17
|
+
|
|
18
|
+
```bash
|
|
19
|
+
# Coding Guidelines
|
|
20
|
+
cat docs/coding_guidelines.md 2>/dev/null || \
|
|
21
|
+
cat docs/Coding_Guidelines.md 2>/dev/null
|
|
22
|
+
|
|
23
|
+
# Styling Guide
|
|
24
|
+
cat docs/Styling*.md 2>/dev/null || \
|
|
25
|
+
cat docs/design/*.md 2>/dev/null
|
|
26
|
+
|
|
27
|
+
# Styling Addendum (project-specific)
|
|
28
|
+
cat docs/Styling-Addendum.md 2>/dev/null
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
## Check for UI Mockups
|
|
32
|
+
|
|
33
|
+
```bash
|
|
34
|
+
ls docs/mockups/ 2>/dev/null
|
|
35
|
+
ls docs/design/mockups/ 2>/dev/null
|
|
36
|
+
ls docs/design/design-system.html 2>/dev/null
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
> **IMPORTANT**: If mockups exist, they are the **UNQUESTIONABLE source of truth** for UI. Replicate exactly.
|
|
40
|
+
|
|
41
|
+
## Key Rules to Internalize
|
|
42
|
+
|
|
43
|
+
### From Coding Guidelines
|
|
44
|
+
- **Blueprint Protocol**: Plan before code, docs in `docs/features/`
|
|
45
|
+
- **200-Line Rule**: Refactor if exceeded
|
|
46
|
+
- **File Structure**: Feature-sliced design (`src/features/[Name]/`)
|
|
47
|
+
- **Server vs Client**: RSCs by default, `'use client'` sparingly
|
|
48
|
+
- **Service Pattern**: Route Handlers = controllers, Services = business logic
|
|
49
|
+
- **Validation**: Zod for all inputs
|
|
50
|
+
|
|
51
|
+
### From Styling Guide
|
|
52
|
+
- **Tailwind v4**: CSS-first with `@theme` tokens
|
|
53
|
+
- **Core Tokens**: `--color-background`, `--color-foreground`, `--color-border`
|
|
54
|
+
- **Dark Mode**: `@theme .dark { }` overrides
|
|
55
|
+
- **Animations**: Define in CSS with `@keyframes`
|
|
56
|
+
|
|
57
|
+
## Acknowledgment
|
|
58
|
+
|
|
59
|
+
After loading, state:
|
|
60
|
+
|
|
61
|
+
"✅ **Agent Primed.** Internalized:
|
|
62
|
+
|
|
63
|
+
**Coding Guidelines:**
|
|
64
|
+
- Blueprint Protocol: Plan → Approve → Build → Document
|
|
65
|
+
- 200-line component limit
|
|
66
|
+
- Feature-sliced architecture
|
|
67
|
+
- Server Components default
|
|
68
|
+
|
|
69
|
+
**Styling Rules:**
|
|
70
|
+
- Tailwind v4 with `@theme` tokens
|
|
71
|
+
- Dark mode via `.dark` class
|
|
72
|
+
|
|
73
|
+
**UI Mockups:** [List any found or 'None']
|
|
74
|
+
|
|
75
|
+
What would you like to build?"
|
|
76
|
+
|
|
77
|
+
## Quick Reference Card
|
|
78
|
+
|
|
79
|
+
```
|
|
80
|
+
src/
|
|
81
|
+
├── app/ # Next.js App Router pages
|
|
82
|
+
├── features/ # Feature-sliced modules
|
|
83
|
+
│ └── [Name]/ # Components, hooks, services
|
|
84
|
+
├── components/ui/ # Reusable UI components
|
|
85
|
+
├── lib/ # Utilities, API clients
|
|
86
|
+
└── scripts/ # Build/automation scripts
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
**Key Commands:**
|
|
90
|
+
- `npm run dev` — Start development
|
|
91
|
+
- `npm run build` — Production build
|
|
92
|
+
- `npm run db:seed` — Seed database
|
|
93
|
+
|
|
94
|
+
**Style Tokens:**
|
|
95
|
+
- `bg-background` / `text-foreground`
|
|
96
|
+
- `bg-primary` / `text-primary`
|
|
97
|
+
- `dark:` prefix for dark mode
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: security-audit
|
|
3
|
+
description: Perform a meticulous deep code audit covering Security, Logic, Completeness, and Quality. Manual analysis for critical systems.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Security Audit Skill
|
|
7
|
+
|
|
8
|
+
A comprehensive, manual deep code audit protocol for security-critical systems.
|
|
9
|
+
|
|
10
|
+
## When to Use
|
|
11
|
+
- Before major releases
|
|
12
|
+
- Security review requests
|
|
13
|
+
- Auditing authentication/payment flows
|
|
14
|
+
- When "audit" or "security" is mentioned
|
|
15
|
+
|
|
16
|
+
## Audit Phases
|
|
17
|
+
|
|
18
|
+
### Phase 0: Scope Definition
|
|
19
|
+
Define boundaries:
|
|
20
|
+
- **FULL_SCAN**: Entire codebase
|
|
21
|
+
- **FEATURE_SCAN**: Specific feature (`docs/features/[Name].md`)
|
|
22
|
+
- **DIFF_SCAN**: `git diff --staged` or `git diff HEAD~1`
|
|
23
|
+
|
|
24
|
+
### Phase 1: The Detective (Static Analysis)
|
|
25
|
+
```bash
|
|
26
|
+
# 1. Dependency audit
|
|
27
|
+
pnpm audit # or npm audit
|
|
28
|
+
|
|
29
|
+
# 2. Secret scanning (use jstar if available)
|
|
30
|
+
jstar detect
|
|
31
|
+
|
|
32
|
+
# 3. Manual grep patterns:
|
|
33
|
+
# Secrets
|
|
34
|
+
grep -rE "(api_key|secret|password|token)\s*[:=]\s*['\"\`][a-zA-Z0-9_\-\.]{10,}['\"\`]"
|
|
35
|
+
|
|
36
|
+
# RCE/Injection
|
|
37
|
+
grep -rE "(dangerouslySetInnerHTML|eval\(|exec\(|\.queryRaw)"
|
|
38
|
+
|
|
39
|
+
# Debugging
|
|
40
|
+
grep -rE "(console\.log|debugger|todo)"
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
### Phase 2: The Graph (Data Flow)
|
|
44
|
+
- Identify Entry Points (Routes, Actions, CLI)
|
|
45
|
+
- **Trace Input**: User input → Service → Database
|
|
46
|
+
- **Verify Validation**: Zod/Typebox at edge boundaries
|
|
47
|
+
|
|
48
|
+
### Phase 3: The Auditor (Spec vs Code)
|
|
49
|
+
- Read `docs/features/*.md` for scope
|
|
50
|
+
- **Gap Analysis**: Features in Docs but missing in Code
|
|
51
|
+
- **Orphan Analysis**: Code not in Docs (zombie code)
|
|
52
|
+
|
|
53
|
+
### Phase 4: The Judge (Logic Probing)
|
|
54
|
+
Pick highest-risk file and simulate:
|
|
55
|
+
- "What if I send `null`? Empty string? Negative ID?"
|
|
56
|
+
- "What if two requests hit this at once?" (race conditions)
|
|
57
|
+
- "Can I access this Service function directly?" (auth bypass)
|
|
58
|
+
|
|
59
|
+
### Phase 5: The Architect (Quality)
|
|
60
|
+
- **Performance**: `await` in loops → N+1 queries
|
|
61
|
+
- **Bloat**: Files > 200 lines? Functions > 50 lines?
|
|
62
|
+
- **Types**: Any use of `any` or `as unknown`?
|
|
63
|
+
- **Structure**: Feature-Sliced Design compliance?
|
|
64
|
+
|
|
65
|
+
### Phase 6: Report
|
|
66
|
+
Create `.jstar/audit_report.md`:
|
|
67
|
+
|
|
68
|
+
| Severity | Category | Location | Issue | Recommendation |
|
|
69
|
+
|----------|----------|----------|-------|----------------|
|
|
70
|
+
| CRITICAL | SECURITY | `api/auth` | ... | ... |
|
|
71
|
+
| HIGH | LOGIC | `service.ts:42` | ... | ... |
|
|
72
|
+
|
|
73
|
+
Severities: `CRITICAL`, `HIGH`, `WARNING`, `INFO`
|
|
74
|
+
Categories: `SECURITY`, `LOGIC`, `COMPLETENESS`, `QUALITY`
|
|
75
|
+
|
|
76
|
+
### Phase 7: Remediation
|
|
77
|
+
For each CRITICAL/HIGH:
|
|
78
|
+
1. Implement fix
|
|
79
|
+
2. Run build/tests
|
|
80
|
+
3. Re-verify with grep/logic check
|
|
81
|
+
4. Stage changes
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: seo-ready
|
|
3
|
+
description: Make any Next.js page SEO-ready with metadata, structured data, sitemap, and accessibility best practices.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# SEO Ready Skill
|
|
7
|
+
|
|
8
|
+
Transform Next.js pages into fully SEO-optimized pages.
|
|
9
|
+
|
|
10
|
+
## When to Use
|
|
11
|
+
- SEO optimization requests
|
|
12
|
+
- Before launching pages to production
|
|
13
|
+
- When asked about metadata or search visibility
|
|
14
|
+
- Accessibility audits
|
|
15
|
+
|
|
16
|
+
## Phase 1: Global Setup (Once Per Project)
|
|
17
|
+
|
|
18
|
+
### Check Root Metadata
|
|
19
|
+
```bash
|
|
20
|
+
head -50 src/app/layout.tsx
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
Required in `layout.tsx`:
|
|
24
|
+
```typescript
|
|
25
|
+
export const metadata: Metadata = {
|
|
26
|
+
title: { default: "Site Name", template: "%s | Site Name" },
|
|
27
|
+
description: "...",
|
|
28
|
+
metadataBase: new URL("https://your-domain.com"),
|
|
29
|
+
openGraph: { /* ... */ },
|
|
30
|
+
twitter: { /* ... */ },
|
|
31
|
+
};
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
### Sitemap
|
|
35
|
+
```bash
|
|
36
|
+
ls src/app/sitemap.ts 2>/dev/null || echo "MISSING"
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
If missing, create `src/app/sitemap.ts`:
|
|
40
|
+
```typescript
|
|
41
|
+
import { MetadataRoute } from 'next'
|
|
42
|
+
|
|
43
|
+
export default function sitemap(): MetadataRoute.Sitemap {
|
|
44
|
+
const baseUrl = 'https://your-domain.com'
|
|
45
|
+
return [
|
|
46
|
+
{ url: baseUrl, lastModified: new Date(), changeFrequency: 'yearly', priority: 1 },
|
|
47
|
+
]
|
|
48
|
+
}
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
### Robots.txt
|
|
52
|
+
Create `src/app/robots.ts` if missing.
|
|
53
|
+
|
|
54
|
+
### Web Manifest (PWA)
|
|
55
|
+
Create `src/app/manifest.ts` if missing.
|
|
56
|
+
|
|
57
|
+
### Icons
|
|
58
|
+
Check: `src/app/icon.png`, `src/app/apple-icon.png`
|
|
59
|
+
|
|
60
|
+
### OpenGraph Image
|
|
61
|
+
Options:
|
|
62
|
+
- **Static**: `src/app/opengraph-image.png` (1200x630px)
|
|
63
|
+
- **Dynamic**: `src/app/opengraph-image.tsx`
|
|
64
|
+
|
|
65
|
+
### JSON-LD Structured Data
|
|
66
|
+
Add to `<body>` in layout:
|
|
67
|
+
```tsx
|
|
68
|
+
<script
|
|
69
|
+
type="application/ld+json"
|
|
70
|
+
dangerouslySetInnerHTML={{
|
|
71
|
+
__html: JSON.stringify({
|
|
72
|
+
"@context": "https://schema.org",
|
|
73
|
+
"@type": "SoftwareApplication",
|
|
74
|
+
"name": "Your App",
|
|
75
|
+
})
|
|
76
|
+
}}
|
|
77
|
+
/>
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
## Phase 2: Per-Page Optimization
|
|
81
|
+
|
|
82
|
+
### Server Component Check
|
|
83
|
+
If page starts with `'use client'`, refactor:
|
|
84
|
+
- Move client logic to `src/features/<feature>/components/`
|
|
85
|
+
- Page file becomes Server Component that imports client component
|
|
86
|
+
|
|
87
|
+
### Page Metadata
|
|
88
|
+
```typescript
|
|
89
|
+
import { Metadata } from 'next';
|
|
90
|
+
|
|
91
|
+
export const metadata: Metadata = {
|
|
92
|
+
title: "Page Title", // Becomes "Page Title | Site Name"
|
|
93
|
+
description: "Specific description for this page.",
|
|
94
|
+
};
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
### Semantic HTML Audit
|
|
98
|
+
- `<main>` for primary content
|
|
99
|
+
- `<section>` with `id` for anchors
|
|
100
|
+
- `<article>` for standalone content
|
|
101
|
+
- Proper heading hierarchy (`<h1>` → `<h2>` etc.)
|
|
102
|
+
|
|
103
|
+
### Image Optimization
|
|
104
|
+
- Use `<Image>` component
|
|
105
|
+
- Required: `alt`, `width`, `height`
|
|
106
|
+
|
|
107
|
+
## Phase 3: Accessibility
|
|
108
|
+
|
|
109
|
+
- ARIA labels on interactive elements
|
|
110
|
+
- `<html lang="en">` set correctly
|
|
111
|
+
- Keyboard navigable
|
|
112
|
+
|
|
113
|
+
## Phase 4: Verification
|
|
114
|
+
|
|
115
|
+
```bash
|
|
116
|
+
pnpm build
|
|
117
|
+
pnpm dev
|
|
118
|
+
# Visit /sitemap.xml and /robots.txt
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
## Checklist
|
|
122
|
+
| Item | Status |
|
|
123
|
+
|------|--------|
|
|
124
|
+
| Root metadata | [ ] |
|
|
125
|
+
| sitemap.ts | [ ] |
|
|
126
|
+
| robots.ts | [ ] |
|
|
127
|
+
| manifest.ts | [ ] |
|
|
128
|
+
| Icons | [ ] |
|
|
129
|
+
| OpenGraph image | [ ] |
|
|
130
|
+
| JSON-LD | [ ] |
|
|
131
|
+
| Page metadata | [ ] |
|
|
132
|
+
| Semantic HTML | [ ] |
|
|
133
|
+
| Build passes | [ ] |
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: spawn-task
|
|
3
|
+
description: Create comprehensive, self-contained task prompts for implementing features or fixing bugs.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Spawn Task Skill
|
|
7
|
+
|
|
8
|
+
Create detailed task prompts that another agent (or future self) can execute without additional context.
|
|
9
|
+
|
|
10
|
+
## When to Use
|
|
11
|
+
- Breaking down complex features
|
|
12
|
+
- Creating implementation specs
|
|
13
|
+
- When user says "spawn a task for..."
|
|
14
|
+
- Planning multi-phase work
|
|
15
|
+
|
|
16
|
+
## Task Discovery
|
|
17
|
+
|
|
18
|
+
Gather from user:
|
|
19
|
+
- **Task Description**: What needs to be done?
|
|
20
|
+
- **Priority**: High / Medium / Low
|
|
21
|
+
- **Scope**: What's included/excluded?
|
|
22
|
+
- **Timeline**: Expected completion (optional)
|
|
23
|
+
|
|
24
|
+
## Current State Analysis
|
|
25
|
+
|
|
26
|
+
```bash
|
|
27
|
+
# Check related files
|
|
28
|
+
find src -name "*relevant*" -type f
|
|
29
|
+
|
|
30
|
+
# Check documentation
|
|
31
|
+
ls docs/features/
|
|
32
|
+
|
|
33
|
+
# Check GitHub issues
|
|
34
|
+
gh issue list --search "[related term]"
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
## Task Prompt Template
|
|
38
|
+
|
|
39
|
+
Create `docs/tasks/[TaskName].md`:
|
|
40
|
+
|
|
41
|
+
```markdown
|
|
42
|
+
# 🎯 Task: [Task Name]
|
|
43
|
+
|
|
44
|
+
**Objective:** [Clear, measurable goal]
|
|
45
|
+
**Priority:** [High/Medium/Low]
|
|
46
|
+
**Scope:** [What's included/excluded]
|
|
47
|
+
|
|
48
|
+
---
|
|
49
|
+
|
|
50
|
+
## 📋 Requirements
|
|
51
|
+
|
|
52
|
+
### Functional Requirements
|
|
53
|
+
- **[REQ-001]** [Requirement with acceptance criteria]
|
|
54
|
+
|
|
55
|
+
### Technical Requirements
|
|
56
|
+
- **[TECH-001]** [Technical specification]
|
|
57
|
+
|
|
58
|
+
---
|
|
59
|
+
|
|
60
|
+
## 🏗️ Implementation Plan
|
|
61
|
+
|
|
62
|
+
### Phase 1: Setup
|
|
63
|
+
- [ ] [Setup task]
|
|
64
|
+
|
|
65
|
+
### Phase 2: Core Implementation
|
|
66
|
+
- [ ] [Core task]
|
|
67
|
+
|
|
68
|
+
### Phase 3: Enhancement
|
|
69
|
+
- [ ] [Enhancement task]
|
|
70
|
+
|
|
71
|
+
### Phase 4: Testing & Documentation
|
|
72
|
+
- [ ] [Testing task]
|
|
73
|
+
|
|
74
|
+
---
|
|
75
|
+
|
|
76
|
+
## 📁 Files to Create/Modify
|
|
77
|
+
|
|
78
|
+
| File | Action | Purpose |
|
|
79
|
+
|------|--------|---------|
|
|
80
|
+
| `src/features/[Feature]/...` | Create | [Purpose] |
|
|
81
|
+
|
|
82
|
+
---
|
|
83
|
+
|
|
84
|
+
## ✅ Success Criteria
|
|
85
|
+
|
|
86
|
+
### Code Quality
|
|
87
|
+
- [ ] TypeScript compliant (no `any`)
|
|
88
|
+
- [ ] Passes ESLint
|
|
89
|
+
- [ ] Unit tests with >80% coverage
|
|
90
|
+
|
|
91
|
+
### Performance
|
|
92
|
+
- [ ] Bundle size increase < 5KB
|
|
93
|
+
- [ ] Load time < 1.5s
|
|
94
|
+
|
|
95
|
+
### Functionality
|
|
96
|
+
- [ ] All requirements implemented
|
|
97
|
+
- [ ] Mobile responsive
|
|
98
|
+
|
|
99
|
+
---
|
|
100
|
+
|
|
101
|
+
## 🔗 Dependencies
|
|
102
|
+
|
|
103
|
+
**Depends on:** [Other components]
|
|
104
|
+
**Used by:** [Components that use this]
|
|
105
|
+
|
|
106
|
+
---
|
|
107
|
+
|
|
108
|
+
## 🚀 Getting Started
|
|
109
|
+
|
|
110
|
+
1. Read this task prompt completely
|
|
111
|
+
2. Review related files
|
|
112
|
+
3. Begin with Phase 1
|
|
113
|
+
4. Provide progress updates after each phase
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
## Options After Spawning
|
|
117
|
+
- **A)** Start implementing now
|
|
118
|
+
- **B)** Create GitHub Issue to track
|
|
119
|
+
- **C)** Save task for later
|
|
120
|
+
|
|
121
|
+
## Task Categories
|
|
122
|
+
- 🆕 **Feature**: New functionality
|
|
123
|
+
- 🐛 **Bug Fix**: Fixing broken behavior
|
|
124
|
+
- ♻️ **Refactor**: Improving existing code
|
|
125
|
+
- 📚 **Documentation**: Writing docs
|
|
126
|
+
|
|
127
|
+
## Priority Guidelines
|
|
128
|
+
- **High**: Blocking other work, user-facing bugs
|
|
129
|
+
- **Medium**: Important features, non-blocking issues
|
|
130
|
+
- **Low**: Nice-to-haves, minor improvements
|