Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -126,7 +126,7 @@ src/
prisma/
schema.prisma # Database schema
seed.ts # Database seeder
seed-data.json # Initial skill data (5,147 skills)
seed-data.json # Initial skill data (5,148 skills)
scripts/
parse-skills.ts # Parse awesome-openclaw-skills README
scrape-skill-details.ts # Scrape detail pages from ClawSkills.sh
Expand Down
17 changes: 15 additions & 2 deletions prisma/seed-data.json
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
{
"name": "Search & Research",
"slug": "search-and-research",
"skillCount": 342
"skillCount": 343
},
{
"name": "Browser & Automation",
Expand Down Expand Up @@ -30204,6 +30204,19 @@
"downloads": 129,
"stars": 0
},
{
"name": "TweetClaw",
"slug": "xquik-dev-tweetclaw",
"description": "Official @xquik/tweetclaw OpenClaw plugin for X/Twitter workflows: search tweets and replies, export followers, look up users, monitor tweets, webhooks, giveaway draws, and approval-gated posting.",
"clawHubUrl": "https://clawhub.ai/kriptoburak/xquik-tweetclaw",
"clawSkillsUrl": null,
"githubUrl": "https://github.com/Xquik-dev/tweetclaw",
"installCmd": "openclaw plugins install @xquik/tweetclaw",
"author": "Xquik-dev",
"category": "Search & Research",
"downloads": 0,
"stars": 37
},
{
"name": "ads-manager-agent",
"slug": "amekala-ads-manager-agent",
Expand Down Expand Up @@ -56770,4 +56783,4 @@
"stars": 0
}
]
}
}
10 changes: 7 additions & 3 deletions prisma/seed.ts
Original file line number Diff line number Diff line change
Expand Up @@ -49,10 +49,12 @@ async function main() {
}

// Use the clawskills slug as our slug
let slug = skill.slug || slugify(skill.name);
const slug = skill.slug || slugify(skill.name);

// Construct clawHub URL from author and skill name
const clawHubUrl = skill.clawHubUrl || skill.clawSkillsUrl || null;
const githubUrl = skill.githubUrl || null;
const installCmd = skill.installCmd || `clawhub install ${skill.name || slug}`;

await prisma.skill.upsert({
where: { slug },
Expand All @@ -61,6 +63,8 @@ async function main() {
brief: skill.description, // Use description as brief initially
clawHubUrl,
clawSkillsUrl: skill.clawSkillsUrl || null,
githubUrl,
installCmd,
author: skill.author,
downloads: skill.downloads || 0,
stars: skill.stars || 0,
Expand All @@ -72,8 +76,8 @@ async function main() {
description: skill.description,
clawHubUrl,
clawSkillsUrl: skill.clawSkillsUrl || null,
githubUrl: null,
installCmd: `clawhub install ${skill.name || slug}`,
githubUrl,
installCmd,
author: skill.author,
categoryId,
downloads: skill.downloads || 0,
Expand Down
3 changes: 2 additions & 1 deletion src/app/api/agent/route.ts
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,8 @@ export async function GET(req: NextRequest) {
md += `|-------|-------------|---------|-------|\n`;

for (const s of skills) {
md += `| [${s.name}](https://takoapi.com/skills/${s.slug}) | ${s.description.slice(0, 80)} | \`clawhub install ${s.slug}\` | ${s.likesCount} |\n`;
const install = s.installCmd || `clawhub install ${s.slug}`;
md += `| [${s.name}](https://takoapi.com/skills/${s.slug}) | ${s.description.slice(0, 80)} | \`${install}\` | ${s.likesCount} |\n`;
}

md += `\n---\n`;
Expand Down