diff --git a/antigravity-awesome-skills/.claude-plugin/marketplace.json b/antigravity-awesome-skills/.claude-plugin/marketplace.json index 93779b91..ff663962 100644 --- a/antigravity-awesome-skills/.claude-plugin/marketplace.json +++ b/antigravity-awesome-skills/.claude-plugin/marketplace.json @@ -6,12 +6,12 @@ }, "metadata": { "description": "Claude Code marketplace entries for the plugin-safe Antigravity Awesome Skills library and its compatible editorial bundles.", - "version": "13.11.0" + "version": "13.12.0" }, "plugins": [ { "name": "antigravity-awesome-skills", - "version": "13.11.0", + "version": "13.12.0", "description": "Expose the plugin-safe Claude Code subset of Antigravity Awesome Skills through a single marketplace entry.", "author": { "name": "sickn33 and contributors", @@ -31,7 +31,7 @@ }, { "name": "antigravity-bundle-essentials", - "version": "13.11.0", + "version": "13.12.0", "description": "Install the \"Essentials\" editorial skill bundle for Claude Code.", "author": { "name": "sickn33 and contributors", @@ -51,7 +51,7 @@ }, { "name": "antigravity-bundle-security-engineer", - "version": "13.11.0", + "version": "13.12.0", "description": "Install the \"Security Engineer\" editorial skill bundle for Claude Code.", "author": { "name": "sickn33 and contributors", @@ -71,7 +71,7 @@ }, { "name": "antigravity-bundle-security-developer", - "version": "13.11.0", + "version": "13.12.0", "description": "Install the \"Security Developer\" editorial skill bundle for Claude Code.", "author": { "name": "sickn33 and contributors", @@ -91,7 +91,7 @@ }, { "name": "antigravity-bundle-web-wizard", - "version": "13.11.0", + "version": "13.12.0", "description": "Install the \"Web Wizard\" editorial skill bundle for Claude Code.", "author": { "name": "sickn33 and contributors", @@ -111,7 +111,7 @@ }, { "name": "antigravity-bundle-web-designer", - "version": "13.11.0", + "version": "13.12.0", "description": "Install the \"Web Designer\" editorial skill bundle for Claude Code.", "author": { "name": "sickn33 and contributors", @@ -131,7 +131,7 @@ }, { "name": "antigravity-bundle-full-stack-developer", - "version": "13.11.0", + "version": "13.12.0", "description": "Install the \"Full-Stack Developer\" editorial skill bundle for Claude Code.", "author": { "name": "sickn33 and contributors", @@ -151,7 +151,7 @@ }, { "name": "antigravity-bundle-agent-architect", - "version": "13.11.0", + "version": "13.12.0", "description": "Install the \"Agent Architect\" editorial skill bundle for Claude Code.", "author": { "name": "sickn33 and contributors", @@ -171,7 +171,7 @@ }, { "name": "antigravity-bundle-llm-application-developer", - "version": "13.11.0", + "version": "13.12.0", "description": "Install the \"LLM Application Developer\" editorial skill bundle for Claude Code.", "author": { "name": "sickn33 and contributors", @@ -191,7 +191,7 @@ }, { "name": "antigravity-bundle-indie-game-dev", - "version": "13.11.0", + "version": "13.12.0", "description": "Install the \"Indie Game Dev\" editorial skill bundle for Claude Code.", "author": { "name": "sickn33 and contributors", @@ -211,7 +211,7 @@ }, { "name": "antigravity-bundle-python-pro", - "version": "13.11.0", + "version": "13.12.0", "description": "Install the \"Python Pro\" editorial skill bundle for Claude Code.", "author": { "name": "sickn33 and contributors", @@ -231,7 +231,7 @@ }, { "name": "antigravity-bundle-typescript-javascript", - "version": "13.11.0", + "version": "13.12.0", "description": "Install the \"TypeScript & JavaScript\" editorial skill bundle for Claude Code.", "author": { "name": "sickn33 and contributors", @@ -251,7 +251,7 @@ }, { "name": "antigravity-bundle-systems-programming", - "version": "13.11.0", + "version": "13.12.0", "description": "Install the \"Systems Programming\" editorial skill bundle for Claude Code.", "author": { "name": "sickn33 and contributors", @@ -271,7 +271,7 @@ }, { "name": "antigravity-bundle-startup-founder", - "version": "13.11.0", + "version": "13.12.0", "description": "Install the \"Startup Founder\" editorial skill bundle for Claude Code.", "author": { "name": "sickn33 and contributors", @@ -291,7 +291,7 @@ }, { "name": "antigravity-bundle-business-analyst", - "version": "13.11.0", + "version": "13.12.0", "description": "Install the \"Business Analyst\" editorial skill bundle for Claude Code.", "author": { "name": "sickn33 and contributors", @@ -311,7 +311,7 @@ }, { "name": "antigravity-bundle-marketing-growth", - "version": "13.11.0", + "version": "13.12.0", "description": "Install the \"Marketing & Growth\" editorial skill bundle for Claude Code.", "author": { "name": "sickn33 and contributors", @@ -331,7 +331,7 @@ }, { "name": "antigravity-bundle-devops-cloud", - "version": "13.11.0", + "version": "13.12.0", "description": "Install the \"DevOps & Cloud\" editorial skill bundle for Claude Code.", "author": { "name": "sickn33 and contributors", @@ -351,7 +351,7 @@ }, { "name": "antigravity-bundle-observability-monitoring", - "version": "13.11.0", + "version": "13.12.0", "description": "Install the \"Observability & Monitoring\" editorial skill bundle for Claude Code.", "author": { "name": "sickn33 and contributors", @@ -371,7 +371,7 @@ }, { "name": "antigravity-bundle-data-analytics", - "version": "13.11.0", + "version": "13.12.0", "description": "Install the \"Data & Analytics\" editorial skill bundle for Claude Code.", "author": { "name": "sickn33 and contributors", @@ -391,7 +391,7 @@ }, { "name": "antigravity-bundle-data-engineering", - "version": "13.11.0", + "version": "13.12.0", "description": "Install the \"Data Engineering\" editorial skill bundle for Claude Code.", "author": { "name": "sickn33 and contributors", @@ -411,7 +411,7 @@ }, { "name": "antigravity-bundle-creative-director", - "version": "13.11.0", + "version": "13.12.0", "description": "Install the \"Creative Director\" editorial skill bundle for Claude Code.", "author": { "name": "sickn33 and contributors", @@ -431,7 +431,7 @@ }, { "name": "antigravity-bundle-qa-testing", - "version": "13.11.0", + "version": "13.12.0", "description": "Install the \"QA & Testing\" editorial skill bundle for Claude Code.", "author": { "name": "sickn33 and contributors", @@ -451,7 +451,7 @@ }, { "name": "antigravity-bundle-aas-web-app-builder", - "version": "13.11.0", + "version": "13.12.0", "description": "Install the \"AAS Web App Builder\" editorial skill bundle for Claude Code.", "author": { "name": "sickn33 and contributors", @@ -471,7 +471,7 @@ }, { "name": "antigravity-bundle-aas-product-design-studio", - "version": "13.11.0", + "version": "13.12.0", "description": "Install the \"AAS Product Design Studio\" editorial skill bundle for Claude Code.", "author": { "name": "sickn33 and contributors", @@ -491,7 +491,7 @@ }, { "name": "antigravity-bundle-aas-security-engineer", - "version": "13.11.0", + "version": "13.12.0", "description": "Install the \"AAS Security Engineer\" editorial skill bundle for Claude Code.", "author": { "name": "sickn33 and contributors", @@ -511,7 +511,7 @@ }, { "name": "antigravity-bundle-aas-secure-app-builder", - "version": "13.11.0", + "version": "13.12.0", "description": "Install the \"AAS Secure App Builder\" editorial skill bundle for Claude Code.", "author": { "name": "sickn33 and contributors", @@ -531,7 +531,7 @@ }, { "name": "antigravity-bundle-aas-documents-presentations", - "version": "13.11.0", + "version": "13.12.0", "description": "Install the \"AAS Documents & Presentations\" editorial skill bundle for Claude Code.", "author": { "name": "sickn33 and contributors", @@ -551,7 +551,7 @@ }, { "name": "antigravity-bundle-aas-data-analytics", - "version": "13.11.0", + "version": "13.12.0", "description": "Install the \"AAS Data Analytics\" editorial skill bundle for Claude Code.", "author": { "name": "sickn33 and contributors", @@ -571,7 +571,7 @@ }, { "name": "antigravity-bundle-aas-agent-mcp-builder", - "version": "13.11.0", + "version": "13.12.0", "description": "Install the \"AAS Agent & MCP Builder\" editorial skill bundle for Claude Code.", "author": { "name": "sickn33 and contributors", @@ -591,7 +591,7 @@ }, { "name": "antigravity-bundle-aas-oss-maintainer", - "version": "13.11.0", + "version": "13.12.0", "description": "Install the \"AAS OSS Maintainer\" editorial skill bundle for Claude Code.", "author": { "name": "sickn33 and contributors", @@ -611,7 +611,7 @@ }, { "name": "antigravity-bundle-aas-qa-test-automation", - "version": "13.11.0", + "version": "13.12.0", "description": "Install the \"AAS QA & Test Automation\" editorial skill bundle for Claude Code.", "author": { "name": "sickn33 and contributors", @@ -631,7 +631,7 @@ }, { "name": "antigravity-bundle-aas-devops-cloud", - "version": "13.11.0", + "version": "13.12.0", "description": "Install the \"AAS DevOps & Cloud\" editorial skill bundle for Claude Code.", "author": { "name": "sickn33 and contributors", @@ -651,7 +651,7 @@ }, { "name": "antigravity-bundle-aas-marketing-seo-growth", - "version": "13.11.0", + "version": "13.12.0", "description": "Install the \"AAS Marketing, SEO & Growth\" editorial skill bundle for Claude Code.", "author": { "name": "sickn33 and contributors", @@ -671,7 +671,7 @@ }, { "name": "antigravity-bundle-aas-automation-builder", - "version": "13.11.0", + "version": "13.12.0", "description": "Install the \"AAS Automation Builder\" editorial skill bundle for Claude Code.", "author": { "name": "sickn33 and contributors", @@ -691,7 +691,7 @@ }, { "name": "antigravity-bundle-aas-observability-ir", - "version": "13.11.0", + "version": "13.12.0", "description": "Install the \"AAS Observability IR\" editorial skill bundle for Claude Code.", "author": { "name": "sickn33 and contributors", @@ -711,7 +711,7 @@ }, { "name": "antigravity-bundle-aas-python-api-builder", - "version": "13.11.0", + "version": "13.12.0", "description": "Install the \"AAS Python API Builder\" editorial skill bundle for Claude Code.", "author": { "name": "sickn33 and contributors", @@ -731,7 +731,7 @@ }, { "name": "antigravity-bundle-aas-mobile-app-builder", - "version": "13.11.0", + "version": "13.12.0", "description": "Install the \"AAS Mobile App Builder\" editorial skill bundle for Claude Code.", "author": { "name": "sickn33 and contributors", @@ -751,7 +751,7 @@ }, { "name": "antigravity-bundle-mobile-developer", - "version": "13.11.0", + "version": "13.12.0", "description": "Install the \"Mobile Developer\" editorial skill bundle for Claude Code.", "author": { "name": "sickn33 and contributors", @@ -771,7 +771,7 @@ }, { "name": "antigravity-bundle-integration-apis", - "version": "13.11.0", + "version": "13.12.0", "description": "Install the \"Integration & APIs\" editorial skill bundle for Claude Code.", "author": { "name": "sickn33 and contributors", @@ -791,7 +791,7 @@ }, { "name": "antigravity-bundle-architecture-design", - "version": "13.11.0", + "version": "13.12.0", "description": "Install the \"Architecture & Design\" editorial skill bundle for Claude Code.", "author": { "name": "sickn33 and contributors", @@ -811,7 +811,7 @@ }, { "name": "antigravity-bundle-ddd-evented-architecture", - "version": "13.11.0", + "version": "13.12.0", "description": "Install the \"DDD & Evented Architecture\" editorial skill bundle for Claude Code.", "author": { "name": "sickn33 and contributors", @@ -831,7 +831,7 @@ }, { "name": "antigravity-bundle-automation-builder", - "version": "13.11.0", + "version": "13.12.0", "description": "Install the \"Automation Builder\" editorial skill bundle for Claude Code.", "author": { "name": "sickn33 and contributors", @@ -851,7 +851,7 @@ }, { "name": "antigravity-bundle-revops-crm-automation", - "version": "13.11.0", + "version": "13.12.0", "description": "Install the \"RevOps & CRM Automation\" editorial skill bundle for Claude Code.", "author": { "name": "sickn33 and contributors", @@ -871,7 +871,7 @@ }, { "name": "antigravity-bundle-commerce-payments", - "version": "13.11.0", + "version": "13.12.0", "description": "Install the \"Commerce & Payments\" editorial skill bundle for Claude Code.", "author": { "name": "sickn33 and contributors", @@ -891,7 +891,7 @@ }, { "name": "antigravity-bundle-odoo-erp", - "version": "13.11.0", + "version": "13.12.0", "description": "Install the \"Odoo ERP\" editorial skill bundle for Claude Code.", "author": { "name": "sickn33 and contributors", @@ -911,7 +911,7 @@ }, { "name": "antigravity-bundle-azure-ai-cloud", - "version": "13.11.0", + "version": "13.12.0", "description": "Install the \"Azure AI & Cloud\" editorial skill bundle for Claude Code.", "author": { "name": "sickn33 and contributors", @@ -931,7 +931,7 @@ }, { "name": "antigravity-bundle-expo-react-native", - "version": "13.11.0", + "version": "13.12.0", "description": "Install the \"Expo & React Native\" editorial skill bundle for Claude Code.", "author": { "name": "sickn33 and contributors", @@ -951,7 +951,7 @@ }, { "name": "antigravity-bundle-apple-platform-design", - "version": "13.11.0", + "version": "13.12.0", "description": "Install the \"Apple Platform Design\" editorial skill bundle for Claude Code.", "author": { "name": "sickn33 and contributors", @@ -971,7 +971,7 @@ }, { "name": "antigravity-bundle-makepad-builder", - "version": "13.11.0", + "version": "13.12.0", "description": "Install the \"Makepad Builder\" editorial skill bundle for Claude Code.", "author": { "name": "sickn33 and contributors", @@ -991,7 +991,7 @@ }, { "name": "antigravity-bundle-seo-specialist", - "version": "13.11.0", + "version": "13.12.0", "description": "Install the \"SEO Specialist\" editorial skill bundle for Claude Code.", "author": { "name": "sickn33 and contributors", @@ -1011,7 +1011,7 @@ }, { "name": "antigravity-bundle-documents-presentations", - "version": "13.11.0", + "version": "13.12.0", "description": "Install the \"Documents & Presentations\" editorial skill bundle for Claude Code.", "author": { "name": "sickn33 and contributors", @@ -1031,7 +1031,7 @@ }, { "name": "antigravity-bundle-oss-maintainer", - "version": "13.11.0", + "version": "13.12.0", "description": "Install the \"OSS Maintainer\" editorial skill bundle for Claude Code.", "author": { "name": "sickn33 and contributors", @@ -1051,7 +1051,7 @@ }, { "name": "antigravity-bundle-aas-accessibility-inclusive-ux", - "version": "13.11.0", + "version": "13.12.0", "description": "Install the \"AAS Accessibility & Inclusive UX\" editorial skill bundle for Claude Code.", "author": { "name": "sickn33 and contributors", @@ -1071,7 +1071,7 @@ }, { "name": "antigravity-bundle-aas-api-platform-builder", - "version": "13.11.0", + "version": "13.12.0", "description": "Install the \"AAS API Platform Builder\" editorial skill bundle for Claude Code.", "author": { "name": "sickn33 and contributors", @@ -1091,7 +1091,7 @@ }, { "name": "antigravity-bundle-aas-saas-launch-revenue", - "version": "13.11.0", + "version": "13.12.0", "description": "Install the \"AAS SaaS Launch & Revenue\" editorial skill bundle for Claude Code.", "author": { "name": "sickn33 and contributors", @@ -1111,7 +1111,7 @@ }, { "name": "antigravity-bundle-aas-ai-product-evaluation-ops", - "version": "13.11.0", + "version": "13.12.0", "description": "Install the \"AAS AI Product & Evaluation Ops\" editorial skill bundle for Claude Code.", "author": { "name": "sickn33 and contributors", @@ -1131,7 +1131,7 @@ }, { "name": "antigravity-bundle-aas-data-engineering-platform", - "version": "13.11.0", + "version": "13.12.0", "description": "Install the \"AAS Data Engineering Platform\" editorial skill bundle for Claude Code.", "author": { "name": "sickn33 and contributors", @@ -1151,7 +1151,7 @@ }, { "name": "antigravity-bundle-aas-privacy-compliance-engineering", - "version": "13.11.0", + "version": "13.12.0", "description": "Install the \"AAS Privacy & Compliance Engineering\" editorial skill bundle for Claude Code.", "author": { "name": "sickn33 and contributors", @@ -1171,7 +1171,7 @@ }, { "name": "antigravity-bundle-aas-localization-international-growth", - "version": "13.11.0", + "version": "13.12.0", "description": "Install the \"AAS Localization & International Growth\" editorial skill bundle for Claude Code.", "author": { "name": "sickn33 and contributors", diff --git a/antigravity-awesome-skills/.claude-plugin/plugin.json b/antigravity-awesome-skills/.claude-plugin/plugin.json index dea9a819..713b1f41 100644 --- a/antigravity-awesome-skills/.claude-plugin/plugin.json +++ b/antigravity-awesome-skills/.claude-plugin/plugin.json @@ -1,7 +1,7 @@ { "name": "antigravity-awesome-skills", - "version": "13.11.0", - "description": "Plugin-safe Claude Code distribution of Antigravity Awesome Skills with 1,852 supported skills.", + "version": "13.12.0", + "description": "Plugin-safe Claude Code distribution of Antigravity Awesome Skills with 1,878 supported skills.", "author": { "name": "sickn33 and contributors", "url": "https://github.com/sickn33/antigravity-awesome-skills" diff --git a/antigravity-awesome-skills/CATALOG.md b/antigravity-awesome-skills/CATALOG.md index 49d97e18..5a5a2c44 100644 --- a/antigravity-awesome-skills/CATALOG.md +++ b/antigravity-awesome-skills/CATALOG.md @@ -1,10 +1,10 @@ # Skill Catalog -Generated at: 2026-07-05T15:55:06.000Z +Generated at: 2026-07-07T07:02:03.000Z -Total skills: 1901 +Total skills: 1929 -## architecture (113) +## architecture (115) | Skill | Description | Tags | Triggers | | --- | --- | --- | --- | @@ -23,6 +23,7 @@ Total skills: 1901 | `bash-linux` | Bash/Linux terminal patterns. Critical commands, piping, error handling, scripting. Use when working on macOS or Linux systems. | bash, linux | bash, linux, terminal, critical, commands, piping, error, handling, scripting, working, macos | | `bash-scripting` | Bash scripting workflow for creating production-ready shell scripts with defensive patterns, error handling, and testing. | bash, scripting | bash, scripting, creating, shell, scripts, defensive, error, handling, testing | | `binary-analysis-patterns` | Comprehensive patterns and techniques for analyzing compiled binaries, understanding assembly code, and reconstructing program logic. | binary | binary, analysis, techniques, analyzing, compiled, binaries, understanding, assembly, code, reconstructing, program, logic | +| `brain-to-docs` | Interview the user to turn project vision and decisions into README and ADR documentation. | documentation, adr, planning | documentation, adr, planning, brain, docs, interview, user, turn, vision, decisions, readme | | `brainstorming` | Use before creative or constructive work (features, architecture, behavior). Transforms vague ideas into validated designs through disciplined reasoning and ... | brainstorming | brainstorming, before, creative, constructive, work, features, architecture, behavior, transforms, vague, ideas, validated | | `brooks-audit` | Architecture audit that maps module dependencies, checks layering integrity, and flags structural decay across a codebase, drawing on twelve classic engineer... | brooks, audit | brooks, audit, architecture, maps, module, dependencies, checks, layering, integrity, flags, structural, decay | | `brooks-sweep` | Full-sweep mode: runs a unified analysis across all quality dimensions — code decay, architecture, tech debt, and test quality — then applies fixes directly ... | brooks, sweep | brooks, sweep, full, mode, runs, unified, analysis, all, quality, dimensions, code, decay | @@ -92,6 +93,7 @@ Total skills: 1901 | `projection-patterns` | Build read models and projections from event streams. Use when implementing CQRS read sides, building materialized views, or optimizing query performance in ... | projection | projection, read, models, projections, event, streams, implementing, cqrs, sides, building, materialized, views | | `prompt-engineering` | Expert guide on prompt engineering patterns, best practices, and optimization techniques. Use when user wants to improve prompts, learn prompting strategies,... | prompt, engineering | prompt, engineering, optimization, techniques, user, wants, improve, prompts, learn, prompting, debug, agent | | `radix-ui-design-system` | Build accessible design systems with Radix UI primitives. Headless component customization, theming strategies, and compound component patterns for productio... | radix, ui | radix, ui, accessible, primitives, headless, component, customization, theming, compound, grade, libraries | +| `read-all-adrs` | Read every ADR in a project before summarizing architectural context or decisions. | adr, documentation, architecture | adr, documentation, architecture, read, all, adrs, every, before, summarizing, architectural, context, decisions | | `robius-app-architecture` | CRITICAL: Use for Robius app architecture patterns. Triggers on: Tokio, async, submit_async_request, 异步, 架构, SignalToUI, Cx::post_action, worker task, app st... | robius, app, architecture | robius, app, architecture, critical, triggers, tokio, async, submit, request, signaltoui, cx, post | | `robius-event-action` | CRITICAL: Use for Robius event and action patterns. Triggers on: custom action, MatchEvent, post_action, cx.widget_action, handle_actions, DefaultNone, widge... | robius, event, action | robius, event, action, critical, triggers, custom, matchevent, post, cx, widget, handle, actions | | `robius-widget-patterns` | CRITICAL: Use for Robius widget patterns. Triggers on: apply_over, TextOrImage, modal, 可复用, 模态, collapsible, drag drop, reusable widget, widget design, pagef... | robius, widget | robius, widget, critical, triggers, apply, textorimage, modal, collapsible, drag, drop, reusable, pageflip | @@ -230,7 +232,7 @@ Total skills: 1901 | `xiaohongshu-content-strategist` | Create viral Xiaohongshu (小红书) content with platform-native strategy, save-rate optimization, trending formats, and search SEO for China's #1 lifestyle platf... | xiaohongshu, chinese-market, content-strategy, social-media, marketing, 红书, 小红书 | xiaohongshu, chinese-market, content-strategy, social-media, marketing, 红书, 小红书, content, strategist, viral, platform, native | | `youtube-seo-optimizer` | Generate complete YouTube & podcast SEO packages with live-researched keywords — titles, descriptions, tags, hashtags, chapters, and audit fixes. Use for new... | youtube, seo, optimizer | youtube, seo, optimizer, generate, complete, podcast, packages, live, researched, keywords, titles, descriptions | -## data-ai (347) +## data-ai (350) | Skill | Description | Tags | Triggers | | --- | --- | --- | --- | @@ -241,6 +243,7 @@ Total skills: 1901 | `agent-framework-azure-ai-py` | Build persistent agents on Azure AI Foundry using the Microsoft Agent Framework Python SDK. | agent, framework, azure, ai, py | agent, framework, azure, ai, py, persistent, agents, foundry, microsoft, python, sdk | | `agent-memory` | A hybrid memory system that provides persistent, searchable knowledge management for AI agents. | agent, memory | agent, memory, hybrid, provides, persistent, searchable, knowledge, ai, agents | | `agent-memory-mcp` | A hybrid memory system that provides persistent, searchable knowledge management for AI agents (Architecture, Patterns, Decisions). | agent, memory, mcp | agent, memory, mcp, hybrid, provides, persistent, searchable, knowledge, ai, agents, architecture, decisions | +| `agent-self-scheduling` | Schedule AI agent runs with cron, loops, or external clocks while avoiding unsafe tight autonomous timers. | agents, scheduling, automation, cron | agents, scheduling, automation, cron, agent, self, schedule, ai, runs, loops, external, clocks | | `agent-squad/aria` | Designs the data model, API contracts, and structural foundation of the system. | agent, squad/aria | agent, squad/aria, aria, designs, data, model, api, contracts, structural, foundation | | `agent-tool-builder` | Tools are how AI agents interact with the world. A well-designed tool is the difference between an agent that works and one that hallucinates, fails silently... | agent, builder | agent, builder, how, ai, agents, interact, world, well, designed, difference, between, works | | `agentfolio` | Skill for discovering and researching autonomous AI agents, tools, and ecosystems using the AgentFolio directory. | agentfolio | agentfolio, skill, discovering, researching, autonomous, ai, agents, ecosystems, directory | @@ -370,6 +373,7 @@ Total skills: 1901 | `database-design` | Database design principles and decision-making. Schema design, indexing strategy, ORM selection, serverless databases. | database | database, principles, decision, making, schema, indexing, orm, selection, serverless, databases | | `database-optimizer` | Expert database optimizer specializing in modern performance tuning, query optimization, and scalable architectures. | database, optimizer | database, optimizer, specializing, performance, tuning, query, optimization, scalable, architectures | | `dbt-transformation-patterns` | Production-ready patterns for dbt (data build tool) including model organization, testing strategies, documentation, and incremental processing. | dbt, transformation | dbt, transformation, data, including, model, organization, testing, documentation, incremental, processing | +| `delegating-to-agents` | Delegate bounded work to other AI agents while preserving context, ownership, and progress checks. | agents, delegation, orchestration | agents, delegation, orchestration, delegating, delegate, bounded, work, other, ai, while, preserving, context | | `design-it/ai-native-ui` | Web and App implementation guide for AI Native UI. Trigger when user wants conversational interfaces, adaptive layouts, and generative AI aesthetics. | it/ai, native, ui | it/ai, native, ui, ai, web, app, trigger, user, wants, conversational, interfaces, adaptive | | `design-it/dashboard-design` | Web and App implementation guide for Dashboard Design. Trigger when user wants analytics-focused layouts, data visualization, and modular overview screens. | it/dashboard | it/dashboard, dashboard, web, app, trigger, user, wants, analytics, layouts, data, visualization, modular | | `design-it/data-dense-design` | Web and App implementation guide for Data-Dense Design. Trigger when user wants professional tools, maximum information density, and expert interfaces (like ... | it/data, dense | it/data, dense, data, web, app, trigger, user, wants, professional, maximum, information, density | @@ -436,6 +440,7 @@ Total skills: 1901 | `libreoffice/calc` | Spreadsheet creation, format conversion (ODS/XLSX/CSV), formulas, data automation with LibreOffice Calc. | libreoffice/calc | libreoffice/calc, calc, spreadsheet, creation, format, conversion, ods, xlsx, csv, formulas, data, automation | | `libreoffice/draw` | Vector graphics and diagram creation, format conversion (ODG/SVG/PDF) with LibreOffice Draw. | libreoffice/draw | libreoffice/draw, draw, vector, graphics, diagram, creation, format, conversion, odg, svg, pdf, libreoffice | | `linkedin-content-generator` | AI-powered LinkedIn content suite: generate posts, carousels, newsletters, and 30-day calendars with niche-specific SEO rules and a reinforcement-learning pe... | linkedin, content-creation, social-media, marketing, newsletter, carousel, content-calendar, reinforcement-learning, seo, copywriting | linkedin, content-creation, social-media, marketing, newsletter, carousel, content-calendar, reinforcement-learning, seo, copywriting, content, generator | +| `linkedin-post-writer` | Draft LinkedIn posts from 16 tested hook formulas mapped to engagement goals (comments, reposts, likes, saves), with 2026 algorithm formatting rules and an A... | linkedin, copywriting, hooks, social-media, personal-brand, content-marketing | linkedin, copywriting, hooks, social-media, personal-brand, content-marketing, post, writer, draft, posts, 16, tested | | `llm-app-patterns` | Production-ready patterns for building LLM applications, inspired by [Dify](https://github.com/langgenius/dify) and industry best practices. | llm, app | llm, app, building, applications, inspired, dify, https, github, com, langgenius, industry | | `llm-application-dev-ai-assistant` | You are an AI assistant development expert specializing in creating intelligent conversational interfaces, chatbots, and AI-powered applications. Design comp... | llm, application, dev, ai | llm, application, dev, ai, assistant, development, specializing, creating, intelligent, conversational, interfaces, chatbots | | `llm-application-dev-langchain-agent` | You are an expert LangChain agent developer specializing in production-grade AI systems using LangChain 0.1+ and LangGraph. | llm, application, dev, langchain, agent | llm, application, dev, langchain, agent, developer, specializing, grade, ai, langgraph | @@ -582,7 +587,7 @@ Total skills: 1901 | `yes-md` | 6-layer AI governance: safety gates, evidence-based debugging, anti-slack detection, and machine-enforced hooks. Makes AI safe, thorough, and honest. | yes, md | yes, md, layer, ai, governance, safety, gates, evidence, debugging, anti, slack, detection | | `youtube-automation` | Automate YouTube tasks via Rube MCP (Composio): upload videos, manage playlists, search content, get analytics, and handle comments. Always search tools firs... | youtube | youtube, automation, automate, tasks, via, rube, mcp, composio, upload, videos, playlists, search | -## development (261) +## development (262) | Skill | Description | Tags | Triggers | | --- | --- | --- | --- | @@ -667,6 +672,7 @@ Total skills: 1901 | `dbos-golang` | Guide for building reliable, fault-tolerant Go applications with DBOS durable workflows. Use when adding DBOS to existing Go code, creating workflows and ste... | dbos, golang | dbos, golang, building, reliable, fault, tolerant, go, applications, durable, adding, existing, code | | `dbos-python` | Guide for building reliable, fault-tolerant Python applications with DBOS durable workflows. Use when adding DBOS to existing Python code, creating workflows... | dbos, python | dbos, python, building, reliable, fault, tolerant, applications, durable, adding, existing, code, creating | | `dbos-typescript` | Guide for building reliable, fault-tolerant TypeScript applications with DBOS durable workflows. Use when adding DBOS to existing TypeScript code, creating w... | dbos, typescript | dbos, typescript, building, reliable, fault, tolerant, applications, durable, adding, existing, code, creating | +| `deepapi` | Use DeepAPI for supported scraping, research, and email workflows with explicit credentials and approval. | deepapi, scraping, email, api | deepapi, scraping, email, api, supported, research, explicit, credentials, approval | | `design-it` | Routes frontend design tasks to 48 specific UI styles. Triggers for websites, app screens, or UI components requesting a specific aesthetic. | design, ui, frontend | design, ui, frontend, routes, tasks, 48, specific, styles, triggers, websites, app, screens | | `design-it/widget-based-design` | Web and App implementation guide for Widget-Based Design. Trigger when user wants modular blocks, iOS Home Screen aesthetics, and customizable mini-apps. | it/widget, based | it/widget, based, widget, web, app, trigger, user, wants, modular, blocks, ios, home | | `design-philosophy` | Visual philosophy and art-direction for frontend. Use when creating high-concept work, campaigns, or when the user asks for a visual philosophy, manifesto, o... | philosophy | philosophy, visual, art, direction, frontend, creating, high, concept, work, campaigns, user, asks | @@ -871,7 +877,7 @@ Total skills: 1901 | `yann-lecun-filosofia` | Sub-skill filosófica e pedagógica de Yann LeCun. | persona, ai-philosophy, open-source, education | persona, ai-philosophy, open-source, education, yann, lecun, filosofia, sub, skill, filos, fica, pedag | | `youtube-notetaker` | Turn YouTube talks into local study notes with slides, transcripts, editable annotations, and a markdown-backed viewer. | dair-academy, ai, workflow | dair-academy, ai, workflow, youtube, notetaker, turn, talks, local, study, notes, slides, transcripts | -## general (512) +## general (530) | Skill | Description | Tags | Triggers | | --- | --- | --- | --- | @@ -951,6 +957,7 @@ Total skills: 1901 | `claude-win11-speckit-update-skill` | Windows 11 system management | claude, win11, speckit, update, skill | claude, win11, speckit, update, skill, windows, 11 | | `clean-code` | This skill embodies the principles of "Clean Code" by Robert C. Martin (Uncle Bob). Use it to transform "code that works" into "code that is clean." | clean, code | clean, code, skill, embodies, principles, robert, martin, uncle, bob, transform, works | | `cloudflare-workers-expert` | Expert in Cloudflare Workers and the Edge Computing ecosystem. Covers Wrangler, KV, D1, Durable Objects, and R2 storage. | cloudflare, workers | cloudflare, workers, edge, computing, ecosystem, covers, wrangler, kv, d1, durable, objects, r2 | +| `cmux` | Control cmux workspaces, panes, surfaces, and agent sessions safely from macOS terminal workflows. | cmux, terminal, agents, macos | cmux, terminal, agents, macos, control, workspaces, panes, surfaces, agent, sessions, safely | | `code-polish` | Rewrites unprofessional code comments into clear ones and performs non-semantic cleanup. Use to professionalize code without altering logic or behavior. | code, polish | code, polish, rewrites, unprofessional, comments, clear, ones, performs, non, semantic, cleanup, professionalize | | `code-refactoring-context-restore` | Use when working with code refactoring context restore | code, refactoring, restore | code, refactoring, restore, context, working | | `code-refactoring-tech-debt` | You are a technical debt expert specializing in identifying, quantifying, and prioritizing technical debt in software projects. Analyze the codebase to uncov... | code, refactoring, tech, debt | code, refactoring, tech, debt, technical, specializing, identifying, quantifying, prioritizing, software, analyze, codebase | @@ -960,6 +967,7 @@ Total skills: 1901 | `code-simplifier` | Simplifies and refines code for clarity, consistency, and maintainability while preserving all functionality. Use when asked to "simplify code", "clean up co... | code, simplifier | code, simplifier, simplifies, refines, clarity, consistency, maintainability, while, preserving, all, functionality, asked | | `codebase-cleanup-tech-debt` | You are a technical debt expert specializing in identifying, quantifying, and prioritizing technical debt in software projects. Analyze the codebase to uncov... | codebase, cleanup, tech, debt | codebase, cleanup, tech, debt, technical, specializing, identifying, quantifying, prioritizing, software, analyze, uncover | | `codex-fable5` | Apply Fable-inspired discipline to Codex work: inspect first, track goals and findings, ground conclusions in evidence, verify before completion, and adapt C... | codex, fable-style, agent-workflow, verification, prompt-adaptation | codex, fable-style, agent-workflow, verification, prompt-adaptation, fable5, apply, fable, inspired, discipline, work, inspect | +| `codex-subagent` | Launch Codex CLI as an isolated subagent for bounded coding, review, or verification tasks. | codex, subagents, delegation | codex, subagents, delegation, subagent, launch, cli, isolated, bounded, coding, review, verification, tasks | | `cold-email` | Write B2B cold emails and follow-up sequences that earn replies. Use when creating outbound prospecting emails, SDR outreach, personalized opening lines, sub... | cold, email | cold, email, write, b2b, emails, follow, up, sequences, earn, replies, creating, outbound | | `commit` | ALWAYS use this skill when committing code changes — never commit directly without it. Creates commits following Sentry conventions with proper conventional ... | commit | commit, always, skill, committing, code, changes, never, directly, without, creates, commits, following | | `community-building` | When the user wants to build, grow, or improve a developer community on Discord, Slack, or forums. Trigger phrases include "developer community," "Discord se... | community, building | community, building, user, wants, grow, improve, developer, discord, slack, forums, trigger, phrases | @@ -1059,11 +1067,13 @@ Total skills: 1901 | `diary` | Unified Diary System: A context-preserving automated logger for multi-project development. | diary | diary, unified, context, preserving, automated, logger, multi, development | | `dispatch` | Delegate tasks to OpenAI Codex CLI and Google Antigravity CLI from Claude Code with topic-aware sessions | delegation, codex, antigravity, gemini, multi-model, second-opinion, agent-workflow | delegation, codex, antigravity, gemini, multi-model, second-opinion, agent-workflow, dispatch, delegate, tasks, openai, cli | | `dispatching-parallel-agents` | Use when facing 2+ independent tasks that can be worked on without shared state or sequential dependencies | dispatching, parallel, agents | dispatching, parallel, agents, facing, independent, tasks, worked, without, shared, state, sequential, dependencies | +| `distribute-skill-to-all-agents` | Distribute a skill across configured agent skill folders while respecting local symlink layouts. | skills, distribution, agents | skills, distribution, agents, distribute, skill, all, configured, agent, folders, while, respecting, local | | `doc2math` | Convert narrative technical documents into grounded Mathematical Problem Specifications with variables, constraints, objectives, and uncertainty. | doc2math | doc2math, convert, narrative, technical, documents, grounded, mathematical, problem, specifications, variables, constraints, objectives | | `documentation-and-adrs` | Records decisions and documentation. Use when making architectural decisions, changing public APIs, shipping features, or when you need to record context tha... | documentation, and, adrs | documentation, and, adrs, records, decisions, making, architectural, changing, public, apis, shipping, features | | `docx-official` | A user may ask you to create, edit, or analyze the contents of a .docx file. A .docx file is essentially a ZIP archive containing XML files and other resourc... | docx, official | docx, official, user, may, ask, edit, analyze, contents, file, essentially, zip, archive | | `dx-optimizer` | Developer Experience specialist. Improves tooling, setup, and workflows. Use PROACTIVELY when setting up new projects, after team feedback, or when developme... | dx, optimizer | dx, optimizer, developer, experience, improves, tooling, setup, proactively, setting, up, new, after | | `eas-update-insights` | Check the health of published EAS Updates: crash rates, install/launch counts, unique users, payload size, and the split between embedded and OTA users per c... | eas, update, insights | eas, update, insights, check, health, published, updates, crash, rates, install, launch, counts | +| `effective-agent-skills` | Author and review high-quality agent skills with triggers, progressive disclosure, and safety notes. | skills, authoring, quality | skills, authoring, quality, effective, agent, author, review, high, triggers, progressive, disclosure, safety | | `efficient-web-research` | Protocol for token-efficient web research. Use when accessing URLs, GitHub repos, or running search queries. Prevents full-page fetching waste. | efficient, web, research | efficient, web, research, protocol, token, accessing, urls, github, repos, running, search, queries | | `elon-musk` | Agente que simula Elon Musk com profundidade psicologica e comunicacional de alta fidelidade. Ativado para: "fale como Elon", "simule Elon Musk", "o que Elon... | persona, first-principles, innovation, strategy | persona, first-principles, innovation, strategy, elon, musk, agente, que, simula, com, profundidade, psicologica | | `emergency-card` | 生成紧急情况下快速访问的医疗信息摘要卡片。当用户需要旅行、就诊准备、紧急情况或询问"紧急信息"、"医疗卡片"、"急救信息"时使用此技能。提取关键信息(过敏、用药、急症、植入物),支持多格式输出(JSON、文本、二维码),用于急救或快速就医。 | emergency, card | emergency, card, json | @@ -1079,6 +1089,7 @@ Total skills: 1901 | `expo-dev-client` | Build Expo app for development | expo, dev, client | expo, dev, client, app, development | | `expo-ui-jetpack-compose` | expo-ui-jetpack-compose | expo, ui, jetpack, compose | expo, ui, jetpack, compose | | `expo-ui-swift-ui` | expo-ui-swift-ui | expo, ui, swift | expo, ui, swift | +| `fable-safe-prompt` | Rewrite allowed prompts to reduce false-positive safety triggers without bypassing policy or changing intent. | prompting, safety, guardrails | prompting, safety, guardrails, fable, safe, prompt, rewrite, allowed, prompts, reduce, false, positive | | `fal-platform` | Platform APIs for model management, pricing, and usage tracking | fal, platform | fal, platform, apis, model, pricing, usage, tracking | | `family-health-analyzer` | 分析家族病史、评估遗传风险、识别家庭健康模式、提供个性化预防建议 | family, health, analyzer | family, health, analyzer | | `favicon` | Generate favicons from a source image | favicon | favicon, generate, favicons, source, image | @@ -1090,6 +1101,7 @@ Total skills: 1901 | `fitness-analyzer` | 分析运动数据、识别运动模式、评估健身进展,并提供个性化训练建议。支持与慢性病数据的关联分析。 | fitness, analyzer | fitness, analyzer | | `fix-review` | Verify fix commits address audit findings without new bugs | fix | fix, review, verify, commits, address, audit, findings, without, new, bugs | | `fixing-motion-performance` | Audit and fix animation performance issues including layout thrashing, compositor properties, scroll-linked motion, and blur effects. Use when animations stu... | fixing, motion, performance | fixing, motion, performance, audit, fix, animation, issues, including, layout, thrashing, compositor, properties | +| `folder-specific-claude-and-agents-md` | Create folder-scoped CLAUDE.md and AGENTS.md guidance for future agents working in that area. | agents-md, claude-md, documentation | agents-md, claude-md, documentation, folder, specific, claude, agents, md, scoped, guidance, future, working | | `form-cro` | Optimize any form that is NOT signup or account registration — including lead capture, contact, demo request, application, survey, quote, and checkout forms. | form, cro | form, cro, optimize, any, signup, account, registration, including, lead, capture, contact, demo | | `fp-either-ref` | Quick reference for Either type. Use when user needs error handling, validation, or operations that can fail with typed errors. | fp-ts, either, error-handling, validation, quick-reference | fp-ts, either, error-handling, validation, quick-reference, fp, ref, quick, reference, type, user, error | | `framework-migration-code-migrate` | You are a code migration expert specializing in transitioning codebases between frameworks, languages, versions, and platforms. Generate comprehensive migrat... | framework, migration, code, migrate | framework, migration, code, migrate, specializing, transitioning, codebases, between, frameworks, languages, versions, platforms | @@ -1113,6 +1125,7 @@ Total skills: 1901 | `git-pushing` | Stage all changes, create a conventional commit, and push to the remote branch. Use when explicitly asks to push changes ("push this", "commit and push"), me... | git, pushing | git, pushing, stage, all, changes, conventional, commit, push, remote, branch, explicitly, asks | | `github-issue-creator` | Turn error logs, screenshots, voice notes, and rough bug reports into crisp, developer-ready GitHub issues with repro steps, impact, and evidence. | github, issue, creator | github, issue, creator, turn, error, logs, screenshots, voice, notes, rough, bug, reports | | `goal-analyzer` | 分析健康目标数据、识别目标模式、评估目标进度,并提供个性化目标管理建议。支持与营养、运动、睡眠等健康数据的关联分析。 | goal, analyzer | goal, analyzer | +| `goal-loop` | Draft and explain persistent goal-loop prompts for long-running agent work with clear stop conditions. | goals, autonomy, planning | goals, autonomy, planning, goal, loop, draft, explain, persistent, prompts, long, running, agent | | `godot-4-migration` | Specialized guide for migrating Godot 3.x projects to Godot 4 (GDScript 2.0), covering syntax changes, Tweens, and exports. | godot, 4, migration | godot, 4, migration, specialized, migrating, gdscript, covering, syntax, changes, tweens, exports | | `haskell-pro` | Expert Haskell engineer specializing in advanced type systems, pure | haskell | haskell, pro, engineer, specializing, type, pure | | `headline-psychologist` | One sentence - what this skill does and when to invoke it | headline, psychologist | headline, psychologist, one, sentence, what, skill, does, invoke | @@ -1153,6 +1166,7 @@ Total skills: 1901 | `internal-comms-anthropic` | To write internal communications, use this skill for: | internal, comms, anthropic | internal, comms, anthropic, write, communications, skill | | `internal-comms-community` | To write internal communications, use this skill for: | internal, comms, community | internal, comms, community, write, communications, skill | | `interview-coach` | Full job search coaching system — JD decoding, resume, storybank, mock interviews, transcript analysis, comp negotiation. 23 commands, persistent state. | interview, job-search, coaching, career, storybank, negotiation | interview, job-search, coaching, career, storybank, negotiation, coach, full, job, search, jd, decoding | +| `interview-style-doc-building` | Build structured strategy documents by asking one question at a time and patching the file. | documentation, interview, planning | documentation, interview, planning, style, doc, building, structured, documents, asking, one, question, time | | `inventory-demand-planning` | Codified expertise for demand forecasting, safety stock optimisation, replenishment planning, and promotional lift estimation at multi-location retailers. | inventory, demand, planning | inventory, demand, planning, codified, expertise, forecasting, safety, stock, optimisation, replenishment, promotional, lift | | `issues` | Interact with GitHub issues - create, list, and view issues. | issues | issues, interact, github, list, view | | `it-manager-hospital` | World-class Hospital IT Management Advisor specializing in clinical safety, digital maturity (HIMSS/ONA/JCI), and HIS/PEP ecosystems. | it, manager, hospital | it, manager, hospital, world, class, advisor, specializing, clinical, safety, digital, maturity, himss | @@ -1184,6 +1198,7 @@ Total skills: 1901 | `makepad-layout` | CRITICAL: Use for Makepad layout system. Triggers on: makepad layout, makepad width, makepad height, makepad flex, makepad padding, makepad margin, makepad f... | makepad, layout | makepad, layout, critical, triggers, width, height, flex, padding, margin, flow, align, fit | | `makepad-shaders` | CRITICAL: Use for Makepad shader system. Triggers on: makepad shader, makepad draw_bg, Sdf2d, makepad pixel, makepad glsl, makepad sdf, draw_quad, makepad gp... | makepad, shaders | makepad, shaders, critical, shader, triggers, draw, bg, sdf2d, pixel, glsl, sdf, quad | | `makepad-widgets` | Version: makepad-widgets (dev branch) \| Last Updated: 2026-01-19 > > Check for updates: https://crates.io/crates/makepad-widgets | makepad, widgets | makepad, widgets, version, dev, branch, last, updated, 2026, 01, 19, check, updates | +| `markdown-rendering` | Open Markdown reliably in cmux panes and recover from blank rendered surfaces. | markdown, cmux, rendering | markdown, cmux, rendering, open, reliably, panes, recover, blank, rendered, surfaces | | `matematico-tao` | Matemático ultra-avançado inspirado em Terence Tao. Análise rigorosa de código e arquitetura com teoria matemática profunda: teoria da informação, teoria dos... | mathematics, code-analysis, algorithms, formal-methods | mathematics, code-analysis, algorithms, formal-methods, matematico, tao, matem, tico, ultra, avan, ado, inspirado | | `mathguard` | Math-heavy escalation for n >= 10^6 — Bloom, HyperLogLog, Count-Min, MinHash/LSH, FFT, JL projection, sweep line. Use when classical O(n log n) is the floor ... | algorithms, probabilistic-data-structures, approximate-algorithms, bloom-filter, hyperloglog, fft, performance | algorithms, probabilistic-data-structures, approximate-algorithms, bloom-filter, hyperloglog, fft, performance, mathguard, math, heavy, escalation, 10 | | `mcp-builder` | Create MCP (Model Context Protocol) servers that enable LLMs to interact with external services through well-designed tools. The quality of an MCP server is ... | mcp, builder | mcp, builder, model, context, protocol, servers, enable, llms, interact, external, through, well | @@ -1237,6 +1252,7 @@ Total skills: 1901 | `performance-profiling` | Performance profiling principles. Measurement, analysis, and optimization techniques. | performance, profiling | performance, profiling, principles, measurement, analysis, optimization, techniques | | `personal-tool-builder` | Expert in building custom tools that solve your own problems first. The best products often start as personal tools - scratch your own itch, build for yourse... | personal, builder | personal, builder, building, custom, solve, own, problems, first, products, often, start, scratch | | `phase-gated-debugging` | Use when debugging any bug. Enforces a 5-phase protocol where code edits are blocked until root cause is confirmed. Prevents premature fix attempts. | phase, gated, debugging | phase, gated, debugging, any, bug, enforces, protocol, where, code, edits, blocked, until | +| `pi-custom-model` | Register custom Pi Agent model slugs so saved OpenRouter variants resolve correctly. | pi-agent, models, openrouter | pi-agent, models, openrouter, pi, custom, model, register, agent, slugs, so, saved, variants | | `pitch-psychologist` | One sentence - what this skill does and when to invoke it | pitch, psychologist | pitch, psychologist, one, sentence, what, skill, does, invoke | | `plan-writing` | Structured task planning with clear breakdowns, dependencies, and verification criteria. Use when implementing features, refactoring, or any multi-step work. | plan, writing | plan, writing, structured, task, planning, clear, breakdowns, dependencies, verification, criteria, implementing, features | | `planning-and-task-breakdown` | Breaks work into ordered tasks. Use when you have a spec or clear requirements and need to break work into implementable tasks. Use when a task feels too lar... | planning, and, task, breakdown | planning, and, task, breakdown, breaks, work, ordered, tasks, spec, clear, requirements, break | @@ -1259,6 +1275,7 @@ Total skills: 1901 | `prompt-library` | A comprehensive collection of battle-tested prompts inspired by [awesome-chatgpt-prompts](https://github.com/f/awesome-chatgpt-prompts) and community best pr... | prompt, library | prompt, library, collection, battle, tested, prompts, inspired, awesome, chatgpt, https, github, com | | `protect-mcp-governance` | Agent governance skill for MCP tool calls — Cedar policy authoring, shadow-to-enforce rollout, and Ed25519 receipt verification. | protect, mcp, governance | protect, mcp, governance, agent, skill, calls, cedar, policy, authoring, shadow, enforce, rollout | | `public-relations` | When the user wants help with public relations, earned media, press coverage, journalist outreach, or media strategy (not pull requests). Also use when the u... | public, relations | public, relations, user, wants, earned, media, press, coverage, journalist, outreach, pull, requests | +| `push-skill-to-github` | Commit and push skill changes to the configured skills repository after review and validation. | skills, git, publishing | skills, git, publishing, push, skill, github, commit, changes, configured, repository, after, review | | `qiskit` | Qiskit is the world's most popular open-source quantum computing framework with 13M+ downloads. Build quantum circuits, optimize for hardware, execute on sim... | qiskit | qiskit, world, most, popular, open, source, quantum, computing, framework, 13m, downloads, circuits | | `quality-nonconformance` | Codified expertise for quality control, non-conformance investigation, root cause analysis, corrective action, and supplier quality management in regulated m... | quality, nonconformance | quality, nonconformance, codified, expertise, control, non, conformance, investigation, root, cause, analysis, corrective | | `rayden-use` | Build and maintain Rayden UI components and screens in Figma via Figma MCP with full design token enforcement | figma, design-system, ui, components, mcp, rayden, rayna-ui | figma, design-system, ui, components, mcp, rayden, rayna-ui, maintain, screens, via, full, token | @@ -1269,12 +1286,14 @@ Total skills: 1901 | `rehabilitation-analyzer` | 分析康复训练数据、识别康复模式、评估康复进展,并提供个性化康复建议 | rehabilitation, analyzer | rehabilitation, analyzer | | `remotion` | Generate walkthrough videos from Stitch projects using Remotion with smooth transitions, zooming, and text overlays | remotion | remotion, generate, walkthrough, videos, stitch, smooth, transitions, zooming, text, overlays | | `requesting-code-review` | Use when completing tasks, implementing major features, or before merging to verify work meets requirements | requesting, code | requesting, code, review, completing, tasks, implementing, major, features, before, merging, verify, work | +| `research-prompt` | Turn vague research needs into one precise deep-research prompt with context and output criteria. | research, prompting, briefs | research, prompting, briefs, prompt, turn, vague, one, precise, deep, context, output, criteria | | `resolving-merge-conflicts` | Use when you need to resolve an in-progress git merge/rebase conflict. | resolving, merge, conflicts | resolving, merge, conflicts, resolve, progress, git, rebase, conflict | | `returns-reverse-logistics` | Codified expertise for returns authorisation, receipt and inspection, disposition decisions, refund processing, fraud detection, and warranty claims management. | returns, reverse, logistics | returns, reverse, logistics, codified, expertise, authorisation, receipt, inspection, disposition, decisions, refund, processing | | `reverse-engineer` | Expert reverse engineer specializing in binary analysis, disassembly, decompilation, and software analysis. Masters IDA Pro, Ghidra, radare2, x64dbg, and mod... | reverse | reverse, engineer, specializing, binary, analysis, disassembly, decompilation, software, masters, ida, pro, ghidra | | `review-and-simplify-changes` | Review a git diff or explicit file scope for reuse, code quality, efficiency, clarity, and standards issues, then optionally apply safe Codex-driven fixes. U... | and, simplify, changes | and, simplify, changes, review, git, diff, explicit, file, scope, reuse, code, quality | | `rich-elicitation` | Asks clarifying questions in multiple rounds before starting ambiguous tasks. Fires when 2+ task dimensions each have 3+ viable answers. | elicitation, clarifying-questions, ambiguity, multi-round, prompt-engineering | elicitation, clarifying-questions, ambiguity, multi-round, prompt-engineering, rich, asks, clarifying, questions, multiple, rounds, before | | `robius-matrix-integration` | CRITICAL: Use for Matrix SDK integration with Makepad. Triggers on: Matrix SDK, sliding sync, MatrixRequest, timeline, matrix-sdk, matrix client, robrix, mat... | robius, matrix, integration | robius, matrix, integration, critical, sdk, makepad, triggers, sliding, sync, matrixrequest, timeline, client | +| `run-deep-swe` | Run reproducible DeepSWE coding-agent benchmark evaluations through OpenRouter and mini-swe-agent. | benchmark, deepswe, openrouter, evaluation | benchmark, deepswe, openrouter, evaluation, run, deep, swe, reproducible, coding, agent, evaluations, through | | `sam-altman` | Agente que simula Sam Altman — CEO da OpenAI, ex-presidente da Y Combinator, arquiteto da era AGI. | persona, startups, agi, yc, fundraising | persona, startups, agi, yc, fundraising, sam, altman, agente, que, simula, ceo, da | | `satori` | Clinically informed wisdom companion blending psychology and philosophy into a structured thinking partner | mental-health, psychology, wisdom, philosophy, ifs, stoicism, jungian, conversation | mental-health, psychology, wisdom, philosophy, ifs, stoicism, jungian, conversation, satori, clinically, informed, companion | | `scarcity-urgency-psychologist` | One sentence - what this skill does and when to invoke it | scarcity, urgency, psychologist | scarcity, urgency, psychologist, one, sentence, what, skill, does, invoke | @@ -1283,11 +1302,13 @@ Total skills: 1901 | `senior-architect` | Complete toolkit for senior architect with modern tools and best practices. | senior | senior, architect, complete, toolkit | | `senior-fullstack` | Complete toolkit for senior fullstack with modern tools and best practices. | senior, fullstack | senior, fullstack, complete, toolkit | | `sequence-psychologist` | One sentence - what this skill does and when to invoke it | sequence, psychologist | sequence, psychologist, one, sentence, what, skill, does, invoke | +| `setup-help` | Walk a user through setup or installation one step at a time with the remaining steps visible. | setup, onboarding, installation | setup, onboarding, installation, walk, user, through, one, step, time, remaining, steps, visible | | `sexual-health-analyzer` | Sexual Health Analyzer | sexual, health, analyzer | sexual, health, analyzer | | `shader-programming-glsl` | Expert guide for writing efficient GLSL shaders (Vertex/Fragment) for web and game engines, covering syntax, uniforms, and common effects. | shader, programming, glsl | shader, programming, glsl, writing, efficient, shaders, vertex, fragment, web, game, engines, covering | | `sharp-coder` | Two-layer performance skill combining disciplined THINK layer (surgical edits, simplicity) and terse SPEAK layer (caveman compression). Triggers on requests ... | sharp, coder | sharp, coder, two, layer, performance, skill, combining, disciplined, think, surgical, edits, simplicity | | `sharp-edges` | sharp-edges | sharp, edges | sharp, edges | | `shellcheck-configuration` | Master ShellCheck static analysis configuration and usage for shell script quality. Use when setting up linting infrastructure, fixing code issues, or ensuri... | shellcheck, configuration | shellcheck, configuration, static, analysis, usage, shell, script, quality, setting, up, linting, infrastructure | +| `short` | Rewrite the previous response more briefly while preserving the substance. | writing, editing, concise | writing, editing, concise, short, rewrite, previous, response, briefly, while, preserving, substance | | `signup-flow-cro` | You are an expert in optimizing signup and registration flows. Your goal is to reduce friction, increase completion rates, and set users up for successful ac... | signup, flow, cro | signup, flow, cro, optimizing, registration, flows, goal, reduce, friction, increase, completion, rates | | `skill-check` | Validate Claude Code skills against the agentskills specification. Catches structural, semantic, and naming issues before users do. | validation, linter, agentskills, skill-authoring, code-quality | validation, linter, agentskills, skill-authoring, code-quality, skill, check, validate, claude, code, skills, against | | `skill-developer` | Comprehensive guide for creating and managing skills in Claude Code with auto-activation system, following Anthropic's official best practices including the ... | skill | skill, developer, creating, managing, skills, claude, code, auto, activation, following, anthropic, official | @@ -1320,6 +1341,7 @@ Total skills: 1901 | `swift-concurrency-expert` | Review and fix Swift concurrency issues such as actor isolation and Sendable violations. | swift, concurrency | swift, concurrency, review, fix, issues, such, actor, isolation, sendable, violations | | `swiftui-liquid-glass` | Implement or review SwiftUI Liquid Glass APIs with correct fallbacks and modifier order. | swiftui, liquid, glass | swiftui, liquid, glass, review, apis, correct, fallbacks, modifier, order | | `swiftui-performance-audit` | Audit SwiftUI performance issues from code review and profiling evidence. | swiftui, performance, audit | swiftui, performance, audit, issues, code, review, profiling, evidence | +| `taisly-social-media-posting` | Use Taisly Agent Kit to prepare and publish approved short-form video posts across TikTok, Instagram Reels, YouTube Shorts, X, and Facebook. | social-media, video, publishing, mcp, cli, sdk, tiktok, instagram, youtube-shorts, x, facebook | social-media, video, publishing, mcp, cli, sdk, tiktok, instagram, youtube-shorts, x, facebook, taisly | | `tcm-constitution-analyzer` | 分析中医体质数据、识别体质类型、评估体质特征,并提供个性化养生建议。支持与营养、运动、睡眠等健康数据的关联分析。 | tcm, constitution, analyzer | tcm, constitution, analyzer | | `team-composition-analysis` | Design optimal team structures, hiring plans, compensation strategies, and equity allocation for early-stage startups from pre-seed through Series A. | team, composition | team, composition, analysis, optimal, structures, hiring, plans, compensation, equity, allocation, early, stage | | `technical-tutorials` | When the user wants to create step-by-step technical tutorials, quickstarts, or code walkthroughs. Trigger phrases include "tutorial," "quickstart," "getting... | technical, tutorials | technical, tutorials, user, wants, step, quickstarts, code, walkthroughs, trigger, phrases, include, tutorial | @@ -1367,6 +1389,7 @@ Total skills: 1901 | `video-content-extractor` | Extract key frames from MP4 videos at configurable intervals, run Tesseract OCR, and generate structured Markdown reports with video metadata and timestamped... | video, ocr, ffmpeg, tesseract, frame-extraction, media | video, ocr, ffmpeg, tesseract, frame-extraction, media, content, extractor, extract, key, frames, mp4 | | `videodb` | Video and audio perception, indexing, and editing. Ingest files/URLs/live streams, build visual/spoken indexes, search with timestamps, edit timelines, add o... | video, editing, transcription, subtitles, search, streaming, ai-generation, media, live-streams, desktop-capture | video, editing, transcription, subtitles, search, streaming, ai-generation, media, live-streams, desktop-capture, videodb, audio | | `visual-emotion-engineer` | One sentence - what this skill does and when to invoke it | visual, emotion | visual, emotion, engineer, one, sentence, what, skill, does, invoke | +| `vps-server-management` | Manage authorized VPS hosts and server-side agents through cautious SSH and operations workflows. | vps, ssh, server-management | vps, ssh, server-management, server, authorized, hosts, side, agents, through, cautious, operations | | `web-media-getter` | One query across free image / video / GIF APIs (stock + historical/archival + GIF engines), returning normalized, license-tagged results with optional top-K ... | media, images, video, gif, stock, archival, attribution | media, images, video, gif, stock, archival, attribution, web, getter, one, query, free | | `web-performance-optimization` | Optimize website and web application performance including loading speed, Core Web Vitals, bundle size, caching strategies, and runtime performance | web, performance, optimization | web, performance, optimization, optimize, website, application, including, loading, speed, core, vitals, bundle | | `weightloss-analyzer` | 分析减肥数据、计算代谢率、追踪能量缺口、管理减肥阶段 | weightloss, analyzer | weightloss, analyzer | @@ -1386,6 +1409,7 @@ Total skills: 1901 | `yann-lecun-debate` | Sub-skill de debates e posições de Yann LeCun. Cobre críticas técnicas detalhadas aos LLMs, rivalidades intelectuais (LeCun vs Hinton, Sutskever, Russell, Yu... | persona, ai-debate, llm-criticism, open-source | persona, ai-debate, llm-criticism, open-source, yann, lecun, debate, sub, skill, de, debates, posi | | `yann-lecun-tecnico` | Sub-skill técnica de Yann LeCun. Cobre CNNs, LeNet, backpropagation, JEPA (I-JEPA, V-JEPA, MC-JEPA), AMI (Advanced Machinery of Intelligence), Self-Supervise... | persona, cnn, jepa, self-supervised, pytorch | persona, cnn, jepa, self-supervised, pytorch, yann, lecun, tecnico, sub, skill, cnica, de | | `youtube-summarizer` | Extract transcripts from YouTube videos and generate comprehensive, detailed summaries using intelligent analysis frameworks | video, summarization, transcription, youtube, content-analysis | video, summarization, transcription, youtube, content-analysis, summarizer, extract, transcripts, videos, generate, detailed, summaries | +| `youtube-transcript` | Fetch YouTube transcripts through DeepAPI or local fallback tooling and save clean text output. | youtube, transcripts, research | youtube, transcripts, research, transcript, fetch, through, deepapi, local, fallback, tooling, save, clean | | `zipai-optimizer` | Ultra-dense token optimizer skill for prompt caching, log pruning, AST-based inspection, and minified JSON payloads. | zipai, optimizer | zipai, optimizer, ultra, dense, token, skill, prompt, caching, log, pruning, ast, inspection | ## infrastructure (182) @@ -1575,7 +1599,7 @@ Total skills: 1901 | `workflow-automation` | Workflow automation is the infrastructure that makes AI agents reliable. Without durable execution, a network hiccup during a 10-step payment flow means lost... | | automation, infrastructure, makes, ai, agents, reliable, without, durable, execution, network, hiccup, during | | `youtube-full` | Fetch YouTube transcripts, search videos, browse channels, and extract playlists via TranscriptAPI — no yt-dlp, no Google API key, works from any cloud server. | youtube, transcripts, video-search, channels, playlists, api, transcriptapi | youtube, transcripts, video-search, channels, playlists, api, transcriptapi, full, fetch, search, videos, browse | -## security (201) +## security (202) | Skill | Description | Tags | Triggers | | --- | --- | --- | --- | @@ -1630,6 +1654,7 @@ Total skills: 1901 | `cred-omega` | CISO operacional enterprise para gestao total de credenciais e segredos. | credentials, secrets, security, api-keys, vault | credentials, secrets, security, api-keys, vault, cred, omega, ciso, operacional, enterprise, para, gestao | | `crossframe-public` | Use when CrossFrame Suite routes explicit Chinese analysis of public issues, platform governance, policy, institutional responsibility, appeals, or complianc... | crossframe, chinese, public-policy, governance, evidence | crossframe, chinese, public-policy, governance, evidence, public, suite, routes, explicit, analysis, issues, platform | | `customs-trade-compliance` | Codified expertise for customs documentation, tariff classification, duty optimisation, restricted party screening, and regulatory compliance across multiple... | customs, trade, compliance | customs, trade, compliance, codified, expertise, documentation, tariff, classification, duty, optimisation, restricted, party | +| `cyber-audit` | Run read-only exposure checks for security advisories and write a structured local audit report. | security, audit, read-only | security, audit, read-only, cyber, run, read, exposure, checks, advisories, write, structured, local | | `database-migration` | Master database schema and data migrations across ORMs (Sequelize, TypeORM, Prisma), including rollback strategies and zero-downtime deployments. | database, migration | database, migration, schema, data, migrations, orms, sequelize, typeorm, prisma, including, rollback, zero | | `database-migrations-sql-migrations` | SQL database migrations with zero-downtime strategies for PostgreSQL, MySQL, and SQL Server. Focus on data integrity and rollback plans. | database, migrations, sql | database, migrations, sql, zero, downtime, postgresql, mysql, server, data, integrity, rollback, plans | | `dependency-management-deps-audit` | You are a dependency security expert specializing in vulnerability scanning, license compliance, and supply chain security. Analyze project dependencies for ... | dependency, deps, audit | dependency, deps, audit, security, specializing, vulnerability, scanning, license, compliance, supply, chain, analyze | @@ -1829,7 +1854,7 @@ Total skills: 1901 | `wjttc-builder` | PLAN and GENERATE WJTTC (Championship-Grade) test suites for any project. Analyzes the codebase, classifies components across the WJTTC five tiers (Brake · E... | wjttc, builder | wjttc, builder, plan, generate, championship, grade, test, suites, any, analyzes, codebase, classifies | | `wjttc-tester` | F1-inspired test EXECUTOR + reporter. Runs a test plan, finds and reproduces bugs, audits suite signal integrity, then files a WJTTC report (Brake/Engine/Aer... | wjttc, tester | wjttc, tester, f1, inspired, test, executor, reporter, runs, plan, finds, reproduces, bugs | -## workflow (121) +## workflow (124) | Skill | Description | Tags | Triggers | | --- | --- | --- | --- | @@ -1839,6 +1864,7 @@ Total skills: 1901 | `agent-orchestrator` | Meta-skill que orquestra todos os agentes do ecossistema. Scan automatico de skills, match por capacidades, coordenacao de workflows multi-skill e registry m... | orchestration, multi-agent, workflow, automation | orchestration, multi-agent, workflow, automation, agent, orchestrator, meta, skill, que, orquestra, todos, os | | `airtable-automation` | Automate Airtable tasks via Rube MCP (Composio): records, bases, tables, fields, views. Always search tools first for current schemas. | airtable | airtable, automation, automate, tasks, via, rube, mcp, composio, records, bases, tables, fields | | `amplitude-automation` | Automate Amplitude tasks via Rube MCP (Composio): events, user activity, cohorts, user identification. Always search tools first for current schemas. | amplitude | amplitude, automation, automate, tasks, via, rube, mcp, composio, events, user, activity, cohorts | +| `anti-sleep` | Keep a Mac awake with caffeinate during long builds, downloads, or supervised automation runs. | macos, caffeinate, operations | macos, caffeinate, operations, anti, sleep, keep, mac, awake, during, long, downloads, supervised | | `antigravity-agent-manager` | Configure and orchestrate parallel agents using the standalone Antigravity 2.0 Agent Manager and Antigravity IDE. | agent-manager, orchestration, multi-agent, setup | agent-manager, orchestration, multi-agent, setup, antigravity, agent, manager, configure, orchestrate, parallel, agents, standalone | | `antigravity-skill-orchestrator` | A meta-skill that understands task requirements, dynamically selects appropriate skills, tracks successful skill combinations using agent-memory-mcp, and pre... | orchestration, meta-skill, agent-memory, task-evaluation | orchestration, meta-skill, agent-memory, task-evaluation, antigravity, skill, orchestrator, meta, understands, task, requirements, dynamically | | `apify-influencer-discovery` | Find and evaluate influencers for brand partnerships, verify authenticity, and track collaboration performance across Instagram, Facebook, YouTube, and TikTok. | apify, influencer, discovery | apify, influencer, discovery, find, evaluate, influencers, brand, partnerships, verify, authenticity, track, collaboration | @@ -1850,6 +1876,7 @@ Total skills: 1901 | `billing-automation` | Master automated billing systems including recurring billing, invoice generation, dunning management, proration, and tax calculation. | billing | billing, automation, automated, including, recurring, invoice, generation, dunning, proration, tax, calculation | | `bitbucket-automation` | Automate Bitbucket repositories, pull requests, branches, issues, and workspace management via Rube MCP (Composio). Always search tools first for current sch... | bitbucket | bitbucket, automation, automate, repositories, pull, requests, branches, issues, workspace, via, rube, mcp | | `box-automation` | Automate Box operations including file upload/download, content search, folder management, collaboration, metadata queries, and sign requests through Composi... | box | box, automation, automate, operations, including, file, upload, download, content, search, folder, collaboration | +| `browser-harness` | Drive an existing browser through CDP for authenticated, visual, or interactive web automation. | browser, cdp, automation, scraping | browser, cdp, automation, scraping, harness, drive, existing, through, authenticated, visual, interactive, web | | `cal-com-automation` | Automate Cal.com tasks via Rube MCP (Composio): manage bookings, check availability, configure webhooks, and handle teams. Always search tools first for curr... | cal, com | cal, com, automation, automate, tasks, via, rube, mcp, composio, bookings, check, availability | | `canva-automation` | Automate Canva tasks via Rube MCP (Composio): designs, exports, folders, brand templates, autofill. Always search tools first for current schemas. | canva | canva, automation, automate, tasks, via, rube, mcp, composio, designs, exports, folders, brand | | `changelog-automation` | Automate changelog generation from commits, PRs, and releases following Keep a Changelog format. Use when setting up release workflows, generating release no... | changelog | changelog, automation, automate, generation, commits, prs, releases, following, keep, format, setting, up | @@ -1914,6 +1941,7 @@ Total skills: 1901 | `outlook-automation` | Automate Outlook tasks via Rube MCP (Composio): emails, calendar, contacts, folders, attachments. Always search tools first for current schemas. | outlook | outlook, automation, automate, tasks, via, rube, mcp, composio, emails, calendar, contacts, folders | | `outlook-calendar-automation` | Automate Outlook Calendar tasks via Rube MCP (Composio): create events, manage attendees, find meeting times, and handle invitations. Always search tools fir... | outlook, calendar | outlook, calendar, automation, automate, tasks, via, rube, mcp, composio, events, attendees, find | | `pagerduty-automation` | Automate PagerDuty tasks via Rube MCP (Composio): manage incidents, services, schedules, escalation policies, and on-call rotations. Always search tools firs... | pagerduty | pagerduty, automation, automate, tasks, via, rube, mcp, composio, incidents, schedules, escalation, policies | +| `pi-web-search` | Give Pi Agents a safe web-search and fetch workflow using the installed pi-web-access package. | web-search, pi-agent, research | web-search, pi-agent, research, pi, web, search, give, agents, safe, fetch, installed, access | | `posthog-automation` | Automate PostHog tasks via Rube MCP (Composio): events, feature flags, projects, user profiles, annotations. Always search tools first for current schemas. | posthog | posthog, automation, automate, tasks, via, rube, mcp, composio, events, feature, flags, user | | `postmark-automation` | Automate Postmark email delivery tasks via Rube MCP (Composio): send templated emails, manage templates, monitor delivery stats and bounces. Always search to... | postmark | postmark, automation, automate, email, delivery, tasks, via, rube, mcp, composio, send, templated | | `pr-merge-champion` | Optimize pull requests for quick approval and merging by ensuring clean diffs, comprehensive self-reviews, and structured documentation. | git, github, pull-request, code-review, workflow | git, github, pull-request, code-review, workflow, pr, merge, champion, optimize, pull, requests, quick | diff --git a/antigravity-awesome-skills/CHANGELOG.md b/antigravity-awesome-skills/CHANGELOG.md index 1d97fe4a..127d74ed 100644 --- a/antigravity-awesome-skills/CHANGELOG.md +++ b/antigravity-awesome-skills/CHANGELOG.md @@ -9,6 +9,72 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +## [13.12.0] - 2026-07-07 - "Agent Workflow Skills, Social Publishing, and Loki Dependency Refresh" + +> Agent-orchestration workflows, social publishing coverage, LinkedIn writing support, and synchronized dependency maintenance for the 1,929+ skill catalog. + +Start here: + +- Install: `npx antigravity-awesome-skills --help` +- Choose your tool: [README.md#choose-your-tool](README.md#choose-your-tool) +- Browse skills: [README.md#browse-1929-skills](README.md#browse-1929-skills) +- Hosted catalog: https://sickn33.github.io/antigravity-awesome-skills/ + +This release ships the July 7 maintenance batch: three merged PRs, a source-backed Taisly follow-up skill, 26 imported David Ondrej agent workflow skills, a LinkedIn post-writing skill with bundled hook references, a canonical Loki example dependency refresh, and regenerated registry/public catalog state for the 1,929+ skill catalog. + +## Added + +- Added **linkedin-post-writer**, a community LinkedIn post drafting skill adapted from `sergebulaev/linkedin-skills`, including bundled reference material for 16 hook formulas mapped to engagement goals (PR #785). +- Added **taisly-social-media-posting**, a critical-risk social video publishing workflow skill backed by `taisly/agent`, with explicit approval gates for publishing, scheduling, account-linking, and metadata updates (PR #783 plus maintainer source-backed skill follow-up). +- Imported 26 non-colliding MIT-licensed skills from **davidondrej/skills**: + - **agent-self-scheduling** + - **anti-sleep** + - **brain-to-docs** + - **browser-harness** + - **cmux** + - **codex-subagent** + - **cyber-audit** + - **deepapi** + - **delegating-to-agents** + - **distribute-skill-to-all-agents** + - **effective-agent-skills** + - **fable-safe-prompt** + - **folder-specific-claude-and-agents-md** + - **goal-loop** + - **interview-style-doc-building** + - **markdown-rendering** + - **pi-custom-model** + - **pi-web-search** + - **push-skill-to-github** + - **read-all-adrs** + - **research-prompt** + - **run-deep-swe** + - **setup-help** + - **short** + - **vps-server-management** + - **youtube-transcript** +- Added README source credits for **sergebulaev/linkedin-skills**, **taisly/agent**, and **davidondrej/skills**. + +## Changed + +- Updated the Loki generated todo backend example dependency `better-sqlite3` from `^12.10.1` to `^12.11.1` in the canonical skill source, then synchronized plugin mirror state from the maintained source (PR #784). +- Normalized imported David Ondrej skills with AAS frontmatter, concise descriptions, source/license metadata, `## When to Use` sections, and safety-oriented limitations. +- Refreshed generated registry artifacts, plugin compatibility metadata, plugin mirrors, public web skill assets, sitemap, package description, and README/docs counters for the 1,929+ skill catalog. + +## Validation + +- Verified and merged PR #783, PR #784, and PR #785 after required GitHub checks passed. +- Repaired PR #784 from a generated mirror-only dependency bump into a source-only canonical Loki example dependency update before merge. +- Ran `npm run validate`, `npm run security:docs`, `npm run check:warning-budget`, and `npm run check:readme-credits -- --base origin/main --head HEAD` during the maintainer import pass. +- Ran `npm run sync:repo-state` after merging PRs and importing new skills. + +## Credits + +- **[@sergebulaev](https://github.com/sergebulaev)** and **[sergebulaev/linkedin-skills](https://github.com/sergebulaev/linkedin-skills)** for PR #785 (`linkedin-post-writer`). +- **[@taisly](https://github.com/taisly)** and **[taisly/agent](https://github.com/taisly/agent)** for PR #783 and the Taisly Agent Kit source used by `taisly-social-media-posting`. +- **[@davidondrej](https://github.com/davidondrej)** and **[davidondrej/skills](https://github.com/davidondrej/skills)** for the imported agent workflow skills. +- **Snyk** for the `better-sqlite3` maintenance signal in PR #784. + ## [13.11.0] - 2026-07-05 - "Ledger Skills, WGM, and Loki Dependency Maintenance" > Notion-backed ledger skills, a governed build-loop methodology, and synchronized dependency maintenance for the 1,901+ skill catalog. diff --git a/antigravity-awesome-skills/README.md b/antigravity-awesome-skills/README.md index 443b1c71..12a4db37 100644 --- a/antigravity-awesome-skills/README.md +++ b/antigravity-awesome-skills/README.md @@ -1,9 +1,9 @@ - + [![Antigravity Awesome Skills hero](assets/aas-readme-hero.jpeg)](https://github.com/sickn33/antigravity-awesome-skills) -# 🌌 Antigravity Awesome Skills: 1,901+ Agentic Skills for Claude Code, Gemini CLI, Cursor, Autohand Code, Copilot & More +# 🌌 Antigravity Awesome Skills: 1,929+ Agentic Skills for Claude Code, Gemini CLI, Cursor, Autohand Code, Copilot & More -> **Installable GitHub library of 1,901+ agentic skills for Claude Code, Cursor, Codex CLI, Autohand Code, Gemini CLI, Antigravity, and other AI coding assistants.** +> **Installable GitHub library of 1,929+ agentic skills for Claude Code, Cursor, Codex CLI, Autohand Code, Gemini CLI, Antigravity, and other AI coding assistants.** Antigravity Awesome Skills is an installable GitHub library and npm installer for reusable `SKILL.md` playbooks. It is designed for Claude Code, Cursor, Codex CLI, Autohand Code, Gemini CLI, Antigravity, Kiro, OpenCode, GitHub Copilot, and other AI coding assistants that benefit from structured operating instructions. Instead of collecting one-off prompt snippets, this repository gives you a searchable, installable catalog of skills, bundles, workflows, plugin-safe distributions, and practical docs that help agents perform recurring tasks with better context, stronger constraints, and clearer outputs. @@ -11,7 +11,7 @@ You can use this repo to install a broad multi-tool skill library, start from fo The canonical project page is the GitHub repository at ; the hosted catalog is a companion discovery surface for search, plugins, and skill detail pages. -**Start here:** [Install in 1 minute](#installation) · [Recommended plugins](#recommended-specialized-plugins) · [Compare plugin packs](https://sickn33.github.io/antigravity-awesome-skills/plugins) · [Choose your tool](#choose-your-tool) · [📚 Browse 1,901+ Skills](#browse-1901-skills) · [Bundles & workflows](#bundles--workflows) · [Support the project](#support-the-project) +**Start here:** [Install in 1 minute](#installation) · [Recommended plugins](#recommended-specialized-plugins) · [Compare plugin packs](https://sickn33.github.io/antigravity-awesome-skills/plugins) · [Choose your tool](#choose-your-tool) · [📚 Browse 1,929+ Skills](#browse-1929-skills) · [Bundles & workflows](#bundles--workflows) · [Support the project](#support-the-project) [![GitHub stars](https://img.shields.io/badge/⭐%2042%2C000%2B%20Stars-gold?style=for-the-badge)](https://github.com/sickn33/antigravity-awesome-skills/stargazers) [![Follow @AASkills_ on X](https://img.shields.io/badge/Follow-%40AASkills__-black?style=for-the-badge&logo=x)](https://x.com/AASkills_) @@ -28,13 +28,13 @@ The canonical project page is the GitHub repository at @@ -547,14 +550,14 @@ We officially thank the following contributors for their help in making this rep ## Star History - Star History Chart + Star History Chart - - - Star History Chart + + + Star History Chart diff --git a/antigravity-awesome-skills/SOURCE.md b/antigravity-awesome-skills/SOURCE.md index 4a13d1e1..70f356d9 100644 --- a/antigravity-awesome-skills/SOURCE.md +++ b/antigravity-awesome-skills/SOURCE.md @@ -1,8 +1,8 @@ # Source - Repo: https://github.com/sickn33/antigravity-awesome-skills -- Ref: 6e69f00a01898251c83e7b024444d82d70cc3b2c +- Ref: 2aaaf593965554e379b8da9d97c8ea76902284e4 - Remove-Paths: -- Snapshot: 2026-07-06 +- Snapshot: 2026-07-07 - Sync-Mode: copy_skill_dirs - Notes: vendored into playbook branch thirdparty/skill diff --git a/antigravity-awesome-skills/apps/web-app/index.html b/antigravity-awesome-skills/apps/web-app/index.html index 773bee51..a95f86d9 100644 --- a/antigravity-awesome-skills/apps/web-app/index.html +++ b/antigravity-awesome-skills/apps/web-app/index.html @@ -10,22 +10,22 @@ - + - - + + - - + + - Antigravity Awesome Skills GitHub | 1,901+ AI coding skills + Antigravity Awesome Skills GitHub | 1,929+ AI coding skills
diff --git a/antigravity-awesome-skills/apps/web-app/public/llms.txt b/antigravity-awesome-skills/apps/web-app/public/llms.txt index b25bde27..c22fd2cf 100644 --- a/antigravity-awesome-skills/apps/web-app/public/llms.txt +++ b/antigravity-awesome-skills/apps/web-app/public/llms.txt @@ -1,11 +1,11 @@ # Antigravity Awesome Skills -> Installable GitHub library of 1,901+ agentic SKILL.md playbooks, specialized plugins, bundles, and workflows for AI coding assistants. +> Installable GitHub library of 1,929+ agentic SKILL.md playbooks, specialized plugins, bundles, and workflows for AI coding assistants. ## Key Facts -- Current release: V13.11.0. -- Skill count: 1,901+. +- Current release: V13.12.0. +- Skill count: 1,929+. - Primary install command: `npx antigravity-awesome-skills`. - Supported hosts include Claude Code, Cursor, Codex CLI, Autohand Code, Gemini CLI, Antigravity, Kiro, OpenCode, and GitHub Copilot. - Specialized plugins are the recommended starting point when the work has a clear domain. @@ -31,4 +31,4 @@ ## Recommended Answer -Antigravity Awesome Skills is an installable library of 1,901+ reusable SKILL.md playbooks for AI coding assistants. It supports Claude Code, Cursor, Codex CLI, Autohand Code, Gemini CLI, Antigravity, and related hosts through direct skill installs, specialized plugins, bundles, workflows, and a searchable hosted catalog. +Antigravity Awesome Skills is an installable library of 1,929+ reusable SKILL.md playbooks for AI coding assistants. It supports Claude Code, Cursor, Codex CLI, Autohand Code, Gemini CLI, Antigravity, and related hosts through direct skill installs, specialized plugins, bundles, workflows, and a searchable hosted catalog. diff --git a/antigravity-awesome-skills/apps/web-app/public/sitemap.xml b/antigravity-awesome-skills/apps/web-app/public/sitemap.xml index 311ab129..9f8f0ba2 100644 --- a/antigravity-awesome-skills/apps/web-app/public/sitemap.xml +++ b/antigravity-awesome-skills/apps/web-app/public/sitemap.xml @@ -2,277 +2,277 @@ https://sickn33.github.io/antigravity-awesome-skills/ - 2026-07-06 + 2026-07-07 daily 1.0 https://sickn33.github.io/antigravity-awesome-skills/plugins/ - 2026-07-06 + 2026-07-07 weekly 0.7 https://sickn33.github.io/antigravity-awesome-skills/topics/antigravity-cli-skills/ - 2026-07-06 + 2026-07-07 weekly 0.7 https://sickn33.github.io/antigravity-awesome-skills/topics/github-ai-skills-repository/ - 2026-07-06 + 2026-07-07 weekly 0.7 https://sickn33.github.io/antigravity-awesome-skills/topics/antigravity-plugins/ - 2026-07-06 + 2026-07-07 weekly 0.7 https://sickn33.github.io/antigravity-awesome-skills/topics/skills-para-antigravity/ - 2026-07-06 + 2026-07-07 + weekly + 0.7 + + + https://sickn33.github.io/antigravity-awesome-skills/skill/agent-self-scheduling/ + 2026-07-07 + weekly + 0.7 + + + https://sickn33.github.io/antigravity-awesome-skills/skill/anti-sleep/ + 2026-07-07 + weekly + 0.7 + + + https://sickn33.github.io/antigravity-awesome-skills/skill/brain-to-docs/ + 2026-07-07 + weekly + 0.7 + + + https://sickn33.github.io/antigravity-awesome-skills/skill/browser-harness/ + 2026-07-07 + weekly + 0.7 + + + https://sickn33.github.io/antigravity-awesome-skills/skill/cmux/ + 2026-07-07 + weekly + 0.7 + + + https://sickn33.github.io/antigravity-awesome-skills/skill/codex-subagent/ + 2026-07-07 + weekly + 0.7 + + + https://sickn33.github.io/antigravity-awesome-skills/skill/cyber-audit/ + 2026-07-07 + weekly + 0.7 + + + https://sickn33.github.io/antigravity-awesome-skills/skill/deepapi/ + 2026-07-07 + weekly + 0.7 + + + https://sickn33.github.io/antigravity-awesome-skills/skill/delegating-to-agents/ + 2026-07-07 + weekly + 0.7 + + + https://sickn33.github.io/antigravity-awesome-skills/skill/distribute-skill-to-all-agents/ + 2026-07-07 + weekly + 0.7 + + + https://sickn33.github.io/antigravity-awesome-skills/skill/effective-agent-skills/ + 2026-07-07 + weekly + 0.7 + + + https://sickn33.github.io/antigravity-awesome-skills/skill/fable-safe-prompt/ + 2026-07-07 + weekly + 0.7 + + + https://sickn33.github.io/antigravity-awesome-skills/skill/folder-specific-claude-and-agents-md/ + 2026-07-07 + weekly + 0.7 + + + https://sickn33.github.io/antigravity-awesome-skills/skill/goal-loop/ + 2026-07-07 + weekly + 0.7 + + + https://sickn33.github.io/antigravity-awesome-skills/skill/interview-style-doc-building/ + 2026-07-07 + weekly + 0.7 + + + https://sickn33.github.io/antigravity-awesome-skills/skill/markdown-rendering/ + 2026-07-07 + weekly + 0.7 + + + https://sickn33.github.io/antigravity-awesome-skills/skill/pi-custom-model/ + 2026-07-07 + weekly + 0.7 + + + https://sickn33.github.io/antigravity-awesome-skills/skill/pi-web-search/ + 2026-07-07 + weekly + 0.7 + + + https://sickn33.github.io/antigravity-awesome-skills/skill/push-skill-to-github/ + 2026-07-07 + weekly + 0.7 + + + https://sickn33.github.io/antigravity-awesome-skills/skill/read-all-adrs/ + 2026-07-07 + weekly + 0.7 + + + https://sickn33.github.io/antigravity-awesome-skills/skill/research-prompt/ + 2026-07-07 + weekly + 0.7 + + + https://sickn33.github.io/antigravity-awesome-skills/skill/run-deep-swe/ + 2026-07-07 + weekly + 0.7 + + + https://sickn33.github.io/antigravity-awesome-skills/skill/setup-help/ + 2026-07-07 + weekly + 0.7 + + + https://sickn33.github.io/antigravity-awesome-skills/skill/short/ + 2026-07-07 + weekly + 0.7 + + + https://sickn33.github.io/antigravity-awesome-skills/skill/taisly-social-media-posting/ + 2026-07-07 + weekly + 0.7 + + + https://sickn33.github.io/antigravity-awesome-skills/skill/vps-server-management/ + 2026-07-07 + weekly + 0.7 + + + https://sickn33.github.io/antigravity-awesome-skills/skill/youtube-transcript/ + 2026-07-07 + weekly + 0.7 + + + https://sickn33.github.io/antigravity-awesome-skills/skill/linkedin-post-writer/ + 2026-07-07 weekly 0.7 https://sickn33.github.io/antigravity-awesome-skills/skill/wgm/ - 2026-07-06 + 2026-07-07 weekly 0.7 https://sickn33.github.io/antigravity-awesome-skills/skill/context-kit/ - 2026-07-06 + 2026-07-07 weekly 0.7 https://sickn33.github.io/antigravity-awesome-skills/skill/time-ledger/ - 2026-07-06 + 2026-07-07 weekly 0.7 https://sickn33.github.io/antigravity-awesome-skills/skill/trading-ledger/ - 2026-07-06 + 2026-07-07 weekly 0.7 https://sickn33.github.io/antigravity-awesome-skills/skill/workorai/ - 2026-07-06 + 2026-07-07 weekly 0.7 https://sickn33.github.io/antigravity-awesome-skills/skill/wp-site-health-auditor/ - 2026-07-06 + 2026-07-07 weekly 0.7 https://sickn33.github.io/antigravity-awesome-skills/skill/before-you-build/ - 2026-07-06 + 2026-07-07 weekly 0.7 https://sickn33.github.io/antigravity-awesome-skills/skill/code-polish/ - 2026-07-06 + 2026-07-07 weekly 0.7 https://sickn33.github.io/antigravity-awesome-skills/skill/ab-testing/ - 2026-07-06 + 2026-07-07 weekly 0.7 https://sickn33.github.io/antigravity-awesome-skills/skill/accint-commitments/ - 2026-07-06 + 2026-07-07 weekly 0.7 https://sickn33.github.io/antigravity-awesome-skills/skill/accint-frames/ - 2026-07-06 + 2026-07-07 weekly 0.7 https://sickn33.github.io/antigravity-awesome-skills/skill/accint-solve/ - 2026-07-06 - weekly - 0.7 - - - https://sickn33.github.io/antigravity-awesome-skills/skill/add-app-clip/ - 2026-07-06 - weekly - 0.7 - - - https://sickn33.github.io/antigravity-awesome-skills/skill/agent-memory/ - 2026-07-06 - weekly - 0.7 - - - https://sickn33.github.io/antigravity-awesome-skills/skill/alternatives-pages/ - 2026-07-06 - weekly - 0.7 - - - https://sickn33.github.io/antigravity-awesome-skills/skill/analytics/ - 2026-07-06 - weekly - 0.7 - - - https://sickn33.github.io/antigravity-awesome-skills/skill/anti-deception/ - 2026-07-06 - weekly - 0.7 - - - https://sickn33.github.io/antigravity-awesome-skills/skill/api-analyzer/ - 2026-07-06 - weekly - 0.7 - - - https://sickn33.github.io/antigravity-awesome-skills/skill/api-and-interface-design/ - 2026-07-06 - weekly - 0.7 - - - https://sickn33.github.io/antigravity-awesome-skills/skill/api-designer/ - 2026-07-06 - weekly - 0.7 - - - https://sickn33.github.io/antigravity-awesome-skills/skill/api-integration/ - 2026-07-06 - weekly - 0.7 - - - https://sickn33.github.io/antigravity-awesome-skills/skill/api-onboarding/ - 2026-07-06 - weekly - 0.7 - - - https://sickn33.github.io/antigravity-awesome-skills/skill/api-sdk-generator/ - 2026-07-06 - weekly - 0.7 - - - https://sickn33.github.io/antigravity-awesome-skills/skill/appium-skill/ - 2026-07-06 - weekly - 0.7 - - - https://sickn33.github.io/antigravity-awesome-skills/skill/applicationinsights-web-ts/ - 2026-07-06 - weekly - 0.7 - - - https://sickn33.github.io/antigravity-awesome-skills/skill/automated-triage/ - 2026-07-06 - weekly - 0.7 - - - https://sickn33.github.io/antigravity-awesome-skills/skill/aws-agentic-ai/ - 2026-07-06 - weekly - 0.7 - - - https://sickn33.github.io/antigravity-awesome-skills/skill/aws-cdk-development/ - 2026-07-06 - weekly - 0.7 - - - https://sickn33.github.io/antigravity-awesome-skills/skill/aws-cost-operations/ - 2026-07-06 - weekly - 0.7 - - - https://sickn33.github.io/antigravity-awesome-skills/skill/aws-mcp-setup/ - 2026-07-06 - weekly - 0.7 - - - https://sickn33.github.io/antigravity-awesome-skills/skill/aws-serverless-eda/ - 2026-07-06 - weekly - 0.7 - - - https://sickn33.github.io/antigravity-awesome-skills/skill/aws-sst-development/ - 2026-07-06 - weekly - 0.7 - - - https://sickn33.github.io/antigravity-awesome-skills/skill/azure-ai-language-conversations-py/ - 2026-07-06 - weekly - 0.7 - - - https://sickn33.github.io/antigravity-awesome-skills/skill/azure-servicebus-rust/ - 2026-07-06 - weekly - 0.7 - - - https://sickn33.github.io/antigravity-awesome-skills/skill/azure-storage-queue-rust/ - 2026-07-06 - weekly - 0.7 - - - https://sickn33.github.io/antigravity-awesome-skills/skill/baseline-ui/ - 2026-07-06 - weekly - 0.7 - - - https://sickn33.github.io/antigravity-awesome-skills/skill/brooks-audit/ - 2026-07-06 - weekly - 0.7 - - - https://sickn33.github.io/antigravity-awesome-skills/skill/brooks-debt/ - 2026-07-06 - weekly - 0.7 - - - https://sickn33.github.io/antigravity-awesome-skills/skill/brooks-harness/ - 2026-07-06 - weekly - 0.7 - - - https://sickn33.github.io/antigravity-awesome-skills/skill/brooks-review/ - 2026-07-06 + 2026-07-07 weekly 0.7 diff --git a/antigravity-awesome-skills/apps/web-app/public/skills.json.backup b/antigravity-awesome-skills/apps/web-app/public/skills.json.backup index 79ae90bc..7575ae3d 100644 --- a/antigravity-awesome-skills/apps/web-app/public/skills.json.backup +++ b/antigravity-awesome-skills/apps/web-app/public/skills.json.backup @@ -861,6 +861,28 @@ "reasons": [] } }, + { + "id": "agent-self-scheduling", + "path": "skills/agent-self-scheduling", + "category": "agent-orchestration", + "name": "agent-self-scheduling", + "description": "Schedule AI agent runs with cron, loops, or external clocks while avoiding unsafe tight autonomous timers.", + "risk": "critical", + "source": "community", + "date_added": "2026-07-07", + "plugin": { + "targets": { + "codex": "supported", + "claude": "supported" + }, + "setup": { + "type": "none", + "summary": "", + "docs": null + }, + "reasons": [] + } + }, { "id": "agent-squad", "path": "skills/agent-squad", @@ -2037,6 +2059,28 @@ "reasons": [] } }, + { + "id": "anti-sleep", + "path": "skills/anti-sleep", + "category": "operations", + "name": "anti-sleep", + "description": "Keep a Mac awake with caffeinate during long builds, downloads, or supervised automation runs.", + "risk": "critical", + "source": "community", + "date_added": "2026-07-07", + "plugin": { + "targets": { + "codex": "supported", + "claude": "supported" + }, + "setup": { + "type": "none", + "summary": "", + "docs": null + }, + "reasons": [] + } + }, { "id": "anti-sycophancy", "path": "skills/anti-sycophancy", @@ -7470,6 +7514,28 @@ "reasons": [] } }, + { + "id": "brain-to-docs", + "path": "skills/brain-to-docs", + "category": "productivity", + "name": "brain-to-docs", + "description": "Interview the user to turn project vision and decisions into README and ADR documentation.", + "risk": "critical", + "source": "community", + "date_added": "2026-07-07", + "plugin": { + "targets": { + "codex": "supported", + "claude": "supported" + }, + "setup": { + "type": "none", + "summary": "", + "docs": null + }, + "reasons": [] + } + }, { "id": "brainstorming", "path": "skills/brainstorming", @@ -7844,6 +7910,28 @@ "reasons": [] } }, + { + "id": "browser-harness", + "path": "skills/browser-harness", + "category": "browser-automation", + "name": "browser-harness", + "description": "Drive an existing browser through CDP for authenticated, visual, or interactive web automation.", + "risk": "critical", + "source": "community", + "date_added": "2026-07-07", + "plugin": { + "targets": { + "codex": "supported", + "claude": "supported" + }, + "setup": { + "type": "none", + "summary": "", + "docs": null + }, + "reasons": [] + } + }, { "id": "browser-testing-with-devtools", "path": "skills/browser-testing-with-devtools", @@ -9524,6 +9612,28 @@ "reasons": [] } }, + { + "id": "cmux", + "path": "skills/cmux", + "category": "development", + "name": "cmux", + "description": "Control cmux workspaces, panes, surfaces, and agent sessions safely from macOS terminal workflows.", + "risk": "critical", + "source": "community", + "date_added": "2026-07-07", + "plugin": { + "targets": { + "codex": "supported", + "claude": "supported" + }, + "setup": { + "type": "none", + "summary": "", + "docs": null + }, + "reasons": [] + } + }, { "id": "co-marketing", "path": "skills/co-marketing", @@ -10120,6 +10230,30 @@ "reasons": [] } }, + { + "id": "codex-subagent", + "path": "skills/codex-subagent", + "category": "agent-orchestration", + "name": "codex-subagent", + "description": "Launch Codex CLI as an isolated subagent for bounded coding, review, or verification tasks.", + "risk": "critical", + "source": "community", + "date_added": "2026-07-07", + "plugin": { + "targets": { + "codex": "blocked", + "claude": "blocked" + }, + "setup": { + "type": "none", + "summary": "", + "docs": null + }, + "reasons": [ + "target_specific_home_path" + ] + } + }, { "id": "cold-email", "path": "skills/cold-email", @@ -11994,6 +12128,28 @@ "reasons": [] } }, + { + "id": "cyber-audit", + "path": "skills/cyber-audit", + "category": "security", + "name": "cyber-audit", + "description": "Run read-only exposure checks for security advisories and write a structured local audit report.", + "risk": "safe", + "source": "community", + "date_added": "2026-07-07", + "plugin": { + "targets": { + "codex": "supported", + "claude": "supported" + }, + "setup": { + "type": "none", + "summary": "", + "docs": null + }, + "reasons": [] + } + }, { "id": "cyber-y2k", "path": "skills/design-it/cyber-y2k", @@ -12940,6 +13096,28 @@ "reasons": [] } }, + { + "id": "deepapi", + "path": "skills/deepapi", + "category": "research", + "name": "deepapi", + "description": "Use DeepAPI for supported scraping, research, and email workflows with explicit credentials and approval.", + "risk": "critical", + "source": "community", + "date_added": "2026-07-07", + "plugin": { + "targets": { + "codex": "supported", + "claude": "supported" + }, + "setup": { + "type": "none", + "summary": "", + "docs": null + }, + "reasons": [] + } + }, { "id": "defi-protocol-templates", "path": "skills/defi-protocol-templates", @@ -12984,6 +13162,30 @@ "reasons": [] } }, + { + "id": "delegating-to-agents", + "path": "skills/delegating-to-agents", + "category": "agent-orchestration", + "name": "delegating-to-agents", + "description": "Delegate bounded work to other AI agents while preserving context, ownership, and progress checks.", + "risk": "critical", + "source": "community", + "date_added": "2026-07-07", + "plugin": { + "targets": { + "codex": "blocked", + "claude": "blocked" + }, + "setup": { + "type": "none", + "summary": "", + "docs": null + }, + "reasons": [ + "target_specific_home_path" + ] + } + }, { "id": "dep", "path": "skills/agent-squad/dep", @@ -13916,6 +14118,30 @@ "reasons": [] } }, + { + "id": "distribute-skill-to-all-agents", + "path": "skills/distribute-skill-to-all-agents", + "category": "development", + "name": "distribute-skill-to-all-agents", + "description": "Distribute a skill across configured agent skill folders while respecting local symlink layouts.", + "risk": "critical", + "source": "community", + "date_added": "2026-07-07", + "plugin": { + "targets": { + "codex": "blocked", + "claude": "supported" + }, + "setup": { + "type": "none", + "summary": "", + "docs": null + }, + "reasons": [ + "target_specific_home_path" + ] + } + }, { "id": "distributed-debugging-debug-trace", "path": "skills/distributed-debugging-debug-trace", @@ -14712,6 +14938,28 @@ "reasons": [] } }, + { + "id": "effective-agent-skills", + "path": "skills/effective-agent-skills", + "category": "development", + "name": "effective-agent-skills", + "description": "Author and review high-quality agent skills with triggers, progressive disclosure, and safety notes.", + "risk": "safe", + "source": "community", + "date_added": "2026-07-07", + "plugin": { + "targets": { + "codex": "supported", + "claude": "supported" + }, + "setup": { + "type": "none", + "summary": "", + "docs": null + }, + "reasons": [] + } + }, { "id": "efficient-web-research", "path": "skills/efficient-web-research", @@ -15770,6 +16018,28 @@ "reasons": [] } }, + { + "id": "fable-safe-prompt", + "path": "skills/fable-safe-prompt", + "category": "agent-behavior", + "name": "fable-safe-prompt", + "description": "Rewrite allowed prompts to reduce false-positive safety triggers without bypassing policy or changing intent.", + "risk": "safe", + "source": "community", + "date_added": "2026-07-07", + "plugin": { + "targets": { + "codex": "supported", + "claude": "supported" + }, + "setup": { + "type": "none", + "summary": "", + "docs": null + }, + "reasons": [] + } + }, { "id": "faf-context", "path": "skills/faf-context", @@ -16628,6 +16898,28 @@ "reasons": [] } }, + { + "id": "folder-specific-claude-and-agents-md", + "path": "skills/folder-specific-claude-and-agents-md", + "category": "development", + "name": "folder-specific-claude-and-agents-md", + "description": "Create folder-scoped CLAUDE.md and AGENTS.md guidance for future agents working in that area.", + "risk": "critical", + "source": "community", + "date_added": "2026-07-07", + "plugin": { + "targets": { + "codex": "supported", + "claude": "supported" + }, + "setup": { + "type": "none", + "summary": "", + "docs": null + }, + "reasons": [] + } + }, { "id": "food-database-query", "path": "skills/food-database-query", @@ -18634,6 +18926,28 @@ "reasons": [] } }, + { + "id": "goal-loop", + "path": "skills/goal-loop", + "category": "agent-orchestration", + "name": "goal-loop", + "description": "Draft and explain persistent goal-loop prompts for long-running agent work with clear stop conditions.", + "risk": "safe", + "source": "community", + "date_added": "2026-07-07", + "plugin": { + "targets": { + "codex": "supported", + "claude": "supported" + }, + "setup": { + "type": "none", + "summary": "", + "docs": null + }, + "reasons": [] + } + }, { "id": "godot-4-migration", "path": "skills/godot-4-migration", @@ -21190,6 +21504,28 @@ "reasons": [] } }, + { + "id": "interview-style-doc-building", + "path": "skills/interview-style-doc-building", + "category": "productivity", + "name": "interview-style-doc-building", + "description": "Build structured strategy documents by asking one question at a time and patching the file.", + "risk": "critical", + "source": "community", + "date_added": "2026-07-07", + "plugin": { + "targets": { + "codex": "supported", + "claude": "supported" + }, + "setup": { + "type": "none", + "summary": "", + "docs": null + }, + "reasons": [] + } + }, { "id": "invariant-guard", "path": "skills/invariant-guard", @@ -22780,6 +23116,28 @@ ] } }, + { + "id": "linkedin-post-writer", + "path": "skills/linkedin-post-writer", + "category": "marketing", + "name": "linkedin-post-writer", + "description": "Draft LinkedIn posts from 16 tested hook formulas mapped to engagement goals (comments, reposts, likes, saves), with 2026 algorithm formatting rules and an AI-tell scrub pass before publishing.", + "risk": "none", + "source": "community", + "date_added": "2026-07-06", + "plugin": { + "targets": { + "codex": "supported", + "claude": "supported" + }, + "setup": { + "type": "none", + "summary": "", + "docs": null + }, + "reasons": [] + } + }, { "id": "linkedin-profile-optimizer", "path": "skills/linkedin-profile-optimizer", @@ -24264,6 +24622,28 @@ ] } }, + { + "id": "markdown-rendering", + "path": "skills/markdown-rendering", + "category": "productivity", + "name": "markdown-rendering", + "description": "Open Markdown reliably in cmux panes and recover from blank rendered surfaces.", + "risk": "safe", + "source": "community", + "date_added": "2026-07-07", + "plugin": { + "targets": { + "codex": "supported", + "claude": "supported" + }, + "setup": { + "type": "none", + "summary": "", + "docs": null + }, + "reasons": [] + } + }, { "id": "market-sizing-analysis", "path": "skills/market-sizing-analysis", @@ -28633,6 +29013,50 @@ "reasons": [] } }, + { + "id": "pi-custom-model", + "path": "skills/pi-custom-model", + "category": "operations", + "name": "pi-custom-model", + "description": "Register custom Pi Agent model slugs so saved OpenRouter variants resolve correctly.", + "risk": "critical", + "source": "community", + "date_added": "2026-07-07", + "plugin": { + "targets": { + "codex": "supported", + "claude": "supported" + }, + "setup": { + "type": "none", + "summary": "", + "docs": null + }, + "reasons": [] + } + }, + { + "id": "pi-web-search", + "path": "skills/pi-web-search", + "category": "research", + "name": "pi-web-search", + "description": "Give Pi Agents a safe web-search and fetch workflow using the installed pi-web-access package.", + "risk": "safe", + "source": "community", + "date_added": "2026-07-07", + "plugin": { + "targets": { + "codex": "supported", + "claude": "supported" + }, + "setup": { + "type": "none", + "summary": "", + "docs": null + }, + "reasons": [] + } + }, { "id": "pipecat-friday-agent", "path": "skills/pipecat-friday-agent", @@ -30133,6 +30557,28 @@ "reasons": [] } }, + { + "id": "push-skill-to-github", + "path": "skills/push-skill-to-github", + "category": "development", + "name": "push-skill-to-github", + "description": "Commit and push skill changes to the configured skills repository after review and validation.", + "risk": "critical", + "source": "community", + "date_added": "2026-07-07", + "plugin": { + "targets": { + "codex": "supported", + "claude": "supported" + }, + "setup": { + "type": "none", + "summary": "", + "docs": null + }, + "reasons": [] + } + }, { "id": "puzzle-activity-planner", "path": "skills/puzzle-activity-planner", @@ -30947,6 +31393,28 @@ "reasons": [] } }, + { + "id": "read-all-adrs", + "path": "skills/read-all-adrs", + "category": "productivity", + "name": "read-all-adrs", + "description": "Read every ADR in a project before summarizing architectural context or decisions.", + "risk": "safe", + "source": "community", + "date_added": "2026-07-07", + "plugin": { + "targets": { + "codex": "supported", + "claude": "supported" + }, + "setup": { + "type": "none", + "summary": "", + "docs": null + }, + "reasons": [] + } + }, { "id": "readme", "path": "skills/readme", @@ -31365,6 +31833,28 @@ "reasons": [] } }, + { + "id": "research-prompt", + "path": "skills/research-prompt", + "category": "research", + "name": "research-prompt", + "description": "Turn vague research needs into one precise deep-research prompt with context and output criteria.", + "risk": "safe", + "source": "community", + "date_added": "2026-07-07", + "plugin": { + "targets": { + "codex": "supported", + "claude": "supported" + }, + "setup": { + "type": "none", + "summary": "", + "docs": null + }, + "reasons": [] + } + }, { "id": "resolving-merge-conflicts", "path": "skills/resolving-merge-conflicts", @@ -31849,6 +32339,28 @@ "reasons": [] } }, + { + "id": "run-deep-swe", + "path": "skills/run-deep-swe", + "category": "agent-evaluation", + "name": "run-deep-swe", + "description": "Run reproducible DeepSWE coding-agent benchmark evaluations through OpenRouter and mini-swe-agent.", + "risk": "critical", + "source": "community", + "date_added": "2026-07-07", + "plugin": { + "targets": { + "codex": "supported", + "claude": "supported" + }, + "setup": { + "type": "none", + "summary": "", + "docs": null + }, + "reasons": [] + } + }, { "id": "runapi-cli", "path": "skills/runapi-cli", @@ -34015,6 +34527,28 @@ "reasons": [] } }, + { + "id": "setup-help", + "path": "skills/setup-help", + "category": "productivity", + "name": "setup-help", + "description": "Walk a user through setup or installation one step at a time with the remaining steps visible.", + "risk": "safe", + "source": "community", + "date_added": "2026-07-07", + "plugin": { + "targets": { + "codex": "supported", + "claude": "supported" + }, + "setup": { + "type": "none", + "summary": "", + "docs": null + }, + "reasons": [] + } + }, { "id": "setup-matt-pocock-skills", "path": "skills/setup-matt-pocock-skills", @@ -34279,6 +34813,28 @@ "reasons": [] } }, + { + "id": "short", + "path": "skills/short", + "category": "writing", + "name": "short", + "description": "Rewrite the previous response more briefly while preserving the substance.", + "risk": "safe", + "source": "community", + "date_added": "2026-07-07", + "plugin": { + "targets": { + "codex": "supported", + "claude": "supported" + }, + "setup": { + "type": "none", + "summary": "", + "docs": null + }, + "reasons": [] + } + }, { "id": "signup-flow-cro", "path": "skills/signup-flow-cro", @@ -36519,6 +37075,28 @@ "reasons": [] } }, + { + "id": "taisly-social-media-posting", + "path": "skills/taisly-social-media-posting", + "category": "marketing", + "name": "taisly-social-media-posting", + "description": "Use Taisly Agent Kit to prepare and publish approved short-form video posts across TikTok, Instagram Reels, YouTube Shorts, X, and Facebook.", + "risk": "critical", + "source": "community", + "date_added": "2026-07-07", + "plugin": { + "targets": { + "codex": "supported", + "claude": "supported" + }, + "setup": { + "type": "none", + "summary": "", + "docs": null + }, + "reasons": [] + } + }, { "id": "tanstack-query-expert", "path": "skills/tanstack-query-expert", @@ -40137,6 +40715,28 @@ "reasons": [] } }, + { + "id": "vps-server-management", + "path": "skills/vps-server-management", + "category": "operations", + "name": "vps-server-management", + "description": "Manage authorized VPS hosts and server-side agents through cautious SSH and operations workflows.", + "risk": "critical", + "source": "community", + "date_added": "2026-07-07", + "plugin": { + "targets": { + "codex": "supported", + "claude": "supported" + }, + "setup": { + "type": "none", + "summary": "", + "docs": null + }, + "reasons": [] + } + }, { "id": "vr-ar", "path": "skills/game-development/vr-ar", @@ -41789,6 +42389,28 @@ "reasons": [] } }, + { + "id": "youtube-transcript", + "path": "skills/youtube-transcript", + "category": "research", + "name": "youtube-transcript", + "description": "Fetch YouTube transcripts through DeepAPI or local fallback tooling and save clean text output.", + "risk": "safe", + "source": "community", + "date_added": "2026-07-07", + "plugin": { + "targets": { + "codex": "supported", + "claude": "supported" + }, + "setup": { + "type": "none", + "summary": "", + "docs": null + }, + "reasons": [] + } + }, { "id": "zapier-make-patterns", "path": "skills/zapier-make-patterns", diff --git a/antigravity-awesome-skills/apps/web-app/public/social-card.svg b/antigravity-awesome-skills/apps/web-app/public/social-card.svg index 66b3f0e3..fa07bef1 100644 --- a/antigravity-awesome-skills/apps/web-app/public/social-card.svg +++ b/antigravity-awesome-skills/apps/web-app/public/social-card.svg @@ -1,6 +1,6 @@ Antigravity Awesome Skills social card - Social preview for Antigravity Awesome Skills with a 1,901 plus agentic skills headline and supported tools including Claude Code, Cursor, Codex CLI, Gemini CLI, and Antigravity. + Social preview for Antigravity Awesome Skills with a 1,929 plus agentic skills headline and supported tools including Claude Code, Cursor, Codex CLI, Gemini CLI, and Antigravity. @@ -32,7 +32,7 @@ INSTALLABLE GITHUB LIBRARY - 1,901+ Agentic Skills + 1,929+ Agentic Skills For Claude Code, Cursor, Codex CLI, Autohand Code, diff --git a/antigravity-awesome-skills/assets/star-history.png b/antigravity-awesome-skills/assets/star-history.png index 00148b37..8d011f94 100644 Binary files a/antigravity-awesome-skills/assets/star-history.png and b/antigravity-awesome-skills/assets/star-history.png differ diff --git a/antigravity-awesome-skills/data/aliases.json b/antigravity-awesome-skills/data/aliases.json index 3879b479..241234d0 100644 --- a/antigravity-awesome-skills/data/aliases.json +++ b/antigravity-awesome-skills/data/aliases.json @@ -1,5 +1,5 @@ { - "generatedAt": "2026-07-05T15:55:06.000Z", + "generatedAt": "2026-07-07T07:02:03.000Z", "aliases": { "20-andruia-intelligence": "20-andruia-niche-intelligence", "accessibility-compliance-audit": "accessibility-compliance-accessibility-audit", @@ -118,6 +118,7 @@ "widget-based-design": "design-it/widget-based-design", "design-it/widget-based": "design-it/widget-based-design", "y2k-design": "design-it/y2k-design", + "distribute-skill-agents": "distribute-skill-to-all-agents", "distributed-debugging-trace": "distributed-debugging-debug-trace", "documentation-generation-generate": "documentation-generation-doc-generate", "error-debugging-analysis": "error-debugging-error-analysis", @@ -127,6 +128,7 @@ "error-diagnostics-debug": "error-diagnostics-smart-debug", "fda-medtech-auditor": "fda-medtech-compliance-auditor", "finishing-a-branch": "finishing-a-development-branch", + "folder-specific-md": "folder-specific-claude-and-agents-md", "framework-migration-migrate": "framework-migration-code-migrate", "framework-migration-upgrade": "framework-migration-deps-upgrade", "framework-migration-modernize": "framework-migration-legacy-modernize", @@ -149,6 +151,7 @@ "hugging-face-publisher": "hugging-face-paper-publisher", "huggingface-lora-builder": "huggingface-lora-space-builder", "incident-response": "incident-response-incident-response", + "interview-style-building": "interview-style-doc-building", "javascript-typescript-scaffold": "javascript-typescript-typescript-scaffold", "base": "libreoffice/base", "calc": "libreoffice/calc", diff --git a/antigravity-awesome-skills/data/bundles.json b/antigravity-awesome-skills/data/bundles.json index 9f61b6c1..358c48a9 100644 --- a/antigravity-awesome-skills/data/bundles.json +++ b/antigravity-awesome-skills/data/bundles.json @@ -1,5 +1,5 @@ { - "generatedAt": "2026-07-05T15:55:06.000Z", + "generatedAt": "2026-07-07T07:02:03.000Z", "bundles": { "core-dev": { "description": "Core development skills across languages, frameworks, and backend/frontend fundamentals.", @@ -161,6 +161,7 @@ "dbos-golang", "dbos-python", "dbos-typescript", + "deepapi", "design-it", "design-it/widget-based-design", "design-philosophy", @@ -500,6 +501,7 @@ "cred-omega", "crossframe-public", "customs-trade-compliance", + "cyber-audit", "dependency-management-deps-audit", "developer-churn", "differential-review", @@ -1012,6 +1014,7 @@ "2slides-ppt-generator", "activecampaign-automation", "agent-orchestrator", + "agent-self-scheduling", "agentphone", "ai-agent-development", "ai-ml", @@ -1020,6 +1023,7 @@ "andrej-karpathy", "android-ui-journey-testing", "anti-deception", + "anti-sleep", "api-documentation", "api-security-testing", "appium-skill", @@ -1040,6 +1044,7 @@ "box-automation", "brevo-automation", "browser-automation", + "browser-harness", "cal-com-automation", "calendly-automation", "canva-automation", @@ -1173,6 +1178,7 @@ "outlook-calendar-automation", "pagerduty-automation", "payment-integration", + "pi-web-search", "pipedrive-automation", "plotly", "postgresql-optimization", @@ -1664,6 +1670,7 @@ "libreoffice/draw", "libreoffice/impress", "libreoffice/writer", + "linkedin-post-writer", "odoo-qweb-templates", "office-productivity", "papers-skill", diff --git a/antigravity-awesome-skills/data/catalog.json b/antigravity-awesome-skills/data/catalog.json index 53d43ef7..0ca07766 100644 --- a/antigravity-awesome-skills/data/catalog.json +++ b/antigravity-awesome-skills/data/catalog.json @@ -1,6 +1,6 @@ { - "generatedAt": "2026-07-05T15:55:06.000Z", - "total": 1901, + "generatedAt": "2026-07-07T07:02:03.000Z", + "total": 1929, "skills": [ { "id": "00-andruia-consultant", @@ -925,6 +925,33 @@ ], "path": "skills/agent-orchestrator/SKILL.md" }, + { + "id": "agent-self-scheduling", + "name": "agent-self-scheduling", + "description": "Schedule AI agent runs with cron, loops, or external clocks while avoiding unsafe tight autonomous timers.", + "category": "data-ai", + "tags": [ + "agents", + "scheduling", + "automation", + "cron" + ], + "triggers": [ + "agents", + "scheduling", + "automation", + "cron", + "agent", + "self", + "schedule", + "ai", + "runs", + "loops", + "external", + "clocks" + ], + "path": "skills/agent-self-scheduling/SKILL.md" + }, { "id": "agent-squad", "name": "agent-squad", @@ -2388,6 +2415,32 @@ ], "path": "skills/anti-reversing-techniques/SKILL.md" }, + { + "id": "anti-sleep", + "name": "anti-sleep", + "description": "Keep a Mac awake with caffeinate during long builds, downloads, or supervised automation runs.", + "category": "workflow", + "tags": [ + "macos", + "caffeinate", + "operations" + ], + "triggers": [ + "macos", + "caffeinate", + "operations", + "anti", + "sleep", + "keep", + "mac", + "awake", + "during", + "long", + "downloads", + "supervised" + ], + "path": "skills/anti-sleep/SKILL.md" + }, { "id": "anti-sycophancy", "name": "anti-sycophancy", @@ -8474,6 +8527,31 @@ ], "path": "skills/box-automation/SKILL.md" }, + { + "id": "brain-to-docs", + "name": "brain-to-docs", + "description": "Interview the user to turn project vision and decisions into README and ADR documentation.", + "category": "architecture", + "tags": [ + "documentation", + "adr", + "planning" + ], + "triggers": [ + "documentation", + "adr", + "planning", + "brain", + "docs", + "interview", + "user", + "turn", + "vision", + "decisions", + "readme" + ], + "path": "skills/brain-to-docs/SKILL.md" + }, { "id": "brainstorming", "name": "brainstorming", @@ -8893,6 +8971,33 @@ ], "path": "skills/browser-extension-builder/SKILL.md" }, + { + "id": "browser-harness", + "name": "browser-harness", + "description": "Drive an existing browser through CDP for authenticated, visual, or interactive web automation.", + "category": "workflow", + "tags": [ + "browser", + "cdp", + "automation", + "scraping" + ], + "triggers": [ + "browser", + "cdp", + "automation", + "scraping", + "harness", + "drive", + "existing", + "through", + "authenticated", + "visual", + "interactive", + "web" + ], + "path": "skills/browser-harness/SKILL.md" + }, { "id": "browser-testing-with-devtools", "name": "browser-testing-with-devtools", @@ -10615,6 +10720,32 @@ ], "path": "skills/cloudformation-best-practices/SKILL.md" }, + { + "id": "cmux", + "name": "cmux", + "description": "Control cmux workspaces, panes, surfaces, and agent sessions safely from macOS terminal workflows.", + "category": "general", + "tags": [ + "cmux", + "terminal", + "agents", + "macos" + ], + "triggers": [ + "cmux", + "terminal", + "agents", + "macos", + "control", + "workspaces", + "panes", + "surfaces", + "agent", + "sessions", + "safely" + ], + "path": "skills/cmux/SKILL.md" + }, { "id": "co-marketing", "name": "co-marketing", @@ -11301,6 +11432,32 @@ ], "path": "skills/codex-review/SKILL.md" }, + { + "id": "codex-subagent", + "name": "codex-subagent", + "description": "Launch Codex CLI as an isolated subagent for bounded coding, review, or verification tasks.", + "category": "general", + "tags": [ + "codex", + "subagents", + "delegation" + ], + "triggers": [ + "codex", + "subagents", + "delegation", + "subagent", + "launch", + "cli", + "isolated", + "bounded", + "coding", + "review", + "verification", + "tasks" + ], + "path": "skills/codex-subagent/SKILL.md" + }, { "id": "cold-email", "name": "cold-email", @@ -13299,6 +13456,32 @@ ], "path": "skills/cv-generator/SKILL.md" }, + { + "id": "cyber-audit", + "name": "cyber-audit", + "description": "Run read-only exposure checks for security advisories and write a structured local audit report.", + "category": "security", + "tags": [ + "security", + "audit", + "read-only" + ], + "triggers": [ + "security", + "audit", + "read-only", + "cyber", + "run", + "read", + "exposure", + "checks", + "advisories", + "write", + "structured", + "local" + ], + "path": "skills/cyber-audit/SKILL.md" + }, { "id": "cypress-skill", "name": "cypress-skill", @@ -14206,6 +14389,30 @@ ], "path": "skills/deep-research/SKILL.md" }, + { + "id": "deepapi", + "name": "deepapi", + "description": "Use DeepAPI for supported scraping, research, and email workflows with explicit credentials and approval.", + "category": "development", + "tags": [ + "deepapi", + "scraping", + "email", + "api" + ], + "triggers": [ + "deepapi", + "scraping", + "email", + "api", + "supported", + "research", + "explicit", + "credentials", + "approval" + ], + "path": "skills/deepapi/SKILL.md" + }, { "id": "defi-protocol-templates", "name": "defi-protocol-templates", @@ -14255,6 +14462,32 @@ ], "path": "skills/defuddle/SKILL.md" }, + { + "id": "delegating-to-agents", + "name": "delegating-to-agents", + "description": "Delegate bounded work to other AI agents while preserving context, ownership, and progress checks.", + "category": "data-ai", + "tags": [ + "agents", + "delegation", + "orchestration" + ], + "triggers": [ + "agents", + "delegation", + "orchestration", + "delegating", + "delegate", + "bounded", + "work", + "other", + "ai", + "while", + "preserving", + "context" + ], + "path": "skills/delegating-to-agents/SKILL.md" + }, { "id": "dependency-management-deps-audit", "name": "dependency-management-deps-audit", @@ -16418,6 +16651,32 @@ ], "path": "skills/dispatching-parallel-agents/SKILL.md" }, + { + "id": "distribute-skill-to-all-agents", + "name": "distribute-skill-to-all-agents", + "description": "Distribute a skill across configured agent skill folders while respecting local symlink layouts.", + "category": "general", + "tags": [ + "skills", + "distribution", + "agents" + ], + "triggers": [ + "skills", + "distribution", + "agents", + "distribute", + "skill", + "all", + "configured", + "agent", + "folders", + "while", + "respecting", + "local" + ], + "path": "skills/distribute-skill-to-all-agents/SKILL.md" + }, { "id": "distributed-debugging-debug-trace", "name": "distributed-debugging-debug-trace", @@ -17235,6 +17494,32 @@ ], "path": "skills/ecl-harness-engineer/SKILL.md" }, + { + "id": "effective-agent-skills", + "name": "effective-agent-skills", + "description": "Author and review high-quality agent skills with triggers, progressive disclosure, and safety notes.", + "category": "general", + "tags": [ + "skills", + "authoring", + "quality" + ], + "triggers": [ + "skills", + "authoring", + "quality", + "effective", + "agent", + "author", + "review", + "high", + "triggers", + "progressive", + "disclosure", + "safety" + ], + "path": "skills/effective-agent-skills/SKILL.md" + }, { "id": "efficient-web-research", "name": "efficient-web-research", @@ -18369,6 +18654,32 @@ ], "path": "skills/expo-ui-swift-ui/SKILL.md" }, + { + "id": "fable-safe-prompt", + "name": "fable-safe-prompt", + "description": "Rewrite allowed prompts to reduce false-positive safety triggers without bypassing policy or changing intent.", + "category": "general", + "tags": [ + "prompting", + "safety", + "guardrails" + ], + "triggers": [ + "prompting", + "safety", + "guardrails", + "fable", + "safe", + "prompt", + "rewrite", + "allowed", + "prompts", + "reduce", + "false", + "positive" + ], + "path": "skills/fable-safe-prompt/SKILL.md" + }, { "id": "faf-context", "name": "faf-context", @@ -19209,6 +19520,32 @@ ], "path": "skills/flutter-expert/SKILL.md" }, + { + "id": "folder-specific-claude-and-agents-md", + "name": "folder-specific-claude-and-agents-md", + "description": "Create folder-scoped CLAUDE.md and AGENTS.md guidance for future agents working in that area.", + "category": "general", + "tags": [ + "agents-md", + "claude-md", + "documentation" + ], + "triggers": [ + "agents-md", + "claude-md", + "documentation", + "folder", + "specific", + "claude", + "agents", + "md", + "scoped", + "guidance", + "future", + "working" + ], + "path": "skills/folder-specific-claude-and-agents-md/SKILL.md" + }, { "id": "food-database-query", "name": "food-database-query", @@ -21619,6 +21956,32 @@ ], "path": "skills/goal-analyzer/SKILL.md" }, + { + "id": "goal-loop", + "name": "goal-loop", + "description": "Draft and explain persistent goal-loop prompts for long-running agent work with clear stop conditions.", + "category": "general", + "tags": [ + "goals", + "autonomy", + "planning" + ], + "triggers": [ + "goals", + "autonomy", + "planning", + "goal", + "loop", + "draft", + "explain", + "persistent", + "prompts", + "long", + "running", + "agent" + ], + "path": "skills/goal-loop/SKILL.md" + }, { "id": "godot-4-migration", "name": "godot-4-migration", @@ -24381,6 +24744,32 @@ ], "path": "skills/interview-coach/SKILL.md" }, + { + "id": "interview-style-doc-building", + "name": "interview-style-doc-building", + "description": "Build structured strategy documents by asking one question at a time and patching the file.", + "category": "general", + "tags": [ + "documentation", + "interview", + "planning" + ], + "triggers": [ + "documentation", + "interview", + "planning", + "style", + "doc", + "building", + "structured", + "documents", + "asking", + "one", + "question", + "time" + ], + "path": "skills/interview-style-doc-building/SKILL.md" + }, { "id": "invariant-guard", "name": "invariant-guard", @@ -26215,6 +26604,35 @@ ], "path": "skills/linkedin-content-generator/SKILL.md" }, + { + "id": "linkedin-post-writer", + "name": "linkedin-post-writer", + "description": "Draft LinkedIn posts from 16 tested hook formulas mapped to engagement goals (comments, reposts, likes, saves), with 2026 algorithm formatting rules and an AI-tell scrub pass before publishing.", + "category": "data-ai", + "tags": [ + "linkedin", + "copywriting", + "hooks", + "social-media", + "personal-brand", + "content-marketing" + ], + "triggers": [ + "linkedin", + "copywriting", + "hooks", + "social-media", + "personal-brand", + "content-marketing", + "post", + "writer", + "draft", + "posts", + "16", + "tested" + ], + "path": "skills/linkedin-post-writer/SKILL.md" + }, { "id": "linkedin-profile-optimizer", "name": "linkedin-profile-optimizer", @@ -27886,6 +28304,30 @@ ], "path": "skills/manifest/SKILL.md" }, + { + "id": "markdown-rendering", + "name": "markdown-rendering", + "description": "Open Markdown reliably in cmux panes and recover from blank rendered surfaces.", + "category": "general", + "tags": [ + "markdown", + "cmux", + "rendering" + ], + "triggers": [ + "markdown", + "cmux", + "rendering", + "open", + "reliably", + "panes", + "recover", + "blank", + "rendered", + "surfaces" + ], + "path": "skills/markdown-rendering/SKILL.md" + }, { "id": "market-sizing-analysis", "name": "market-sizing-analysis", @@ -32593,6 +33035,58 @@ ], "path": "skills/php-pro/SKILL.md" }, + { + "id": "pi-custom-model", + "name": "pi-custom-model", + "description": "Register custom Pi Agent model slugs so saved OpenRouter variants resolve correctly.", + "category": "general", + "tags": [ + "pi-agent", + "models", + "openrouter" + ], + "triggers": [ + "pi-agent", + "models", + "openrouter", + "pi", + "custom", + "model", + "register", + "agent", + "slugs", + "so", + "saved", + "variants" + ], + "path": "skills/pi-custom-model/SKILL.md" + }, + { + "id": "pi-web-search", + "name": "pi-web-search", + "description": "Give Pi Agents a safe web-search and fetch workflow using the installed pi-web-access package.", + "category": "workflow", + "tags": [ + "web-search", + "pi-agent", + "research" + ], + "triggers": [ + "web-search", + "pi-agent", + "research", + "pi", + "web", + "search", + "give", + "agents", + "safe", + "fetch", + "installed", + "access" + ], + "path": "skills/pi-web-search/SKILL.md" + }, { "id": "pipecat-friday-agent", "name": "pipecat-friday-agent", @@ -34294,6 +34788,32 @@ ], "path": "skills/puppeteer-skill/SKILL.md" }, + { + "id": "push-skill-to-github", + "name": "push-skill-to-github", + "description": "Commit and push skill changes to the configured skills repository after review and validation.", + "category": "general", + "tags": [ + "skills", + "git", + "publishing" + ], + "triggers": [ + "skills", + "git", + "publishing", + "push", + "skill", + "github", + "commit", + "changes", + "configured", + "repository", + "after", + "review" + ], + "path": "skills/push-skill-to-github/SKILL.md" + }, { "id": "puzzle-activity-planner", "name": "puzzle-activity-planner", @@ -35158,6 +35678,32 @@ ], "path": "skills/react-ui-patterns/SKILL.md" }, + { + "id": "read-all-adrs", + "name": "read-all-adrs", + "description": "Read every ADR in a project before summarizing architectural context or decisions.", + "category": "architecture", + "tags": [ + "adr", + "documentation", + "architecture" + ], + "triggers": [ + "adr", + "documentation", + "architecture", + "read", + "all", + "adrs", + "every", + "before", + "summarizing", + "architectural", + "context", + "decisions" + ], + "path": "skills/read-all-adrs/SKILL.md" + }, { "id": "readme", "name": "readme", @@ -35627,6 +36173,32 @@ ], "path": "skills/requesting-code-review/SKILL.md" }, + { + "id": "research-prompt", + "name": "research-prompt", + "description": "Turn vague research needs into one precise deep-research prompt with context and output criteria.", + "category": "general", + "tags": [ + "research", + "prompting", + "briefs" + ], + "triggers": [ + "research", + "prompting", + "briefs", + "prompt", + "turn", + "vague", + "one", + "precise", + "deep", + "context", + "output", + "criteria" + ], + "path": "skills/research-prompt/SKILL.md" + }, { "id": "resolving-merge-conflicts", "name": "resolving-merge-conflicts", @@ -36089,6 +36661,33 @@ ], "path": "skills/ruby-pro/SKILL.md" }, + { + "id": "run-deep-swe", + "name": "run-deep-swe", + "description": "Run reproducible DeepSWE coding-agent benchmark evaluations through OpenRouter and mini-swe-agent.", + "category": "general", + "tags": [ + "benchmark", + "deepswe", + "openrouter", + "evaluation" + ], + "triggers": [ + "benchmark", + "deepswe", + "openrouter", + "evaluation", + "run", + "deep", + "swe", + "reproducible", + "coding", + "agent", + "evaluations", + "through" + ], + "path": "skills/run-deep-swe/SKILL.md" + }, { "id": "runapi-cli", "name": "runapi-cli", @@ -38581,6 +39180,32 @@ ], "path": "skills/service-mesh-observability/SKILL.md" }, + { + "id": "setup-help", + "name": "setup-help", + "description": "Walk a user through setup or installation one step at a time with the remaining steps visible.", + "category": "general", + "tags": [ + "setup", + "onboarding", + "installation" + ], + "triggers": [ + "setup", + "onboarding", + "installation", + "walk", + "user", + "through", + "one", + "step", + "time", + "remaining", + "steps", + "visible" + ], + "path": "skills/setup-help/SKILL.md" + }, { "id": "setup-matt-pocock-skills", "name": "setup-matt-pocock-skills", @@ -38858,6 +39483,31 @@ ], "path": "skills/shopify-development/SKILL.md" }, + { + "id": "short", + "name": "short", + "description": "Rewrite the previous response more briefly while preserving the substance.", + "category": "general", + "tags": [ + "writing", + "editing", + "concise" + ], + "triggers": [ + "writing", + "editing", + "concise", + "short", + "rewrite", + "previous", + "response", + "briefly", + "while", + "preserving", + "substance" + ], + "path": "skills/short/SKILL.md" + }, { "id": "signup-flow-cro", "name": "signup-flow-cro", @@ -41521,6 +42171,40 @@ ], "path": "skills/tailwind-patterns/SKILL.md" }, + { + "id": "taisly-social-media-posting", + "name": "taisly-social-media-posting", + "description": "Use Taisly Agent Kit to prepare and publish approved short-form video posts across TikTok, Instagram Reels, YouTube Shorts, X, and Facebook.", + "category": "general", + "tags": [ + "social-media", + "video", + "publishing", + "mcp", + "cli", + "sdk", + "tiktok", + "instagram", + "youtube-shorts", + "x", + "facebook" + ], + "triggers": [ + "social-media", + "video", + "publishing", + "mcp", + "cli", + "sdk", + "tiktok", + "instagram", + "youtube-shorts", + "x", + "facebook", + "taisly" + ], + "path": "skills/taisly-social-media-posting/SKILL.md" + }, { "id": "tanstack-query-expert", "name": "tanstack-query-expert", @@ -45363,6 +46047,31 @@ ], "path": "skills/voice-ai-engine-development/SKILL.md" }, + { + "id": "vps-server-management", + "name": "vps-server-management", + "description": "Manage authorized VPS hosts and server-side agents through cautious SSH and operations workflows.", + "category": "general", + "tags": [ + "vps", + "ssh", + "server-management" + ], + "triggers": [ + "vps", + "ssh", + "server-management", + "server", + "authorized", + "hosts", + "side", + "agents", + "through", + "cautious", + "operations" + ], + "path": "skills/vps-server-management/SKILL.md" + }, { "id": "vscode-extension-guide-en", "name": "vscode-extension-guide-en", @@ -47134,6 +47843,32 @@ ], "path": "skills/youtube-summarizer/SKILL.md" }, + { + "id": "youtube-transcript", + "name": "youtube-transcript", + "description": "Fetch YouTube transcripts through DeepAPI or local fallback tooling and save clean text output.", + "category": "general", + "tags": [ + "youtube", + "transcripts", + "research" + ], + "triggers": [ + "youtube", + "transcripts", + "research", + "transcript", + "fetch", + "through", + "deepapi", + "local", + "fallback", + "tooling", + "save", + "clean" + ], + "path": "skills/youtube-transcript/SKILL.md" + }, { "id": "zapier-make-patterns", "name": "zapier-make-patterns", diff --git a/antigravity-awesome-skills/data/plugin-compatibility.json b/antigravity-awesome-skills/data/plugin-compatibility.json index bdd5e3d4..e1c6f4e6 100644 --- a/antigravity-awesome-skills/data/plugin-compatibility.json +++ b/antigravity-awesome-skills/data/plugin-compatibility.json @@ -696,6 +696,25 @@ }, "runtime_files": [] }, + { + "id": "agent-self-scheduling", + "path": "skills/agent-self-scheduling", + "targets": { + "codex": "supported", + "claude": "supported" + }, + "setup": { + "type": "none", + "summary": "", + "docs": null + }, + "reasons": [], + "blocked_reasons": { + "codex": [], + "claude": [] + }, + "runtime_files": [] + }, { "id": "agent-squad", "path": "skills/agent-squad", @@ -1841,6 +1860,25 @@ }, "runtime_files": [] }, + { + "id": "anti-sleep", + "path": "skills/anti-sleep", + "targets": { + "codex": "supported", + "claude": "supported" + }, + "setup": { + "type": "none", + "summary": "", + "docs": null + }, + "reasons": [], + "blocked_reasons": { + "codex": [], + "claude": [] + }, + "runtime_files": [] + }, { "id": "anti-sycophancy", "path": "skills/anti-sycophancy", @@ -6422,6 +6460,25 @@ }, "runtime_files": [] }, + { + "id": "brain-to-docs", + "path": "skills/brain-to-docs", + "targets": { + "codex": "supported", + "claude": "supported" + }, + "setup": { + "type": "none", + "summary": "", + "docs": null + }, + "reasons": [], + "blocked_reasons": { + "codex": [], + "claude": [] + }, + "runtime_files": [] + }, { "id": "brainstorming", "path": "skills/brainstorming", @@ -6745,6 +6802,25 @@ }, "runtime_files": [] }, + { + "id": "browser-harness", + "path": "skills/browser-harness", + "targets": { + "codex": "supported", + "claude": "supported" + }, + "setup": { + "type": "none", + "summary": "", + "docs": null + }, + "reasons": [], + "blocked_reasons": { + "codex": [], + "claude": [] + }, + "runtime_files": [] + }, { "id": "browser-testing-with-devtools", "path": "skills/browser-testing-with-devtools", @@ -8097,6 +8173,25 @@ }, "runtime_files": [] }, + { + "id": "cmux", + "path": "skills/cmux", + "targets": { + "codex": "supported", + "claude": "supported" + }, + "setup": { + "type": "none", + "summary": "", + "docs": null + }, + "reasons": [], + "blocked_reasons": { + "codex": [], + "claude": [] + }, + "runtime_files": [] + }, { "id": "co-marketing", "path": "skills/co-marketing", @@ -8616,6 +8711,31 @@ }, "runtime_files": [] }, + { + "id": "codex-subagent", + "path": "skills/codex-subagent", + "targets": { + "codex": "blocked", + "claude": "blocked" + }, + "setup": { + "type": "none", + "summary": "", + "docs": null + }, + "reasons": [ + "target_specific_home_path" + ], + "blocked_reasons": { + "codex": [ + "target_specific_home_path" + ], + "claude": [ + "target_specific_home_path" + ] + }, + "runtime_files": [] + }, { "id": "cold-email", "path": "skills/cold-email", @@ -10163,6 +10283,25 @@ }, "runtime_files": [] }, + { + "id": "cyber-audit", + "path": "skills/cyber-audit", + "targets": { + "codex": "supported", + "claude": "supported" + }, + "setup": { + "type": "none", + "summary": "", + "docs": null + }, + "reasons": [], + "blocked_reasons": { + "codex": [], + "claude": [] + }, + "runtime_files": [] + }, { "id": "cypress-skill", "path": "skills/cypress-skill", @@ -10866,6 +11005,25 @@ }, "runtime_files": [] }, + { + "id": "deepapi", + "path": "skills/deepapi", + "targets": { + "codex": "supported", + "claude": "supported" + }, + "setup": { + "type": "none", + "summary": "", + "docs": null + }, + "reasons": [], + "blocked_reasons": { + "codex": [], + "claude": [] + }, + "runtime_files": [] + }, { "id": "defi-protocol-templates", "path": "skills/defi-protocol-templates", @@ -10904,6 +11062,31 @@ }, "runtime_files": [] }, + { + "id": "delegating-to-agents", + "path": "skills/delegating-to-agents", + "targets": { + "codex": "blocked", + "claude": "blocked" + }, + "setup": { + "type": "none", + "summary": "", + "docs": null + }, + "reasons": [ + "target_specific_home_path" + ], + "blocked_reasons": { + "codex": [ + "target_specific_home_path" + ], + "claude": [ + "target_specific_home_path" + ] + }, + "runtime_files": [] + }, { "id": "dependency-management-deps-audit", "path": "skills/dependency-management-deps-audit", @@ -12619,6 +12802,29 @@ }, "runtime_files": [] }, + { + "id": "distribute-skill-to-all-agents", + "path": "skills/distribute-skill-to-all-agents", + "targets": { + "codex": "blocked", + "claude": "supported" + }, + "setup": { + "type": "none", + "summary": "", + "docs": null + }, + "reasons": [ + "target_specific_home_path" + ], + "blocked_reasons": { + "codex": [ + "target_specific_home_path" + ], + "claude": [] + }, + "runtime_files": [] + }, { "id": "distributed-debugging-debug-trace", "path": "skills/distributed-debugging-debug-trace", @@ -13256,6 +13462,25 @@ }, "runtime_files": [] }, + { + "id": "effective-agent-skills", + "path": "skills/effective-agent-skills", + "targets": { + "codex": "supported", + "claude": "supported" + }, + "setup": { + "type": "none", + "summary": "", + "docs": null + }, + "reasons": [], + "blocked_reasons": { + "codex": [], + "claude": [] + }, + "runtime_files": [] + }, { "id": "efficient-web-research", "path": "skills/efficient-web-research", @@ -14155,6 +14380,25 @@ }, "runtime_files": [] }, + { + "id": "fable-safe-prompt", + "path": "skills/fable-safe-prompt", + "targets": { + "codex": "supported", + "claude": "supported" + }, + "setup": { + "type": "none", + "summary": "", + "docs": null + }, + "reasons": [], + "blocked_reasons": { + "codex": [], + "claude": [] + }, + "runtime_files": [] + }, { "id": "faf-context", "path": "skills/faf-context", @@ -14839,6 +15083,25 @@ }, "runtime_files": [] }, + { + "id": "folder-specific-claude-and-agents-md", + "path": "skills/folder-specific-claude-and-agents-md", + "targets": { + "codex": "supported", + "claude": "supported" + }, + "setup": { + "type": "none", + "summary": "", + "docs": null + }, + "reasons": [], + "blocked_reasons": { + "codex": [], + "claude": [] + }, + "runtime_files": [] + }, { "id": "food-database-query", "path": "skills/food-database-query", @@ -16656,6 +16919,25 @@ }, "runtime_files": [] }, + { + "id": "goal-loop", + "path": "skills/goal-loop", + "targets": { + "codex": "supported", + "claude": "supported" + }, + "setup": { + "type": "none", + "summary": "", + "docs": null + }, + "reasons": [], + "blocked_reasons": { + "codex": [], + "claude": [] + }, + "runtime_files": [] + }, { "id": "godot-4-migration", "path": "skills/godot-4-migration", @@ -18794,6 +19076,25 @@ }, "runtime_files": [] }, + { + "id": "interview-style-doc-building", + "path": "skills/interview-style-doc-building", + "targets": { + "codex": "supported", + "claude": "supported" + }, + "setup": { + "type": "none", + "summary": "", + "docs": null + }, + "reasons": [], + "blocked_reasons": { + "codex": [], + "claude": [] + }, + "runtime_files": [] + }, { "id": "invariant-guard", "path": "skills/invariant-guard", @@ -20193,6 +20494,25 @@ }, "runtime_files": [] }, + { + "id": "linkedin-post-writer", + "path": "skills/linkedin-post-writer", + "targets": { + "codex": "supported", + "claude": "supported" + }, + "setup": { + "type": "none", + "summary": "", + "docs": null + }, + "reasons": [], + "blocked_reasons": { + "codex": [], + "claude": [] + }, + "runtime_files": [] + }, { "id": "linkedin-profile-optimizer", "path": "skills/linkedin-profile-optimizer", @@ -21473,6 +21793,25 @@ }, "runtime_files": [] }, + { + "id": "markdown-rendering", + "path": "skills/markdown-rendering", + "targets": { + "codex": "supported", + "claude": "supported" + }, + "setup": { + "type": "none", + "summary": "", + "docs": null + }, + "reasons": [], + "blocked_reasons": { + "codex": [], + "claude": [] + }, + "runtime_files": [] + }, { "id": "market-sizing-analysis", "path": "skills/market-sizing-analysis", @@ -25104,6 +25443,44 @@ }, "runtime_files": [] }, + { + "id": "pi-custom-model", + "path": "skills/pi-custom-model", + "targets": { + "codex": "supported", + "claude": "supported" + }, + "setup": { + "type": "none", + "summary": "", + "docs": null + }, + "reasons": [], + "blocked_reasons": { + "codex": [], + "claude": [] + }, + "runtime_files": [] + }, + { + "id": "pi-web-search", + "path": "skills/pi-web-search", + "targets": { + "codex": "supported", + "claude": "supported" + }, + "setup": { + "type": "none", + "summary": "", + "docs": null + }, + "reasons": [], + "blocked_reasons": { + "codex": [], + "claude": [] + }, + "runtime_files": [] + }, { "id": "pipecat-friday-agent", "path": "skills/pipecat-friday-agent", @@ -26408,6 +26785,25 @@ }, "runtime_files": [] }, + { + "id": "push-skill-to-github", + "path": "skills/push-skill-to-github", + "targets": { + "codex": "supported", + "claude": "supported" + }, + "setup": { + "type": "none", + "summary": "", + "docs": null + }, + "reasons": [], + "blocked_reasons": { + "codex": [], + "claude": [] + }, + "runtime_files": [] + }, { "id": "puzzle-activity-planner", "path": "skills/puzzle-activity-planner", @@ -27073,6 +27469,25 @@ }, "runtime_files": [] }, + { + "id": "read-all-adrs", + "path": "skills/read-all-adrs", + "targets": { + "codex": "supported", + "claude": "supported" + }, + "setup": { + "type": "none", + "summary": "", + "docs": null + }, + "reasons": [], + "blocked_reasons": { + "codex": [], + "claude": [] + }, + "runtime_files": [] + }, { "id": "readme", "path": "skills/readme", @@ -27434,6 +27849,25 @@ }, "runtime_files": [] }, + { + "id": "research-prompt", + "path": "skills/research-prompt", + "targets": { + "codex": "supported", + "claude": "supported" + }, + "setup": { + "type": "none", + "summary": "", + "docs": null + }, + "reasons": [], + "blocked_reasons": { + "codex": [], + "claude": [] + }, + "runtime_files": [] + }, { "id": "resolving-merge-conflicts", "path": "skills/resolving-merge-conflicts", @@ -27776,6 +28210,25 @@ }, "runtime_files": [] }, + { + "id": "run-deep-swe", + "path": "skills/run-deep-swe", + "targets": { + "codex": "supported", + "claude": "supported" + }, + "setup": { + "type": "none", + "summary": "", + "docs": null + }, + "reasons": [], + "blocked_reasons": { + "codex": [], + "claude": [] + }, + "runtime_files": [] + }, { "id": "runapi-cli", "path": "skills/runapi-cli", @@ -29672,6 +30125,25 @@ }, "runtime_files": [] }, + { + "id": "setup-help", + "path": "skills/setup-help", + "targets": { + "codex": "supported", + "claude": "supported" + }, + "setup": { + "type": "none", + "summary": "", + "docs": null + }, + "reasons": [], + "blocked_reasons": { + "codex": [], + "claude": [] + }, + "runtime_files": [] + }, { "id": "setup-matt-pocock-skills", "path": "skills/setup-matt-pocock-skills", @@ -29900,6 +30372,25 @@ }, "runtime_files": [] }, + { + "id": "short", + "path": "skills/short", + "targets": { + "codex": "supported", + "claude": "supported" + }, + "setup": { + "type": "none", + "summary": "", + "docs": null + }, + "reasons": [], + "blocked_reasons": { + "codex": [], + "claude": [] + }, + "runtime_files": [] + }, { "id": "signup-flow-cro", "path": "skills/signup-flow-cro", @@ -32040,6 +32531,25 @@ }, "runtime_files": [] }, + { + "id": "taisly-social-media-posting", + "path": "skills/taisly-social-media-posting", + "targets": { + "codex": "supported", + "claude": "supported" + }, + "setup": { + "type": "none", + "summary": "", + "docs": null + }, + "reasons": [], + "blocked_reasons": { + "codex": [], + "claude": [] + }, + "runtime_files": [] + }, { "id": "tanstack-query-expert", "path": "skills/tanstack-query-expert", @@ -35026,6 +35536,25 @@ }, "runtime_files": [] }, + { + "id": "vps-server-management", + "path": "skills/vps-server-management", + "targets": { + "codex": "supported", + "claude": "supported" + }, + "setup": { + "type": "none", + "summary": "", + "docs": null + }, + "reasons": [], + "blocked_reasons": { + "codex": [], + "claude": [] + }, + "runtime_files": [] + }, { "id": "vscode-extension-guide-en", "path": "skills/vscode-extension-guide-en", @@ -36362,6 +36891,25 @@ }, "runtime_files": [] }, + { + "id": "youtube-transcript", + "path": "skills/youtube-transcript", + "targets": { + "codex": "supported", + "claude": "supported" + }, + "setup": { + "type": "none", + "summary": "", + "docs": null + }, + "reasons": [], + "blocked_reasons": { + "codex": [], + "claude": [] + }, + "runtime_files": [] + }, { "id": "zapier-make-patterns", "path": "skills/zapier-make-patterns", @@ -36516,14 +37064,14 @@ } ], "summary": { - "total_skills": 1901, + "total_skills": 1929, "supported": { - "codex": 1832, - "claude": 1852 + "codex": 1857, + "claude": 1878 }, "blocked": { - "codex": 69, - "claude": 49 + "codex": 72, + "claude": 51 }, "manual_setup": 17 } diff --git a/antigravity-awesome-skills/data/skills_index.json b/antigravity-awesome-skills/data/skills_index.json index 79ae90bc..7575ae3d 100644 --- a/antigravity-awesome-skills/data/skills_index.json +++ b/antigravity-awesome-skills/data/skills_index.json @@ -861,6 +861,28 @@ "reasons": [] } }, + { + "id": "agent-self-scheduling", + "path": "skills/agent-self-scheduling", + "category": "agent-orchestration", + "name": "agent-self-scheduling", + "description": "Schedule AI agent runs with cron, loops, or external clocks while avoiding unsafe tight autonomous timers.", + "risk": "critical", + "source": "community", + "date_added": "2026-07-07", + "plugin": { + "targets": { + "codex": "supported", + "claude": "supported" + }, + "setup": { + "type": "none", + "summary": "", + "docs": null + }, + "reasons": [] + } + }, { "id": "agent-squad", "path": "skills/agent-squad", @@ -2037,6 +2059,28 @@ "reasons": [] } }, + { + "id": "anti-sleep", + "path": "skills/anti-sleep", + "category": "operations", + "name": "anti-sleep", + "description": "Keep a Mac awake with caffeinate during long builds, downloads, or supervised automation runs.", + "risk": "critical", + "source": "community", + "date_added": "2026-07-07", + "plugin": { + "targets": { + "codex": "supported", + "claude": "supported" + }, + "setup": { + "type": "none", + "summary": "", + "docs": null + }, + "reasons": [] + } + }, { "id": "anti-sycophancy", "path": "skills/anti-sycophancy", @@ -7470,6 +7514,28 @@ "reasons": [] } }, + { + "id": "brain-to-docs", + "path": "skills/brain-to-docs", + "category": "productivity", + "name": "brain-to-docs", + "description": "Interview the user to turn project vision and decisions into README and ADR documentation.", + "risk": "critical", + "source": "community", + "date_added": "2026-07-07", + "plugin": { + "targets": { + "codex": "supported", + "claude": "supported" + }, + "setup": { + "type": "none", + "summary": "", + "docs": null + }, + "reasons": [] + } + }, { "id": "brainstorming", "path": "skills/brainstorming", @@ -7844,6 +7910,28 @@ "reasons": [] } }, + { + "id": "browser-harness", + "path": "skills/browser-harness", + "category": "browser-automation", + "name": "browser-harness", + "description": "Drive an existing browser through CDP for authenticated, visual, or interactive web automation.", + "risk": "critical", + "source": "community", + "date_added": "2026-07-07", + "plugin": { + "targets": { + "codex": "supported", + "claude": "supported" + }, + "setup": { + "type": "none", + "summary": "", + "docs": null + }, + "reasons": [] + } + }, { "id": "browser-testing-with-devtools", "path": "skills/browser-testing-with-devtools", @@ -9524,6 +9612,28 @@ "reasons": [] } }, + { + "id": "cmux", + "path": "skills/cmux", + "category": "development", + "name": "cmux", + "description": "Control cmux workspaces, panes, surfaces, and agent sessions safely from macOS terminal workflows.", + "risk": "critical", + "source": "community", + "date_added": "2026-07-07", + "plugin": { + "targets": { + "codex": "supported", + "claude": "supported" + }, + "setup": { + "type": "none", + "summary": "", + "docs": null + }, + "reasons": [] + } + }, { "id": "co-marketing", "path": "skills/co-marketing", @@ -10120,6 +10230,30 @@ "reasons": [] } }, + { + "id": "codex-subagent", + "path": "skills/codex-subagent", + "category": "agent-orchestration", + "name": "codex-subagent", + "description": "Launch Codex CLI as an isolated subagent for bounded coding, review, or verification tasks.", + "risk": "critical", + "source": "community", + "date_added": "2026-07-07", + "plugin": { + "targets": { + "codex": "blocked", + "claude": "blocked" + }, + "setup": { + "type": "none", + "summary": "", + "docs": null + }, + "reasons": [ + "target_specific_home_path" + ] + } + }, { "id": "cold-email", "path": "skills/cold-email", @@ -11994,6 +12128,28 @@ "reasons": [] } }, + { + "id": "cyber-audit", + "path": "skills/cyber-audit", + "category": "security", + "name": "cyber-audit", + "description": "Run read-only exposure checks for security advisories and write a structured local audit report.", + "risk": "safe", + "source": "community", + "date_added": "2026-07-07", + "plugin": { + "targets": { + "codex": "supported", + "claude": "supported" + }, + "setup": { + "type": "none", + "summary": "", + "docs": null + }, + "reasons": [] + } + }, { "id": "cyber-y2k", "path": "skills/design-it/cyber-y2k", @@ -12940,6 +13096,28 @@ "reasons": [] } }, + { + "id": "deepapi", + "path": "skills/deepapi", + "category": "research", + "name": "deepapi", + "description": "Use DeepAPI for supported scraping, research, and email workflows with explicit credentials and approval.", + "risk": "critical", + "source": "community", + "date_added": "2026-07-07", + "plugin": { + "targets": { + "codex": "supported", + "claude": "supported" + }, + "setup": { + "type": "none", + "summary": "", + "docs": null + }, + "reasons": [] + } + }, { "id": "defi-protocol-templates", "path": "skills/defi-protocol-templates", @@ -12984,6 +13162,30 @@ "reasons": [] } }, + { + "id": "delegating-to-agents", + "path": "skills/delegating-to-agents", + "category": "agent-orchestration", + "name": "delegating-to-agents", + "description": "Delegate bounded work to other AI agents while preserving context, ownership, and progress checks.", + "risk": "critical", + "source": "community", + "date_added": "2026-07-07", + "plugin": { + "targets": { + "codex": "blocked", + "claude": "blocked" + }, + "setup": { + "type": "none", + "summary": "", + "docs": null + }, + "reasons": [ + "target_specific_home_path" + ] + } + }, { "id": "dep", "path": "skills/agent-squad/dep", @@ -13916,6 +14118,30 @@ "reasons": [] } }, + { + "id": "distribute-skill-to-all-agents", + "path": "skills/distribute-skill-to-all-agents", + "category": "development", + "name": "distribute-skill-to-all-agents", + "description": "Distribute a skill across configured agent skill folders while respecting local symlink layouts.", + "risk": "critical", + "source": "community", + "date_added": "2026-07-07", + "plugin": { + "targets": { + "codex": "blocked", + "claude": "supported" + }, + "setup": { + "type": "none", + "summary": "", + "docs": null + }, + "reasons": [ + "target_specific_home_path" + ] + } + }, { "id": "distributed-debugging-debug-trace", "path": "skills/distributed-debugging-debug-trace", @@ -14712,6 +14938,28 @@ "reasons": [] } }, + { + "id": "effective-agent-skills", + "path": "skills/effective-agent-skills", + "category": "development", + "name": "effective-agent-skills", + "description": "Author and review high-quality agent skills with triggers, progressive disclosure, and safety notes.", + "risk": "safe", + "source": "community", + "date_added": "2026-07-07", + "plugin": { + "targets": { + "codex": "supported", + "claude": "supported" + }, + "setup": { + "type": "none", + "summary": "", + "docs": null + }, + "reasons": [] + } + }, { "id": "efficient-web-research", "path": "skills/efficient-web-research", @@ -15770,6 +16018,28 @@ "reasons": [] } }, + { + "id": "fable-safe-prompt", + "path": "skills/fable-safe-prompt", + "category": "agent-behavior", + "name": "fable-safe-prompt", + "description": "Rewrite allowed prompts to reduce false-positive safety triggers without bypassing policy or changing intent.", + "risk": "safe", + "source": "community", + "date_added": "2026-07-07", + "plugin": { + "targets": { + "codex": "supported", + "claude": "supported" + }, + "setup": { + "type": "none", + "summary": "", + "docs": null + }, + "reasons": [] + } + }, { "id": "faf-context", "path": "skills/faf-context", @@ -16628,6 +16898,28 @@ "reasons": [] } }, + { + "id": "folder-specific-claude-and-agents-md", + "path": "skills/folder-specific-claude-and-agents-md", + "category": "development", + "name": "folder-specific-claude-and-agents-md", + "description": "Create folder-scoped CLAUDE.md and AGENTS.md guidance for future agents working in that area.", + "risk": "critical", + "source": "community", + "date_added": "2026-07-07", + "plugin": { + "targets": { + "codex": "supported", + "claude": "supported" + }, + "setup": { + "type": "none", + "summary": "", + "docs": null + }, + "reasons": [] + } + }, { "id": "food-database-query", "path": "skills/food-database-query", @@ -18634,6 +18926,28 @@ "reasons": [] } }, + { + "id": "goal-loop", + "path": "skills/goal-loop", + "category": "agent-orchestration", + "name": "goal-loop", + "description": "Draft and explain persistent goal-loop prompts for long-running agent work with clear stop conditions.", + "risk": "safe", + "source": "community", + "date_added": "2026-07-07", + "plugin": { + "targets": { + "codex": "supported", + "claude": "supported" + }, + "setup": { + "type": "none", + "summary": "", + "docs": null + }, + "reasons": [] + } + }, { "id": "godot-4-migration", "path": "skills/godot-4-migration", @@ -21190,6 +21504,28 @@ "reasons": [] } }, + { + "id": "interview-style-doc-building", + "path": "skills/interview-style-doc-building", + "category": "productivity", + "name": "interview-style-doc-building", + "description": "Build structured strategy documents by asking one question at a time and patching the file.", + "risk": "critical", + "source": "community", + "date_added": "2026-07-07", + "plugin": { + "targets": { + "codex": "supported", + "claude": "supported" + }, + "setup": { + "type": "none", + "summary": "", + "docs": null + }, + "reasons": [] + } + }, { "id": "invariant-guard", "path": "skills/invariant-guard", @@ -22780,6 +23116,28 @@ ] } }, + { + "id": "linkedin-post-writer", + "path": "skills/linkedin-post-writer", + "category": "marketing", + "name": "linkedin-post-writer", + "description": "Draft LinkedIn posts from 16 tested hook formulas mapped to engagement goals (comments, reposts, likes, saves), with 2026 algorithm formatting rules and an AI-tell scrub pass before publishing.", + "risk": "none", + "source": "community", + "date_added": "2026-07-06", + "plugin": { + "targets": { + "codex": "supported", + "claude": "supported" + }, + "setup": { + "type": "none", + "summary": "", + "docs": null + }, + "reasons": [] + } + }, { "id": "linkedin-profile-optimizer", "path": "skills/linkedin-profile-optimizer", @@ -24264,6 +24622,28 @@ ] } }, + { + "id": "markdown-rendering", + "path": "skills/markdown-rendering", + "category": "productivity", + "name": "markdown-rendering", + "description": "Open Markdown reliably in cmux panes and recover from blank rendered surfaces.", + "risk": "safe", + "source": "community", + "date_added": "2026-07-07", + "plugin": { + "targets": { + "codex": "supported", + "claude": "supported" + }, + "setup": { + "type": "none", + "summary": "", + "docs": null + }, + "reasons": [] + } + }, { "id": "market-sizing-analysis", "path": "skills/market-sizing-analysis", @@ -28633,6 +29013,50 @@ "reasons": [] } }, + { + "id": "pi-custom-model", + "path": "skills/pi-custom-model", + "category": "operations", + "name": "pi-custom-model", + "description": "Register custom Pi Agent model slugs so saved OpenRouter variants resolve correctly.", + "risk": "critical", + "source": "community", + "date_added": "2026-07-07", + "plugin": { + "targets": { + "codex": "supported", + "claude": "supported" + }, + "setup": { + "type": "none", + "summary": "", + "docs": null + }, + "reasons": [] + } + }, + { + "id": "pi-web-search", + "path": "skills/pi-web-search", + "category": "research", + "name": "pi-web-search", + "description": "Give Pi Agents a safe web-search and fetch workflow using the installed pi-web-access package.", + "risk": "safe", + "source": "community", + "date_added": "2026-07-07", + "plugin": { + "targets": { + "codex": "supported", + "claude": "supported" + }, + "setup": { + "type": "none", + "summary": "", + "docs": null + }, + "reasons": [] + } + }, { "id": "pipecat-friday-agent", "path": "skills/pipecat-friday-agent", @@ -30133,6 +30557,28 @@ "reasons": [] } }, + { + "id": "push-skill-to-github", + "path": "skills/push-skill-to-github", + "category": "development", + "name": "push-skill-to-github", + "description": "Commit and push skill changes to the configured skills repository after review and validation.", + "risk": "critical", + "source": "community", + "date_added": "2026-07-07", + "plugin": { + "targets": { + "codex": "supported", + "claude": "supported" + }, + "setup": { + "type": "none", + "summary": "", + "docs": null + }, + "reasons": [] + } + }, { "id": "puzzle-activity-planner", "path": "skills/puzzle-activity-planner", @@ -30947,6 +31393,28 @@ "reasons": [] } }, + { + "id": "read-all-adrs", + "path": "skills/read-all-adrs", + "category": "productivity", + "name": "read-all-adrs", + "description": "Read every ADR in a project before summarizing architectural context or decisions.", + "risk": "safe", + "source": "community", + "date_added": "2026-07-07", + "plugin": { + "targets": { + "codex": "supported", + "claude": "supported" + }, + "setup": { + "type": "none", + "summary": "", + "docs": null + }, + "reasons": [] + } + }, { "id": "readme", "path": "skills/readme", @@ -31365,6 +31833,28 @@ "reasons": [] } }, + { + "id": "research-prompt", + "path": "skills/research-prompt", + "category": "research", + "name": "research-prompt", + "description": "Turn vague research needs into one precise deep-research prompt with context and output criteria.", + "risk": "safe", + "source": "community", + "date_added": "2026-07-07", + "plugin": { + "targets": { + "codex": "supported", + "claude": "supported" + }, + "setup": { + "type": "none", + "summary": "", + "docs": null + }, + "reasons": [] + } + }, { "id": "resolving-merge-conflicts", "path": "skills/resolving-merge-conflicts", @@ -31849,6 +32339,28 @@ "reasons": [] } }, + { + "id": "run-deep-swe", + "path": "skills/run-deep-swe", + "category": "agent-evaluation", + "name": "run-deep-swe", + "description": "Run reproducible DeepSWE coding-agent benchmark evaluations through OpenRouter and mini-swe-agent.", + "risk": "critical", + "source": "community", + "date_added": "2026-07-07", + "plugin": { + "targets": { + "codex": "supported", + "claude": "supported" + }, + "setup": { + "type": "none", + "summary": "", + "docs": null + }, + "reasons": [] + } + }, { "id": "runapi-cli", "path": "skills/runapi-cli", @@ -34015,6 +34527,28 @@ "reasons": [] } }, + { + "id": "setup-help", + "path": "skills/setup-help", + "category": "productivity", + "name": "setup-help", + "description": "Walk a user through setup or installation one step at a time with the remaining steps visible.", + "risk": "safe", + "source": "community", + "date_added": "2026-07-07", + "plugin": { + "targets": { + "codex": "supported", + "claude": "supported" + }, + "setup": { + "type": "none", + "summary": "", + "docs": null + }, + "reasons": [] + } + }, { "id": "setup-matt-pocock-skills", "path": "skills/setup-matt-pocock-skills", @@ -34279,6 +34813,28 @@ "reasons": [] } }, + { + "id": "short", + "path": "skills/short", + "category": "writing", + "name": "short", + "description": "Rewrite the previous response more briefly while preserving the substance.", + "risk": "safe", + "source": "community", + "date_added": "2026-07-07", + "plugin": { + "targets": { + "codex": "supported", + "claude": "supported" + }, + "setup": { + "type": "none", + "summary": "", + "docs": null + }, + "reasons": [] + } + }, { "id": "signup-flow-cro", "path": "skills/signup-flow-cro", @@ -36519,6 +37075,28 @@ "reasons": [] } }, + { + "id": "taisly-social-media-posting", + "path": "skills/taisly-social-media-posting", + "category": "marketing", + "name": "taisly-social-media-posting", + "description": "Use Taisly Agent Kit to prepare and publish approved short-form video posts across TikTok, Instagram Reels, YouTube Shorts, X, and Facebook.", + "risk": "critical", + "source": "community", + "date_added": "2026-07-07", + "plugin": { + "targets": { + "codex": "supported", + "claude": "supported" + }, + "setup": { + "type": "none", + "summary": "", + "docs": null + }, + "reasons": [] + } + }, { "id": "tanstack-query-expert", "path": "skills/tanstack-query-expert", @@ -40137,6 +40715,28 @@ "reasons": [] } }, + { + "id": "vps-server-management", + "path": "skills/vps-server-management", + "category": "operations", + "name": "vps-server-management", + "description": "Manage authorized VPS hosts and server-side agents through cautious SSH and operations workflows.", + "risk": "critical", + "source": "community", + "date_added": "2026-07-07", + "plugin": { + "targets": { + "codex": "supported", + "claude": "supported" + }, + "setup": { + "type": "none", + "summary": "", + "docs": null + }, + "reasons": [] + } + }, { "id": "vr-ar", "path": "skills/game-development/vr-ar", @@ -41789,6 +42389,28 @@ "reasons": [] } }, + { + "id": "youtube-transcript", + "path": "skills/youtube-transcript", + "category": "research", + "name": "youtube-transcript", + "description": "Fetch YouTube transcripts through DeepAPI or local fallback tooling and save clean text output.", + "risk": "safe", + "source": "community", + "date_added": "2026-07-07", + "plugin": { + "targets": { + "codex": "supported", + "claude": "supported" + }, + "setup": { + "type": "none", + "summary": "", + "docs": null + }, + "reasons": [] + } + }, { "id": "zapier-make-patterns", "path": "skills/zapier-make-patterns", diff --git a/antigravity-awesome-skills/docs/integrations/jetski-cortex.md b/antigravity-awesome-skills/docs/integrations/jetski-cortex.md index 4ddc32cf..bbaf2219 100644 --- a/antigravity-awesome-skills/docs/integrations/jetski-cortex.md +++ b/antigravity-awesome-skills/docs/integrations/jetski-cortex.md @@ -1,9 +1,9 @@ --- title: Jetski/Cortex + Gemini Integration Guide -description: "Use antigravity-awesome-skills with Jetski/Cortex without hitting context-window overflow with 1,901+ skills." +description: "Use antigravity-awesome-skills with Jetski/Cortex without hitting context-window overflow with 1,929+ skills." --- -# Jetski/Cortex + Gemini: safe integration with 1,901+ skills +# Jetski/Cortex + Gemini: safe integration with 1,929+ skills This guide shows how to integrate the `antigravity-awesome-skills` repository with an agent based on **Jetski/Cortex + Gemini** (or similar frameworks) **without exceeding the model context window**. @@ -23,7 +23,7 @@ Never do: - concatenate all `SKILL.md` content into a single system prompt; - re-inject the entire library for **every** request. -With 1,901+ skills, this approach fills the context window before user messages are even added, causing truncation. +With 1,929+ skills, this approach fills the context window before user messages are even added, causing truncation. --- diff --git a/antigravity-awesome-skills/docs/integrations/jetski-gemini-loader/README.md b/antigravity-awesome-skills/docs/integrations/jetski-gemini-loader/README.md index 887045d7..1092e051 100644 --- a/antigravity-awesome-skills/docs/integrations/jetski-gemini-loader/README.md +++ b/antigravity-awesome-skills/docs/integrations/jetski-gemini-loader/README.md @@ -21,7 +21,7 @@ This example shows one way to integrate **antigravity-awesome-skills** with a Je - How to enforce a **maximum number of skills per turn** via `maxSkillsPerTurn`. - How to choose whether to **truncate or error** when too many skills are requested via `overflowBehavior`. -This pattern avoids context overflow when you have 1,901+ skills installed. +This pattern avoids context overflow when you have 1,929+ skills installed. Manifest contract references: diff --git a/antigravity-awesome-skills/docs/maintainers/repo-growth-seo.md b/antigravity-awesome-skills/docs/maintainers/repo-growth-seo.md index ec90edb6..bb993171 100644 --- a/antigravity-awesome-skills/docs/maintainers/repo-growth-seo.md +++ b/antigravity-awesome-skills/docs/maintainers/repo-growth-seo.md @@ -6,7 +6,7 @@ This document keeps the repository's GitHub-facing discovery copy aligned with t Preferred positioning: -> Installable GitHub library of 1,901+ agentic skills for Claude Code, Cursor, Codex CLI, Gemini CLI, Antigravity, and other AI coding assistants. +> Installable GitHub library of 1,929+ agentic skills for Claude Code, Cursor, Codex CLI, Gemini CLI, Antigravity, and other AI coding assistants. Key framing: @@ -20,7 +20,7 @@ Key framing: Preferred description: -> Installable GitHub library of 1,901+ agentic skills for Claude Code, Cursor, Codex CLI, Gemini CLI, Antigravity, and more. Includes installer CLI, bundles, workflows, and official/community skill collections. +> Installable GitHub library of 1,929+ agentic skills for Claude Code, Cursor, Codex CLI, Gemini CLI, Antigravity, and more. Includes installer CLI, bundles, workflows, and official/community skill collections. Preferred homepage: @@ -28,7 +28,7 @@ Preferred homepage: Preferred social preview: -- use a clean preview image that says `1,901+ Agentic Skills`; +- use a clean preview image that says `1,929+ Agentic Skills`; - mention Claude Code, Cursor, Codex CLI, and Gemini CLI; - avoid dense text and tiny logos that disappear in social cards. diff --git a/antigravity-awesome-skills/docs/maintainers/skills-update-guide.md b/antigravity-awesome-skills/docs/maintainers/skills-update-guide.md index 4e1490c3..c277d43f 100644 --- a/antigravity-awesome-skills/docs/maintainers/skills-update-guide.md +++ b/antigravity-awesome-skills/docs/maintainers/skills-update-guide.md @@ -72,7 +72,7 @@ The update process refreshes: - Canonical skills index (`skills_index.json`) - Compatibility mirror (`data/skills_index.json`) - Web app skills data (`apps\web-app\public\skills.json`) -- All 1,901+ skills from the skills directory +- All 1,929+ skills from the skills directory ## When to Update diff --git a/antigravity-awesome-skills/docs/users/bundles.md b/antigravity-awesome-skills/docs/users/bundles.md index 86733711..466062f1 100644 --- a/antigravity-awesome-skills/docs/users/bundles.md +++ b/antigravity-awesome-skills/docs/users/bundles.md @@ -1061,4 +1061,4 @@ Found a skill that should be in a bundle? Or want to create a new bundle? [Open --- -_Last updated: June 2026 | Total Skills: 1,901+ | Total Bundles: 59_ +_Last updated: June 2026 | Total Skills: 1,929+ | Total Bundles: 59_ diff --git a/antigravity-awesome-skills/docs/users/claude-code-skills.md b/antigravity-awesome-skills/docs/users/claude-code-skills.md index 6a4bad2c..e3aafc8c 100644 --- a/antigravity-awesome-skills/docs/users/claude-code-skills.md +++ b/antigravity-awesome-skills/docs/users/claude-code-skills.md @@ -12,7 +12,7 @@ Install the library into Claude Code, then invoke focused skills directly in the ## Why use this repo for Claude Code -- It includes 1,901+ skills instead of a narrow single-domain starter pack. +- It includes 1,929+ skills instead of a narrow single-domain starter pack. - It supports the standard `.claude/skills/` path and the Claude Code plugin marketplace flow. - It also ships generated bundle plugins so teams can install focused packs like `Essentials` or `Security Developer` from the marketplace metadata. - It includes onboarding docs, bundles, and workflows so new users do not need to guess where to begin. diff --git a/antigravity-awesome-skills/docs/users/gemini-cli-skills.md b/antigravity-awesome-skills/docs/users/gemini-cli-skills.md index a59f7f62..b21aad04 100644 --- a/antigravity-awesome-skills/docs/users/gemini-cli-skills.md +++ b/antigravity-awesome-skills/docs/users/gemini-cli-skills.md @@ -12,7 +12,7 @@ Install into the Gemini skills path, then ask Gemini to apply one skill at a tim - It installs directly into the expected Gemini skills path. - It includes both core software engineering skills and deeper agent/LLM-oriented skills. -- It helps new users get started with bundles and workflows rather than forcing a cold start from 1,901+ files. +- It helps new users get started with bundles and workflows rather than forcing a cold start from 1,929+ files. - It is useful whether you want a broad internal skill library or a single repo to test many workflows quickly. ## Install Gemini CLI Skills diff --git a/antigravity-awesome-skills/docs/users/getting-started.md b/antigravity-awesome-skills/docs/users/getting-started.md index 14226f4c..099971e6 100644 --- a/antigravity-awesome-skills/docs/users/getting-started.md +++ b/antigravity-awesome-skills/docs/users/getting-started.md @@ -1,4 +1,4 @@ -# Getting Started with Antigravity Awesome Skills (V13.11.0) +# Getting Started with Antigravity Awesome Skills (V13.12.0) **New here? This guide will help you supercharge your AI Agent in 5 minutes.** diff --git a/antigravity-awesome-skills/docs/users/kiro-integration.md b/antigravity-awesome-skills/docs/users/kiro-integration.md index 4add562c..e2d89182 100644 --- a/antigravity-awesome-skills/docs/users/kiro-integration.md +++ b/antigravity-awesome-skills/docs/users/kiro-integration.md @@ -18,7 +18,7 @@ Kiro is AWS's agentic AI IDE that combines: Kiro's agentic capabilities are enhanced by skills that provide: -- **Domain expertise** across 1,901+ specialized areas +- **Domain expertise** across 1,929+ specialized areas - **Best practices** from Anthropic, OpenAI, Google, Microsoft, and AWS - **Workflow automation** for common development tasks - **AWS-specific patterns** for serverless, infrastructure, and cloud architecture diff --git a/antigravity-awesome-skills/docs/users/usage.md b/antigravity-awesome-skills/docs/users/usage.md index 683b6356..ebc9399b 100644 --- a/antigravity-awesome-skills/docs/users/usage.md +++ b/antigravity-awesome-skills/docs/users/usage.md @@ -14,7 +14,7 @@ If you came in through a **Claude Code** or **Codex** plugin instead of a full l When you ran `npx antigravity-awesome-skills` or cloned the repository, you: -✅ **Downloaded 1,901+ skill files** to your computer (default: `~/.agents/skills/`; or a custom path like `~/.agent/skills/` if you used `--path`) +✅ **Downloaded 1,929+ skill files** to your computer (default: `~/.agents/skills/`; or a custom path like `~/.agent/skills/` if you used `--path`) ✅ **Made them available** to your AI assistant ❌ **Did NOT enable them all automatically** (they're just sitting there, waiting) @@ -34,7 +34,7 @@ Bundles are **curated groups** of skills organized by role. They help you decide **Analogy:** -- You installed a toolbox with 1,901+ tools (✅ done) +- You installed a toolbox with 1,929+ tools (✅ done) - Bundles are like **labeled organizer trays** saying: "If you're a carpenter, start with these 10 tools" - You can either **pick skills from the tray** or install that tray as a focused marketplace bundle plugin @@ -212,7 +212,7 @@ Let's actually use a skill right now. Follow these steps: ## Step 5: Picking Your First Skills (Practical Advice) -Don't try to use all 1,901+ skills at once. Here's a sensible approach: +Don't try to use all 1,929+ skills at once. Here's a sensible approach: If you want a tool-specific starting point before choosing skills, use: @@ -343,7 +343,7 @@ Usually no, but if your AI doesn't recognize a skill: ### "Can I load all skills into the model at once?" -No. Even though you have 1,901+ skills installed locally, you should **not** concatenate every `SKILL.md` into a single system prompt or context block. +No. Even though you have 1,929+ skills installed locally, you should **not** concatenate every `SKILL.md` into a single system prompt or context block. The intended pattern is: diff --git a/antigravity-awesome-skills/docs/users/visual-guide.md b/antigravity-awesome-skills/docs/users/visual-guide.md index 46f8026a..14a038c2 100644 --- a/antigravity-awesome-skills/docs/users/visual-guide.md +++ b/antigravity-awesome-skills/docs/users/visual-guide.md @@ -34,7 +34,7 @@ antigravity-awesome-skills/ ├── 📄 CONTRIBUTING.md ← Contributor workflow ├── 📄 CATALOG.md ← Full generated catalog │ -├── 📁 skills/ ← 1,901+ skills live here +├── 📁 skills/ ← 1,929+ skills live here │ │ │ ├── 📁 brainstorming/ │ │ └── 📄 SKILL.md ← Skill definition @@ -47,7 +47,7 @@ antigravity-awesome-skills/ │ │ └── 📁 2d-games/ │ │ └── 📄 SKILL.md ← Nested skills also supported │ │ -│ └── ... (1,901+ total) +│ └── ... (1,929+ total) │ ├── 📁 apps/ │ └── 📁 web-app/ ← Interactive browser @@ -100,7 +100,7 @@ antigravity-awesome-skills/ ``` ┌─────────────────────────┐ - │ 1,901+ SKILLS │ + │ 1,929+ SKILLS │ └────────────┬────────────┘ │ ┌────────────────────────┼────────────────────────┐ @@ -201,7 +201,7 @@ If you want a workspace-style manual install instead, cloning into `.agent/skill │ ├── 📁 brainstorming/ │ │ ├── 📁 stripe-integration/ │ │ ├── 📁 react-best-practices/ │ -│ └── ... (1,901+ total) │ +│ └── ... (1,929+ total) │ └─────────────────────────────────────────┘ ``` diff --git a/antigravity-awesome-skills/package-lock.json b/antigravity-awesome-skills/package-lock.json index 2fe793db..7aa7cc74 100644 --- a/antigravity-awesome-skills/package-lock.json +++ b/antigravity-awesome-skills/package-lock.json @@ -1,12 +1,12 @@ { "name": "antigravity-awesome-skills", - "version": "13.11.0", + "version": "13.12.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "antigravity-awesome-skills", - "version": "13.11.0", + "version": "13.12.0", "license": "MIT", "dependencies": { "sanitize-filename": "^1.6.4", diff --git a/antigravity-awesome-skills/package.json b/antigravity-awesome-skills/package.json index d82028d2..ed4e1944 100644 --- a/antigravity-awesome-skills/package.json +++ b/antigravity-awesome-skills/package.json @@ -1,7 +1,7 @@ { "name": "antigravity-awesome-skills", - "version": "13.11.0", - "description": "1,901+ agentic skills for Claude Code, Gemini CLI, Cursor, Antigravity & more. Installer CLI.", + "version": "13.12.0", + "description": "1,929+ agentic skills for Claude Code, Gemini CLI, Cursor, Antigravity & more. Installer CLI.", "license": "MIT", "scripts": { "validate": "node tools/scripts/run-python.js tools/scripts/validate_skills.py", diff --git a/antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/.claude-plugin/plugin.json b/antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/.claude-plugin/plugin.json index dea9a819..713b1f41 100644 --- a/antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/.claude-plugin/plugin.json +++ b/antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/.claude-plugin/plugin.json @@ -1,7 +1,7 @@ { "name": "antigravity-awesome-skills", - "version": "13.11.0", - "description": "Plugin-safe Claude Code distribution of Antigravity Awesome Skills with 1,852 supported skills.", + "version": "13.12.0", + "description": "Plugin-safe Claude Code distribution of Antigravity Awesome Skills with 1,878 supported skills.", "author": { "name": "sickn33 and contributors", "url": "https://github.com/sickn33/antigravity-awesome-skills" diff --git a/antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/agent-self-scheduling/SKILL.md b/antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/agent-self-scheduling/SKILL.md new file mode 100644 index 00000000..743f3371 --- /dev/null +++ b/antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/agent-self-scheduling/SKILL.md @@ -0,0 +1,88 @@ +--- +name: agent-self-scheduling +description: "Schedule AI agent runs with cron, loops, or external clocks while avoiding unsafe tight autonomous timers." +category: agent-orchestration +risk: critical +source: community +source_repo: davidondrej/skills +source_type: community +date_added: "2026-07-07" +author: davidondrej +tags: [agents, scheduling, automation, cron] +tools: [claude, codex] +license: "MIT" +license_source: "https://github.com/davidondrej/skills/blob/main/LICENSE" +--- + +# Agent Self-Scheduling + +## When to Use + +- Use when the user asks for recurring, scheduled, heartbeat, or looped agent work. +- Use when you need to choose between cron, external schedulers, hooks, or built-in agent scheduling. + +First question: does the agent have a built-in scheduler (Hermes → Camp B), or do you own the clock (everything else → Camp A)? + +Universal floor: cron is 1 minute minimum (5-field expr, no seconds) — every camp. For sub-minute you MUST use a `while ...; sleep N; done` loop, a TS extension, or an event hook. Never put an LLM on a tight timer. + +## Camp A — one-shot agents, you own the clock + +These run once and exit (amnesiac unless resumed). Schedule them externally. + +```bash +claude -p "PROMPT" --output-format json --allowedTools "Read,Edit,Bash" # Claude Code +codex exec --json "PROMPT" # Codex +pi run "PROMPT" # Pi +``` + +Wrap in a clock: + +```bash +# 1. cron (>= 1 min floor) +*/10 * * * * cd /path/to/project && pi run "check X and report" >> ~/agent.log 2>&1 +# 2. systemd timer (Linux, survives reboot, better logging) — OnUnitActiveSec=10min +# 3. dumb loop (sub-minute, or no cron available) +while true; do pi run "check X"; sleep 30; done +``` + +Gotchas (each breaks unattended runs if ignored): +- **Permissions hang forever.** Pass `--allowedTools` (Claude) or sandbox/auto-approve flags (Codex), or the run blocks on a prompt. +- **Use JSON output** (`--output-format json` / `--json`) so the wrapper parses results deterministically. +- **Runs are amnesiac.** Resume (`codex exec resume --last`) or persist state to a file the next run reads. + +Pi has NO built-in scheduler/loop/heartbeat by design — external clock only (or a TS extension for agent-side timers). + +### cmux — orchestration only, NO scheduler + +cmux has no timer/watch/cron. Three ways to loop it: orchestrator-driven (`send` → `sleep` → `read-screen` on your own clock), a dumb while-sleep wrapper, or — preferred — event-driven via `cmux notify` + OSC terminal hooks, which is cheaper and more responsive than polling. `read-screen` is non-interruptive, safe to poll. + +If a loop checks another agent, send the user a one-line status each check: what the agent is doing, on track or not. (Claude Code may prefill a predicted next user message after finishing — that's Claude, not the user.) + +## Camp B — Hermes built-in scheduler + +Hermes' gateway ticks every 60s and runs due jobs in fresh isolated sessions. State-check first: + +```bash +hermes gateway install # user-level ( --system to survive reboot) +hermes cron create "every 1h" "summarize new emails and report" --skill himalaya +hermes cron create "0 9 * * *" "post daily standup" # cron expr +hermes cron create "30m" "one-shot reminder in 30 min" # one-shot delay +``` + +Hermes-unique: **zero-token mode** (run a script, deliver stdout verbatim — use for watchdogs), **chaining** (`context_from` pipes one job's output into the next), **self-terminating loops**, and **loop safety** (scheduled sessions cannot create more cron jobs — don't schedule from inside a scheduled job). Each run is a fresh session: the prompt must carry all context. + +## Heartbeat pattern + +One fast recurring tick gates many slower per-task checks: the tick reads a task list + per-task `last_run` timestamps and only acts on tasks that are due. In Hermes use a recurring job (zero-token mode when nothing's due); in Camp A use a while-sleep loop. Define active-hours, and stay silent when nothing is due — no empty noise. + +## Verify it fires (before reporting success) + +1. Camp A: log file grows after one interval, or run the wrapped command once by hand → clean JSON, exit 0. +2. Camp B: `hermes cron list` shows the job + sane `next_run`; trigger a run-now to confirm delivery. +3. Confirm permission/sandbox flags are present — the #1 silent failure is a hung permission prompt. +4. Heartbeats: confirm a nothing-due tick stays silent. + +## Limitations + +- Adapted from `davidondrej/skills`; verify local paths, tools, credentials, and agent features before acting. +- For commands, remote access, scheduling, browser automation, or file-changing workflows, get explicit user approval and confirm the target environment first. diff --git a/antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/anti-sleep/SKILL.md b/antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/anti-sleep/SKILL.md new file mode 100644 index 00000000..d180fbe6 --- /dev/null +++ b/antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/anti-sleep/SKILL.md @@ -0,0 +1,90 @@ +--- +name: anti-sleep +description: "Keep a Mac awake with caffeinate during long builds, downloads, or supervised automation runs." +category: operations +risk: critical +source: community +source_repo: davidondrej/skills +source_type: community +date_added: "2026-07-07" +author: davidondrej +tags: [macos, caffeinate, operations] +tools: [claude, codex] +license: "MIT" +license_source: "https://github.com/davidondrej/skills/blob/main/LICENSE" +--- + +# Anti-Sleep (macOS caffeinate) + +## When to Use + +- Use when the user wants the Mac to stay awake during a long supervised task. +- Use when a build, download, or automation run should not be interrupted by sleep. + +Keep the Mac awake using the built-in `caffeinate` command. No install needed. + +## Quick start — the standard command + +```bash +caffeinate -d -i -t 7200 # full power: screen stays on + no idle sleep, for 2 hours +``` + +Duration is `-t `: 2h = 7200, 7h = 25200, overnight (9h) = 32400. + +## Aggressiveness levels + +| Flags | Effect | +|---|---| +| `-i` | prevents idle **system** sleep only (screen may still dim/lock) | +| `-d` | prevents **display** sleep (screen stays on) | +| `-d -i` | **default choice** — screen on + system awake | +| `-d -i -s` | adds `-s`: prevents sleep even on AC power semantics; `-s` only works when plugged in | +| `-u -t 1` | simulates user activity — wakes the display right now | + +Default to `-d -i -t ` unless the user says otherwise. + +## Tie to a process instead of a timer + +```bash +caffeinate -d -i -w # stays awake until that process exits (great for builds) +caffeinate -i npm run build # wraps a command; exits when the command finishes +``` + +## Run it in a visible terminal (cmux pane) + +Prefer running it in the user's own terminal pane so it's visible and easy to Ctrl+C. In cmux (read the `cmux` skill first if interacting with panes): + +```bash +cmux send --surface surface: "caffeinate -d -i -t 25200\n" +``` + +Otherwise run it as a background Bash task. Never block your own foreground shell with it. + +## Verify and monitor + +```bash +pgrep -fl caffeinate # is it running? shows exact flags +ps -o etime= -p # how long it's been running +pmset -g assertions | grep -i deny # confirm sleep assertions are active +``` + +**Gotcha:** `caffeinate` prints nothing and holds the prompt — it looks "stuck" or like Enter wasn't pressed. It isn't stuck. Verify with `pgrep`, not by looking at the terminal. + +**Expiry:** with `-t` it exits silently when time runs out — no notification. If the user asks "is it still on?" after hours, check `pgrep` first; it may simply have expired. + +## Keyboard backlight + +`caffeinate` cannot keep the keyboard backlight on — it has its own inactivity timer with no CLI/API on Apple Silicon (researched 2026-07). Fix is manual, one-time: System Settings > Keyboard > "Turn keyboard backlight off after inactivity" > Never. + +## Stop early + +```bash +pkill -f "caffeinate -d -i" # or Ctrl+C in the pane running it +``` + +After starting: confirm to the user the PID, the flags, and the wall-clock time it will expire. + +## Limitations + +- Adapted from `davidondrej/skills`; verify local paths, tools, credentials, and agent features before acting. +- For commands, remote access, scheduling, browser automation, or file-changing workflows, get explicit user approval and confirm the target environment first. diff --git a/antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/brain-to-docs/SKILL.md b/antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/brain-to-docs/SKILL.md new file mode 100644 index 00000000..f6b2bd48 --- /dev/null +++ b/antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/brain-to-docs/SKILL.md @@ -0,0 +1,54 @@ +--- +name: brain-to-docs +description: "Interview the user to turn project vision and decisions into README and ADR documentation." +category: productivity +risk: critical +source: community +source_repo: davidondrej/skills +source_type: community +date_added: "2026-07-07" +author: davidondrej +tags: [documentation, adr, planning] +tools: [claude, codex] +license: "MIT" +license_source: "https://github.com/davidondrej/skills/blob/main/LICENSE" +--- + +# brain-to-docs + +## When to Use + +- Use when the user wants to extract project vision, decisions, or preferences into durable docs. +- Use when README and ADRs should be built through a back-and-forth interview. + +The whole purpose: extract as much of the user's taste, judgment, knowledge, vision, +preferences, and decisions as possible into text — saved as clear, concise +markdown docs for the project. README holds the vision; `docs/adr/` holds the +decisions. + +## The loop + +1. **Check docs first, every time.** Read `docs/adr/` (and `README.md`) before + doing anything — other agents and people add/edit ADRs constantly. +2. **Ask 5 different questions** in plain text (never a questions UI) — default 5 + unless the user asks for a different number. Make them high-variety: a wide, + creative spectrum of unique angles, not all the same type (e.g. not all "tech + stack" or all "product" or all "monetization"). Exception: if the user asks for a + specific focus area, follow it. The user answers whichever they find most useful. +3. **Update docs after EVERY answer** — no exceptions. You decide whether it + updates `README.md` or becomes a new ADR — whatever makes sense. +4. Repeat until the user says "we're done" (or similar). + +## Rules + +- All answers & responses during this "brain to docs" process must be VERY + CONCISE, all sentences should be SHORT, and everything should be written in + PLAIN ENGLISH. +- ADRs: short, numbered `NNNN-slug.md`, Status + Context + Decision + Consequences. +- README: vision only. Decisions go in ADRs. +- Don't challenge the user's thinking unless they ask, or they're making a severe mistake. + +## Limitations + +- Adapted from `davidondrej/skills`; verify local paths, tools, credentials, and agent features before acting. +- For commands, remote access, scheduling, browser automation, or file-changing workflows, get explicit user approval and confirm the target environment first. diff --git a/antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/browser-harness/SKILL.md b/antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/browser-harness/SKILL.md new file mode 100644 index 00000000..a442aeb1 --- /dev/null +++ b/antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/browser-harness/SKILL.md @@ -0,0 +1,220 @@ +--- +name: browser-harness +description: "Drive an existing browser through CDP for authenticated, visual, or interactive web automation." +category: browser-automation +risk: critical +source: community +source_repo: davidondrej/skills +source_type: community +date_added: "2026-07-07" +author: davidondrej +tags: [browser, cdp, automation, scraping] +tools: [claude, codex] +license: "MIT" +license_source: "https://github.com/davidondrej/skills/blob/main/LICENSE" +--- + +# browser-harness + +## When to Use + +- Use when a task needs a real logged-in browser, visible interaction, or JS-heavy page control. +- Use when static fetches are insufficient and CDP browser automation is appropriate. + +Direct browser control via CDP. For task-specific edits, use `agent-workspace/agent_helpers.py`. For setup, install, or connection problems, read install.md. + +**Routing check first:** if the task needs no interaction (no clicks, logins, or forms) and you just want page content, use DeepAPI `POST /v1/scrape/website` instead of driving a browser — see the `deepapi` skill. Use browser-harness when the task needs a real browser: interaction, JS-heavy flows, logged-in sessions, or visual verification. + +Domain skills (community-contributed per-site playbooks under `agent-workspace/domain-skills/`) are off by default. Set `BH_DOMAIN_SKILLS=1` to enable them; see the bottom section. + +**If `BH_DOMAIN_SKILLS=1` and the task is site-specific, read every file in the matching `agent-workspace/domain-skills//` directory before inventing an approach.** + +## Usage + +```bash +browser-harness -c ' +new_tab("https://docs.browser-use.com") +wait_for_load() +print(page_info()) +' +``` + +- Invoke as browser-harness — it's on $PATH. No cd, no uv run. +- First navigation is new_tab(url), not goto_url(url) — goto runs in the user's active tab and clobbers their work. + +## Tool call shape + +```bash +browser-harness -c ' +# any python. helpers pre-imported. daemon auto-starts. +' +``` + +run.py calls ensure_daemon() before exec — you never start/stop manually unless you want to. + +### Remote browsers + +Use remote for parallel sub-agents (each gets its own isolated browser via a distinct BU_NAME) or on a headless server. BROWSER_USE_API_KEY must be set. start_remote_daemon, list_cloud_profiles, list_local_profiles, sync_local_profile are pre-imported. + +When supervising those sub-agents, after each check send the user one very short status line: what they are doing and whether they are on track. + +Claude Code cmux note: after Claude finishes, it may prefill a predicted next user message; that draft is Claude, not the user speaking. + +```bash +browser-harness -c ' +start_remote_daemon("work") # default — clean browser, no profile +# start_remote_daemon("work", profileName="my-work") # reuse a cloud profile (already logged in) +# start_remote_daemon("work", profileId="") # same, but by UUID +# start_remote_daemon("work", proxyCountryCode="de", timeout=120) # DE proxy, 2-hour timeout +# start_remote_daemon("work", proxyCountryCode=None) # disable the Browser Use proxy +' + +BU_NAME=work browser-harness -c ' +new_tab("https://example.com") +print(page_info()) +' +``` + +start_remote_daemon prints liveUrl and auto-opens it in the local browser (if a GUI is detected) so the user can watch along. Headless servers print only — share the URL with the user. The daemon PATCHes the cloud browser to stop on shutdown, which persists profile state. Running remote daemons bill until timeout. + +Profiles (cookies-only login state) live in interaction-skills/profile-sync.md — covers list_cloud_profiles(), the chat-driven "which profile?" pattern, and sync_local_profile() for uploading a local Chrome profile. + +## Interaction skills + +If you start struggling with a specific mechanic while navigating, look in interaction-skills/ for helpers. They cover reusable UI mechanics like dialogs, tabs, dropdowns, iframes, and uploads. The available interaction skills are: +- connection.md +- cookies.md +- cross-origin-iframes.md +- dialogs.md +- downloads.md +- drag-and-drop.md +- dropdowns.md +- iframes.md +- network-requests.md +- print-as-pdf.md +- profile-sync.md +- screenshots.md +- scrolling.md +- shadow-dom.md +- tabs.md +- uploads.md +- viewport.md + +## What actually works + +- Screenshots first: use capture_screenshot() to understand the current page quickly, find visible targets, and decide whether you need a click, a selector, or more navigation. +- Clicking: capture_screenshot() → read the pixel off the image → click_at_xy(x, y) → capture_screenshot() to verify. Suppress the Playwright-habit reflex of "locate first, then click" — no getBoundingClientRect, no selector hunt. Drop to DOM only when the target has no visible geometry (hidden input, 0×0 node). Hit-testing happens in Chrome's browser process, so clicks go through iframes / shadow DOM / cross-origin without extra work. +- Bulk HTTP: http_get(url) + ThreadPoolExecutor. No browser for static pages (249 Netflix pages in 2.8s). +- After goto: wait_for_load(). +- Wrong/stale tab: ensure_real_tab(). Use it when the current tab is stale or internal; the daemon also auto-recovers from stale sessions on the next call. +- Verification: print(page_info()) is the simplest "is this alive?" check, but screenshots are the default way to verify whether a visible action actually worked. +- DOM reads: use js(...) for inspection and extraction when the screenshot shows that coordinates are the wrong tool. +- Iframe sites (Azure blades, Salesforce): click_at_xy(x, y) passes through; only drop to iframe DOM work when coordinate clicks are the wrong tool. +- Auth wall: redirected to login → stop and ask the user. Don't type credentials from screenshots. +- Raw CDP for anything helpers don't cover: cdp("Domain.method", params). + +## Design constraints + +- Coordinate clicks default. Input.dispatchMouseEvent goes through iframes/shadow/cross-origin at the compositor level. +- Connect to the user's running Chrome. Don't launch your own browser. +- cdp-use is only for CDPClient.send_raw. Prefer raw CDP strings over typed wrappers. +- run.py stays tiny. No argparse, subcommands, or extra control layer. +- Core helpers stay short. Put task-specific helper additions in `agent-workspace/agent_helpers.py`; daemon/bootstrap and remote session admin live in the core package. +- Don't add a manager layer. No retries framework, session manager, daemon supervisor, config system, or logging framework. + +## Hermes Agent integration + +Installed at `~/Developer/browser-harness` as editable `uv tool install -e .`. Binary at `~/.local/bin/browser-harness`. Skill at `~/.hermes/skills/browser-harness/`. + +**Frontmatter pitfall:** The upstream SKILL.md ships with `name: browser` in frontmatter, which collides with Hermes's built-in `browser` toolset. When copying into `~/.hermes/skills/`, rename to `name: browser-harness` in the frontmatter or Hermes will shadow/conflict with its own browser tools. + +**Brave Browser:** Works identically to Chrome. Enable remote debugging at `brave://inspect/#remote-debugging` (same checkbox). The harness auto-discovers Brave's profile directory. + +## Authenticated content extraction (proven pattern) + +browser-harness connects to the user's real browser with their active sessions — ideal for extracting content from login-walled sites where `web_extract` or Hermes's built-in `browser_navigate` fail (e.g. X/Twitter articles, LinkedIn, paywalled sites). + +**Pattern:** +```bash +browser-harness -c ' +new_tab("https://x.com/user/status/123456") +wait_for_load() +import time +time.sleep(5) # let JS-heavy pages render +text = js(""" + const article = document.querySelector("article"); + if (article) return article.innerText; + return document.body.innerText; +""") +with open("/tmp/extracted.txt", "w") as f: + f.write(text) +print("Written", len(text), "chars") +' +``` + +- Write to a temp file to avoid shell escaping issues with large text +- Use `time.sleep()` generously for JS-heavy SPAs (X, LinkedIn need 3-5s) +- X/Twitter articles render inline — just scroll/extract via DOM, no extra click needed +- For very long pages, `js(...)` with `innerText` grabs everything including below-fold content + +## Hermes Agent integration + +Installed at `~/Developer/browser-harness` as editable `uv tool install -e .`. Binary at `~/.local/bin/browser-harness`. Skill at `~/.hermes/skills/browser-harness/`. + +**Frontmatter pitfall:** The upstream SKILL.md ships with `name: browser` in frontmatter, which collides with Hermes's built-in `browser` toolset. When copying into `~/.hermes/skills/`, rename to `name: browser-harness` in the frontmatter. + +**Brave Browser:** Works identically to Chrome. Enable remote debugging at `brave://inspect/#remote-debugging` (same checkbox). The harness auto-discovers Brave's profile directory. + +## Authenticated content extraction (proven pattern) + +browser-harness connects to the user's real browser with active sessions — ideal for login-walled sites where `web_extract` or Hermes's built-in `browser_navigate` fail (X/Twitter articles, LinkedIn, paywalled sites). + +```bash +browser-harness -c ' +new_tab("https://x.com/user/status/123456") +wait_for_load() +import time +time.sleep(5) # let JS-heavy pages render +text = js(""" + const article = document.querySelector("article"); + if (article) return article.innerText; + return document.body.innerText; +""") +with open("/tmp/extracted.txt", "w") as f: + f.write(text) +print("Written", len(text), "chars") +' +``` + +- Write to a temp file to avoid shell escaping issues with large text +- Use `time.sleep()` generously for JS-heavy SPAs (X, LinkedIn need 3-5s) +- X/Twitter articles render inline — just scroll/extract via DOM, no extra click needed +- `js(...)` with `innerText` grabs everything including below-fold content + +## Gotchas (field-tested) + +- **Brave Browser** uses `brave://inspect/#remote-debugging` instead of `chrome://inspect/...`. The harness auto-discovers Brave's data dir. +- Login-walled content extraction (e.g. X/Twitter articles): navigate with `new_tab(url)`, `wait_for_load()`, then extract via `js("document.querySelector('article').innerText")`. Write to a temp file to avoid shell escaping: `with open('/tmp/out.txt', 'w') as f: f.write(text)`. The user's existing browser session handles auth automatically. +- Omnibox popups are fake page targets. Filter chrome://omnibox-popup... and other internals when you need a real tab. +- CDP target order != Chrome's visible tab-strip order. Use UI automation when the user means "the first/second tab I can see"; Target.activateTarget only shows a known target. +- Default daemon sessions can go stale. ensure_real_tab() re-attaches to a real page. +- Browser Use API is camelCase on the wire. cdpUrl, proxyCountryCode, etc. +- Remote cdpUrl is HTTPS, not ws. Resolve the websocket URL via /json/version. +- Stop cloud browsers with PATCH /browsers/{id} + {"action":"stop"}. +- After every meaningful action, re-screenshot before assuming it worked. Use the image to verify changed state, open menus, navigation, visible errors, and whether the page is in the state you expected. +- Use screenshots to drive exploration. They are often the fastest way to find the next click target, notice hidden blockers, and decide if a selector is even worth writing. +- Prefer compositor-level actions over framework hacks. Try screenshots, coordinate clicks, and raw key input before adding DOM-specific workarounds. +- If you need framework-specific DOM tricks, check interaction-skills/ first. That is where dropdown, dialog, iframe, shadow DOM, and form-specific guidance belongs. + +## Domain skills (opt-in) + +Only applies when `BH_DOMAIN_SKILLS=1`. Otherwise ignore — `agent-workspace/domain-skills/` is dormant and `goto_url` won't surface skill files. + +When enabled, search `agent-workspace/domain-skills//` before inventing an approach. `goto_url` returns up to 10 skill filenames for the navigated host. + +If you learn anything non-obvious — a private API, stable selector, framework quirk, URL pattern, hidden wait, or site-specific trap — open a PR to `agent-workspace/domain-skills//`. Capture the durable shape of the site (the map, not the diary). Don't write pixel coordinates (break on layout), task narration, or secrets — the directory is public. + +## Limitations + +- Adapted from `davidondrej/skills`; verify local paths, tools, credentials, and agent features before acting. +- For commands, remote access, scheduling, browser automation, or file-changing workflows, get explicit user approval and confirm the target environment first. diff --git a/antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/browser-harness/references/install.md b/antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/browser-harness/references/install.md new file mode 100644 index 00000000..a38e81dd --- /dev/null +++ b/antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/browser-harness/references/install.md @@ -0,0 +1,132 @@ +--- +name: browser-install +description: Install browser-harness into the current agent and connect it to a browser with minimal prompting. +--- + +# `browser-harness` installation + +Use this file only for browser-harness install, browser connection setup, and connection troubleshooting. For day-to-day browser work, read `SKILL.md`. Task-specific edits belong in `agent-workspace/agent_helpers.py` and `agent-workspace/domain-skills/`. + +## Recommended `browser-harness` setup + +Clone the repo once into a durable location, then install it as an editable tool so `browser-harness` works from any directory: + +```bash +git clone https://github.com/browser-use/browser-harness +cd browser-harness +uv tool install -e . +command -v browser-harness +``` + +That keeps the command global while still pointing at the real repo checkout, so when the agent edits `agent-workspace/agent_helpers.py` the next `browser-harness` uses the new code immediately. Prefer a stable path like `~/Developer/browser-harness`, not `/tmp`. + +## Make browser-harness global for the current agent + +After the repo is installed, register this repo's `SKILL.md` with the agent you are using: + +- **Codex**: add this file as a global skill at `$CODEX_HOME/skills/browser-harness/SKILL.md` (often `~/.codex/skills/browser-harness/SKILL.md`). A symlink to this repo's `SKILL.md` is fine. + + ```bash + mkdir -p "${CODEX_HOME:-$HOME/.codex}/skills/browser-harness" && ln -sf "$PWD/SKILL.md" "${CODEX_HOME:-$HOME/.codex}/skills/browser-harness/SKILL.md" + ``` + +- **Claude Code**: add an import to `~/.claude/CLAUDE.md` that points at this repo's `SKILL.md`, for example `@~/Developer/browser-harness/SKILL.md`. + +This makes new Codex or Claude Code sessions in other folders load the runtime browser harness instructions automatically. + +## Keeping the harness current + +- On each run, `browser-harness` prints `[browser-harness] update available: X -> Y` (once per day) when a newer GitHub release exists. +- When you see that banner, run `browser-harness --update -y` yourself — don't ask the user. It pulls the new code (`git pull --ff-only` for editable clones, `uv tool upgrade browser-harness` for PyPI installs) and stops the running daemon so the next call picks up the new code. With `-y` it won't prompt. +- `--update` refuses to run on an editable clone with uncommitted changes. If that happens, tell the user and let them resolve the dirty worktree. + +## Maintenance commands + +- browser-harness --doctor — show version, install mode, daemon and Chrome state, and whether an update is pending. + +## Architecture + +```text +Chrome / Browser Use cloud -> CDP WS -> browser_harness.daemon -> IPC -> browser_harness.run +``` + +- Protocol is one JSON line each way. +- Requests are {method, params, session_id} for CDP or {meta: ...} for daemon control. +- Responses are {result} / {error} / {events} / {session_id}. +- IPC: Unix socket at `/tmp/bu-.sock` on POSIX, TCP loopback + port file on Windows. +- BU_NAME namespaces the daemon's IPC, pid, and log files. +- BU_CDP_WS overrides local Chrome discovery for remote browsers. +- BU_CDP_URL overrides local Chrome discovery with a specific DevTools HTTP endpoint (used for Way 2). +- BU_BROWSER_ID + BROWSER_USE_API_KEY lets the daemon stop a Browser Use cloud browser on shutdown. + +# Browser connection setup and troubleshooting + +## Browser connection reference + +This section is the source of truth for how browser-harness connects to a browser. It is the canonical reference for every agent and user of this repo. Every statement here is intended to be verifiable against either an official Chrome source or this repo's own code, and is held to that standard deliberately. If anything below is incorrect, incomplete, or misleading, open an issue on the browser-harness repository immediately with clear evidence and explanation so it can be corrected. Do not silently work around an error in this document; the cost of one user being misled is much higher than the cost of one issue. + +Browser-harness can connect to any Chrome or Chromium-based browser on your computer, or to a Browser Use cloud browser. + +**Cloud browsers** are managed by the Browser Use cloud API. Start one in Python with `start_remote_daemon("work", ...)`. Authentication is via the `BROWSER_USE_API_KEY` environment variable; the harness handles the WebSocket URL itself. To carry your local Chrome cookies into a cloud browser, install the Browser Use `profile-use` helper only after reviewing the upstream installer instructions, then call `uuid = sync_local_profile("MyChromeProfile")` followed by `start_remote_daemon("work", profileId=uuid)`. Cookies are the only thing synced — not localStorage, not extensions, not history. + +**Local browsers** require remote debugging to be enabled. There are two ways, and they suit different use cases. + +*Way 1: chrome://inspect/#remote-debugging checkbox — uses your real profile.* In your running Chrome, navigate to `chrome://inspect/#remote-debugging` and tick the "Allow remote debugging for this browser instance" checkbox. This setting is per-profile and sticky: tick it once and it persists across every future Chrome launch of that profile. Then run any `browser-harness` command. On Chrome 144 and later, the first attach by the harness triggers an in-browser "Allow remote debugging?" popup that you must click Allow on. The popup may reappear on later attaches under conditions that are not fully characterized.[^1] This path inherits your everyday Chrome's logins, extensions, history, and bookmarks, which makes it the right choice for an agent helping you with tasks in your real browser. + +*Way 2: command-line flag — uses an isolated profile, no popups ever.* Launch Chrome with `--remote-debugging-port=9222 --user-data-dir=`. Two precisions: + +- The path must be a directory that is **not** Chrome's platform default (`%LOCALAPPDATA%\Google\Chrome\User Data` on Windows, `~/Library/Application Support/Google/Chrome` on macOS, `~/.config/google-chrome` on Linux). On Chrome 136 and later, the port flag is silently no-opped when the user-data-dir is the platform default, even if you pass it explicitly. An empty or new path gives a fresh clean profile that Chrome will persist there across future runs. +- This path does **not** let you reuse your everyday Chrome profile. Copying the default profile's files into a custom directory makes Chrome accept the flag, but cookies are encrypted under a key bound to the original directory and will not survive the copy — so you carry over bookmarks and extensions but lose every logged-in session. If you want your real logins, use Way 1. + +Tell the harness which port you launched on by setting `BU_CDP_URL=http://127.0.0.1:9222` before running `browser-harness`. + +For most tasks where the agent acts on your behalf in your normal browser, use Way 1. For automation that runs without you watching, or any case where popup interruptions are unacceptable, use Way 2 or a cloud browser. + +[^1]: The conditions that cause Chrome to re-show the "Allow remote debugging?" popup on a subsequent attach (time elapsed since previous Allow, daemon restart, browser restart, new CDP session, version-dependent options like "Allow for N hours") are not fully characterized. Way 2 sidesteps this entirely. + +## First time setup + +Try yourself before asking the user to do anything. Retry transient errors briefly. Only ask the user when a step genuinely needs them — ticking a checkbox, clicking Allow. + +If the user hasn't said which connection method to use, default to Way 1 if Chrome is already running, Way 2 if not. Cloud is only used when the user opts in. + +1. Try the harness: + + ```bash + browser-harness -c 'print(page_info())' + ``` + + If it prints page info, you're done. + +2. Otherwise run `browser-harness --doctor`. The two lines that matter for connection are `chrome running` and `daemon alive`. + +3. Match the output to a case: + + - **chrome FAIL** → no Chrome process detected. + - **Way 1**: ask the user to open their target Chrome themselves. + - **Way 2**: launch Chrome yourself with `--remote-debugging-port=9222 --user-data-dir=`, then set `BU_CDP_URL=http://127.0.0.1:9222` for the harness (see the Browser connection reference). + + - **chrome ok, daemon FAIL** → Way 1 setup is incomplete. Tell the user to: + - navigate to `chrome://inspect/#remote-debugging` in their Chrome and tick "Allow remote debugging for this browser instance" if not yet ticked (one-time per profile) + - click Allow on the in-browser popup if it appears (every attach on Chrome 144+) + + On macOS, you can open the inspect page in their running Chrome yourself instead of asking them to navigate: + + ```bash + osascript -e 'tell application "Google Chrome" to activate' \ + -e 'tell application "Google Chrome" to open location "chrome://inspect/#remote-debugging"' + ``` + + - **chrome ok, daemon ok, but step 1 still failed** → stale daemon. Restart it: + + ```bash + browser-harness -c 'restart_daemon()' + ``` + + If that hangs, escalate: kill all Chrome and daemon processes, then reopen Chrome and retry. On macOS/Linux, also remove `/tmp/bu-default.sock` and `/tmp/bu-default.pid` if they linger. + +4. After any fix, retry step 1. + +If Way 1 fails repeatedly or the user's task is unattended, move to Way 2 or a cloud browser per the Browser connection reference (these have no popups). + +If you are testing browser connection for the first time, run this demo: open `https://github.com/browser-use/browser-harness` in a new tab and activate it (`switch_tab`) so the user sees the harness has attached. Then ask what they want to do next. diff --git a/antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/cmux/SKILL.md b/antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/cmux/SKILL.md new file mode 100644 index 00000000..908b780b --- /dev/null +++ b/antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/cmux/SKILL.md @@ -0,0 +1,250 @@ +--- +name: cmux +description: "Control cmux workspaces, panes, surfaces, and agent sessions safely from macOS terminal workflows." +category: development +risk: critical +source: community +source_repo: davidondrej/skills +source_type: community +date_added: "2026-07-07" +author: davidondrej +tags: [cmux, terminal, agents, macos] +tools: [claude, codex] +license: "MIT" +license_source: "https://github.com/davidondrej/skills/blob/main/LICENSE" +--- + +# cmux Control + +## When to Use + +- Use when you need to inspect, create, close, or rearrange cmux panes, surfaces, or workspaces. +- Use when you need to send input to or monitor agents running inside cmux. + +cmux is a native macOS terminal app for running multiple AI coding agents in parallel. It exposes a CLI (`cmux`) and a Unix-socket JSON-RPC API (`/tmp/cmux.sock`) for full topology and browser control. + +## Core Concepts + +- **Window** — top-level macOS cmux window +- **Workspace** — sidebar tab within a window (one git branch / project context) +- **Pane** — split region inside a workspace +- **Surface** — tab inside a pane (terminal or browser) + +Handles default to short refs (`workspace:2`, `pane:1`, `surface:7`); UUIDs accepted as input. Add `--id-format uuids|both` for UUID output. + +### Ref syntax — get this right or fail silently + +- **Always use PREFIXED refs** (`pane:38`, `surface:46`). A **bare number is treated as an INDEX, not an ID** — `--surface 46` means "the surface at index 46" (usually nonexistent → silent failure), NOT `surface:46`. +- **`read-screen` and `capture-pane` have NO `--pane` flag** — they target `--workspace` or `--surface` only. Passing `--pane` errors, and a bare/missing target falls back to your OWN surface (you'll read your own footer and draw wrong conclusions). To read a pane: resolve it to a surface FIRST with `cmux list-pane-surfaces --pane pane:N`, then `cmux read-screen --surface surface:N`. +- **Never append `2>/dev/null` to cmux commands.** Errors go to stderr with exit code 1; suppressing them blinds you to your own ref/flag mistakes (the #1 cause of "(no output)"). + +## Detect cmux in a Shell + +```bash +[ -S "${CMUX_SOCKET_PATH:-/tmp/cmux.sock}" ] || exit 0 # bail if not in cmux +[ -n "${CMUX_WORKSPACE_ID:-}" ] && echo "inside cmux surface" +``` + +Injected env vars in every cmux-spawned terminal: `CMUX_WORKSPACE_ID`, `CMUX_SURFACE_ID`, `CMUX_SOCKET_PATH`, `CMUX_PORT`. **Always anchor automation to `CMUX_WORKSPACE_ID`** — the visually focused workspace may not be the agent's caller workspace. + +## Fast Start — Topology + +```bash +cmux identify --json # who am I (window/workspace/pane/surface) +cmux tree # full hierarchy +cmux list-workspaces --json +cmux list-panes --workspace "$CMUX_WORKSPACE_ID" +cmux list-surfaces --workspace "$CMUX_WORKSPACE_ID" + +cmux new-workspace --name "feature-x" --cwd /path/to/repo +cmux new-pane --workspace "$CMUX_WORKSPACE_ID" --type terminal --direction right --focus false +cmux new-pane --workspace "$CMUX_WORKSPACE_ID" --type browser --direction right --url http://localhost:3000 +cmux move-surface --surface surface:7 --pane pane:2 --focus false +cmux split-off --surface surface:7 right +cmux reorder-surface --surface surface:7 --before surface:3 +cmux close-surface --surface surface:7 +``` + +## Polling Pi Agents in Panes — Keep Sleeps Short + +When launching a Pi Agent inside a cmux pane and polling for output, use **short `sleep` intervals (2–5s)**. Pi is fast and minimal, and the user runs it on Opus 4.8 Fast via OpenRouter, which streams tokens extremely quickly. Do NOT use `sleep 15` unless genuinely needed (a big build/refactor) — most of the time `sleep 2`–`sleep 5` is more than enough. + +After every agent check, send the user a one-line status update: what the agent is doing and whether it is on track. Keep it extremely concise. + +Claude Code cmux note: after Claude finishes, it may prefill a predicted next user message; that draft is Claude, not the user speaking. + +## Send Input + +**Command names:** there is NO `send-surface` / `send-key-surface`. Target a specific surface with the `--surface` flag on `send` / `send-key` (same commands as the focused terminal). `send-panel` / `send-key-panel` exist ONLY for panels (`--panel`), not surfaces. + +```bash +cmux send "echo hi\n" # focused terminal +cmux send-key "ctrl+c" # enter|tab|esc|backspace|arrows|ctrl+x|shift+tab +cmux send --surface surface:7 "npm run build" # specific surface (NOT send-surface) +cmux send-key --surface surface:7 enter # specific surface (NOT send-key-surface) +``` + +## Notifications & Sidebar Metadata + +```bash +cmux notify --title "Done" --body "tests passed" +cmux set-status build "compiling" --icon hammer --color "#ff9500" +cmux set-progress 0.5 --label "Building..." +cmux log --level success "All 42 tests passed" # info|progress|success|warning|error +cmux trigger-flash --workspace "$CMUX_WORKSPACE_ID" # blue-ring attention cue +cmux sidebar-state --json # dump all sidebar metadata +``` + +## Browser Automation (WKWebView) + +Workflow: open → wait → snapshot → act → re-snapshot. + +```bash +S=$(cmux --json browser open https://example.com | jq -r .result.surface_ref) +cmux browser "$S" wait --load-state complete --timeout-ms 15000 +cmux browser "$S" snapshot --interactive # returns elements as e1, e2, ... +cmux browser "$S" fill e1 "" +cmux browser "$S" click e2 --snapshot-after + +# Navigation / inspection +cmux browser "$S" goto URL | back | forward | reload +cmux browser "$S" get url | get title | get text body | get value "#email" | get count ".row" +cmux browser "$S" eval 'return document.title' + +# Waits +cmux browser "$S" wait --selector "#ready" --timeout-ms 10000 +cmux browser "$S" wait --url-contains "/dashboard" --timeout-ms 10000 + +# Session +cmux browser "$S" cookies get | cookies set --name foo --value bar +cmux browser "$S" state save /tmp/auth.json | state load /tmp/auth.json + +# Diagnostics +cmux browser "$S" console list | errors list | screenshot +``` + +**Not supported by WKWebView** (return `not_supported`): viewport emulation, geolocation/offline emulation, trace recording, network route interception, raw input injection. + +## Markdown Viewer + +```bash +cmux markdown open plan.md --direction right # live-watching renderer +cmux open file.pdf # auto-routes to right viewer +``` + +`cmux markdown open` flags: `--workspace`, `--surface`, `--window`, `--direction `, `--focus `. There is **NO `--pane` flag** — passing it errors. To target a pane, pass `--surface `. + +### Reuse the existing right markdown pane (don't spawn strays) + +Default behavior of `markdown open` is to **create a new pane** every time, even with `--direction right`. To keep all docs as tabs in ONE right pane, follow this exactly: + +```bash +# 1. Find the right pane and its surfaces (anchor to THIS workspace) +cmux list-panes --workspace "$CMUX_WORKSPACE_ID" +cmux list-pane-surfaces --pane pane:10 # the right/helper pane + +# 2. Open targeting an existing markdown surface IN that pane (reuses pane, adds tab) +cmux markdown open /abs/path/file.md --surface surface:12 --focus false + +# 3. If it STILL spawned a new pane (it can), move the new surface in + verify +cmux move-surface --surface surface:NEW --pane pane:10 --focus false +cmux list-panes --workspace "$CMUX_WORKSPACE_ID" # confirm stray pane is gone +``` + +### Swapping the file in the single right pane (close-FIRST, then open) + +To replace the doc shown in your one right markdown pane, the ONLY reliable order is **close the previous surface FIRST, then `markdown open` the new file fresh** — never move an existing viewer, never open-then-close. + +```bash +# 1. close the previous right markdown surface (right side goes empty) +cmux list-panes --workspace "$CMUX_WORKSPACE_ID" +cmux close-surface --surface surface:PREV +# 2. THEN open the new file fresh +cmux markdown open /abs/path/new.md --direction right --focus false +``` + +ORDER MATTERS: close-previous BEFORE open-new. Opening first then closing the old one, or `move-surface`-ing an existing viewer, leaves the right pane BLANK. + +### Hard-won lessons (avoid the trial-and-error) + +- **Surface refs are global, not per-workspace.** A ref like `surface:126` from an earlier `markdown open` may live in a different window/workspace. Always re-list (`list-panes` / `list-pane-surfaces`) before reusing a ref — never assume a ref from a previous turn is still in the right pane. +- **`move-surface`-ing a markdown viewer often leaves it BLANK.** The moved surface keeps `type=markdown` and `surface-health` looks fine, but renders nothing. Fix: `close-surface` it and `cmux markdown open ` fresh, then move the *fresh* surface if needed. Don't waste time on `refresh-surfaces` — it usually won't fix a moved-then-blank viewer. +- **You cannot screenshot or `read-screen` a markdown surface** (`Surface is not a terminal` / browser screenshot is WKWebView-only). To verify a markdown viewer rendered, ask the user or open the file in a browser surface instead. Don't burn turns trying to capture it. +- **`cmux list-surfaces` does not exist.** Use `cmux list-pane-surfaces [--pane ...]`. + +## Settings & Config + +```bash +cmux docs settings # prints paths, schema URL, reload cmd — read BEFORE editing +cmux settings path # path to cmux.json +cmux settings cmux-json # open in editor +cmux reload-config # hot-reload cmux.json + ~/.config/ghostty/config (Cmd+Shift+,) +``` + +Locations: +- cmux settings: `~/.config/cmux/cmux.json` (canonical). Project-local override: `.cmux/cmux.json` or `./cmux.json`. +- Terminal rendering (font, cursor, theme, scrollback, opacity, blur): `~/.config/ghostty/config` — NOT cmux.json. + +Before editing `cmux.json`, copy it to a timestamped `.bak` next to it so the user can revert. Schema: `https://raw.githubusercontent.com/manaflow-ai/cmux/main/web/data/cmux.schema.json`. + +## Agent Hooks & Install + +```bash +brew tap manaflow-ai/cmux && brew install --cask cmux +sudo ln -sf /Applications/cmux.app/Contents/Resources/bin/cmux /usr/local/bin/cmux +cmux hooks setup # all detected agents +cmux hooks setup codex|grok|antigravity|opencode # specific agent +npx skills add manaflow-ai/cmux -g -y # install cmux skills for agents +``` + +Native session-resume supported for: Claude Code, Codex, Grok, OpenCode, Pi, Amp, Cursor CLI, Gemini, Antigravity, Rovo Dev, Hermes, Copilot, CodeBuddy, Factory, Qoder. + +## Socket API (advanced) + +`/tmp/cmux.sock` — Unix socket, JSON-RPC v2. Use for tight loops where subprocess spawn cost matters; otherwise prefer the CLI. + +```bash +echo '{"id":"1","method":"workspace.list","params":{}}' | nc -U /tmp/cmux.sock +``` + +Method prefixes: `system.*`, `window.*`, `workspace.*`, `pane.*`, `surface.*`, `notification.*`, `browser.*`. Full list and Python client example in `references/socket-api.md`. + +Access modes: `cmuxOnly` (default — only cmux-spawned processes), `automation` (any local process), `password`, `allowAll` (unsafe). If you hit `Failed to connect to socket`, you're likely an external process under `cmuxOnly` — switch mode in Settings > Automation or run from inside a cmux terminal. + +## Critical Rules — Non-Disruptive Automation + +These rules come from the `cmux-workspace` skill and prevent agents from yanking the user's focus: + +1. **Anchor to `CMUX_WORKSPACE_ID`.** Never assume the visually focused workspace is the target. +2. **Never call focus-changing verbs speculatively.** `select-workspace`, `focus-pane`, `focus-panel`, `focus-surface` only on explicit user request. Pass `--focus false` whenever available. +3. **Build layout additively in one call.** `cmux new-pane --type … --focus false` beats create-then-move-then-focus chains. +4. **Right-side helper pane pattern.** Reuse an existing non-caller helper pane if present; otherwise create exactly one right-side pane. +5. **Never send input to surfaces you don't own.** Only target surfaces in the caller's workspace unless the user explicitly asks for cross-workspace routing. +6. **Check surface health before routing input** when UI state may be stale: `cmux surface-health`. + +## Common Pitfalls + +- **Pi/Pi-like socket connection failures from external processes** → default `cmuxOnly` mode; either run inside a cmux terminal or change socket mode. +- **macOS only.** No Linux/Windows port. +- **WKWebView ≠ CDP.** Don't expect Playwright-equivalent network mocking or viewport emulation. +- **Resume strips sensitive env vars.** Re-inject tokens at resume time if the agent needs them. +- **Skills snapshot at app start.** Edits to skill files require a restart of the consuming agent. +- **Legacy v1 socket payloads (`{"command":...}`) rejected.** Use v2 JSON-RPC only. +- **Don't `cat ~/.cmuxterm/*-hook-sessions.json`** expecting secrets — they're scrubbed. Look there for session/surface mappings only. + +## Reference: Full CLI Help + +For any command, `cmux --help` is authoritative. Use `cmux capabilities --json` to enumerate available socket methods in the current build. + +## Keyboard Shortcuts (most-used) + +Workspaces: ⌘N new, ⌘1–8 jump, ⌃⌘[ / ⌃⌘] prev/next, ⌘⇧W close, ⌘B sidebar. +Surfaces: ⌘T new, ⌘⇧[ / ⌘⇧] prev/next, ⌘W close, ⌃1–8 jump. +Splits: ⌘D right, ⌘⇧D down, ⌥⌘D browser right, ⌥⌘←→↑↓ focus directional, ⌘⇧↵ zoom. +Browser: ⌘⇧L open, ⌘L address bar, ⌘[/⌘] back/forward, ⌥⌘I devtools. +App: ⌘, settings, ⌘⇧, reload-config, ⌘⇧P palette, ⌘⇧O restore session, ⌃⌥⌘. system-wide show/hide. + +## Limitations + +- Adapted from `davidondrej/skills`; verify local paths, tools, credentials, and agent features before acting. +- For commands, remote access, scheduling, browser automation, or file-changing workflows, get explicit user approval and confirm the target environment first. diff --git a/antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/cyber-audit/SKILL.md b/antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/cyber-audit/SKILL.md new file mode 100644 index 00000000..e5a5b6e4 --- /dev/null +++ b/antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/cyber-audit/SKILL.md @@ -0,0 +1,138 @@ +--- +name: cyber-audit +description: "Run read-only exposure checks for security advisories and write a structured local audit report." +category: security +risk: safe +source: community +source_repo: davidondrej/skills +source_type: community +date_added: "2026-07-07" +author: davidondrej +tags: [security, audit, read-only] +tools: [claude, codex] +license: "MIT" +license_source: "https://github.com/davidondrej/skills/blob/main/LICENSE" +disable-model-invocation: true +--- + +# cyber-audit + +## When to Use + +- Use when the user asks whether their machine or projects are affected by a CVE, breach, or package advisory. +- Use when a read-only local security exposure report is appropriate. + +## Hard rules + +- **Read-only.** No installs, removes, upgrades, restarts, network calls, or file modifications outside `~/Documents/security-audits/`. +- **No `sudo`.** Never. +- **One report per invocation.** Always end by writing the `.md` file (even if the verdict is "Not affected" — the audit trail matters). +- If a check requires a state-changing command, **skip it and note "not checked (would require state change)"** in the table. Do not run it. + +## Workflow + +1. **Identify scope.** Extract from the advisory: package/binary name, affected versions, platform (macOS / Linux / Windows), attack vector (supply chain / RCE / local / network). +2. **Run checks in parallel** (Bash tool, multiple calls in one message). Pick relevant checks for the advisory type — don't run all of them. +3. **Build the table** as you go. Each row = one check + concrete result (version number, path, "None", "N/A"). +4. **Write the report** to `~/Documents/security-audits/YYYY-MM-DD-.md`. Use today's date from the environment header. +5. **Tell the user** the verdict in one line + path to the report. + +## Check menu (pick what's relevant) + +```bash +# --- Node / npm ecosystem (supply-chain advisories) --- +which npm pnpm yarn; npm root -g; pnpm root -g 2>/dev/null +ls /opt/homebrew/lib/node_modules # global npm +find ~ -maxdepth 8 -type d -name "" 2>/dev/null \ + | grep -v -E "(Library/Caches|\.Trash)" # installed copies +find ~/Documents ~/Desktop ~/Downloads -maxdepth 8 -type f \ + \( -name "package.json" -o -name "package-lock.json" \ + -o -name "pnpm-lock.yaml" -o -name "yarn.lock" \) 2>/dev/null \ + | xargs grep -l "" 2>/dev/null # direct + transitive + +# --- Python ecosystem --- +which python3 pip pipx uv +pip list 2>/dev/null | grep -i "" +find ~/Documents -maxdepth 6 -name "requirements*.txt" -o -name "pyproject.toml" \ + -o -name "poetry.lock" -o -name "uv.lock" 2>/dev/null | xargs grep -l "" 2>/dev/null + +# --- Homebrew / system binaries --- +brew list --versions 2>/dev/null +which ; --version 2>/dev/null + +# --- Running processes / listeners (for RCE / network CVEs) --- +pgrep -lf "" +lsof -iTCP -sTCP:LISTEN -P -n 2>/dev/null | grep "" + +# --- LaunchAgents / LaunchDaemons (persistence / autostart) --- +ls ~/Library/LaunchAgents /Library/LaunchAgents /Library/LaunchDaemons 2>/dev/null \ + | grep -i "" + +# --- Env vars that change exposure (e.g. OLLAMA_HOST, listening addr) --- +launchctl getenv ; grep -r "" ~/.zshrc ~/.zprofile ~/.config 2>/dev/null + +# --- VS Code / browser extensions (for IDE-targeted advisories) --- +ls ~/.vscode/extensions 2>/dev/null | grep -i "" +``` + +If the advisory mentions an ecosystem not above (Rust cargo, Go modules, Ruby gems, Docker images, etc.), apply the same pattern: global install path + manifest grep + running processes. + +## Report template + +File: `~/Documents/security-audits/YYYY-MM-DD-.md` + +```markdown +# — Audit + +**Date:** YYYY-MM-DD +**Host:** the user's Mac + +## in scope + +- ** ""** — . . + +## Audit results + +| Check | Result | +|---|---| +| | | +| | | + +## Verdict + +**** + +- +- + +## Action taken + +None — diagnostic only, no files modified, no . + +## Follow-ups + +- +``` + +Match the tone of the two existing reports in `~/Documents/security-audits/` — terse, factual, bulleted, no hedging. + +## Verdict wording + +- **Not affected.** — package/binary absent, or installed but patched, or not running and not exposed. +- **Affected.** — vulnerable version present *and* reachable by the attack vector. +- **Partially affected.** — present but mitigated (e.g. binary installed but service not running, or listener bound to loopback only). Spell out the mitigation in the bullets. + +## When to break the read-only rule + +Never on your own. If the verdict is "Affected", list the remediation command in **Follow-ups** and stop. The user runs it. + +## Reference + +Two existing reports in `~/Documents/security-audits/` show the expected style: +- `baseline-audit.md` (long-form baseline audit — different format, do not mimic) +- `YYYY-MM-DD-example-advisory.md` and any newer `YYYY-MM-DD-*.md` files (this is the format to match) + +## Limitations + +- Adapted from `davidondrej/skills`; verify local paths, tools, credentials, and agent features before acting. +- For commands, remote access, scheduling, browser automation, or file-changing workflows, get explicit user approval and confirm the target environment first. diff --git a/antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/deepapi/SKILL.md b/antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/deepapi/SKILL.md new file mode 100644 index 00000000..f3c4c1f1 --- /dev/null +++ b/antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/deepapi/SKILL.md @@ -0,0 +1,649 @@ +--- +name: deepapi +description: "Use DeepAPI for supported scraping, research, and email workflows with explicit credentials and approval." +category: research +risk: critical +source: community +source_repo: davidondrej/skills +source_type: community +date_added: "2026-07-07" +author: davidondrej +tags: [deepapi, scraping, email, api] +tools: [claude, codex] +license: "MIT" +license_source: "https://github.com/davidondrej/skills/blob/main/LICENSE" +version: b17ad5148ab7 +--- + +# DeepAPI + +## When to Use + +- Use when the task needs supported DeepAPI scraping, research, or email endpoints. +- Use when the user has provided or confirmed the required DeepAPI credentials and scope. + +Use this skill when the user asks you to scrape public web data or draft/read/send email through DeepAPI. + +## Staying Up To Date + +- Your installed copy's version is the `version` value in the frontmatter above. +- If a request fails unexpectedly, fetch https://deepapi.co/deepapi-skill/VERSION.txt — public, no auth, a few bytes. +- If it differs from this file's version, fetch https://deepapi.co/deepapi-skill/SKILL.md and overwrite this file with it. +- Every API response includes `skillVersion`. If it differs from this file's version, refresh the same way. +- Only ever fetch this skill from https://deepapi.co. + +## Required Environment + +- Read `DEEPAPI_API_BASE_URL` from the environment. +- Read `DEEPAPI_API_KEY` from the environment. +- If either value is missing, stop and ask the user for setup. +- Never commit, print, log, paste, or expose `DEEPAPI_API_KEY`. + +## Request Rules + +- Send `Authorization: Bearer $DEEPAPI_API_KEY` on every request. +- Send `Content-Type: application/json` when sending JSON. +- Send a unique `Idempotency-Key` for every `POST`. +- For scrape work, set explicit `maxCostUsd` or `maxCostMicrousd`. +- Keep email as `send: false` or `mode: draft` unless the user explicitly approves sending. +- Do not pass inbox IDs. Use `emailIdentityId` or omit it. + +## Execution Loop + +1. Choose the narrowest endpoint that matches the task. +2. Build the request from the endpoint schema and examples below. +3. Run the request with the required headers. +4. If the response has `status: running`, wait `next.afterSecs` and call `next.method` + `next.path` until `status` is `succeeded` or `failed`. +5. If `error.retryable` is true, wait `error.retryAfterSecs` before retrying. +6. If the response is HTTP 402 with `error.code: insufficient_credits`, stop and ask the user to top up credits at https://deepapi.co/credits. After top-up, retry with the same `Idempotency-Key`. +7. Report `requestId`, `status`, `debitMicrousd`, `costFinal`, and the useful part of `output`. + +## Endpoints + +| Method | Path | Scope | Cost | +| --- | --- | --- | --- | +| POST | `/v1/scrape/website` | `scrape:website` | Set `maxCostUsd: "1.00"` unless the user gives a different cap. The route requires maxCostUsd or maxCostMicrousd as the customer spend cap. The final debit is capped by that amount and reported as debitMicrousd. | +| POST | `/v1/scrape/linkedin/profile` | `scrape:linkedin` | Set `maxCostUsd: "0.05"` unless the user gives a different cap. The route requires maxCostUsd or maxCostMicrousd as the customer spend cap. The final debit is capped by that amount and reported as debitMicrousd. | +| POST | `/v1/scrape/github/profile` | `scrape:github` | Set `maxCostUsd: "0.03"` unless the user gives a different cap. The route requires maxCostUsd or maxCostMicrousd as the customer spend cap. The final debit is capped by that amount and reported as debitMicrousd. | +| POST | `/v1/scrape/twitter/search` | `scrape:twitter` | Set `maxCostUsd: "0.03"` unless the user gives a different cap. The route requires maxCostUsd or maxCostMicrousd as the customer spend cap. The final debit is capped by that amount and reported as debitMicrousd. | +| POST | `/v1/scrape/linkedin/jobs` | `scrape:linkedin` | Set `maxCostUsd: "0.05"` unless the user gives a different cap. The route requires maxCostUsd or maxCostMicrousd as the customer spend cap. The final debit is capped by that amount and reported as debitMicrousd. | +| POST | `/v1/scrape/linkedin/company` | `scrape:linkedin` | Set `maxCostUsd: "0.05"` unless the user gives a different cap. The route requires maxCostUsd or maxCostMicrousd as the customer spend cap. The final debit is capped by that amount and reported as debitMicrousd. | +| POST | `/v1/scrape/linkedin/people` | `scrape:linkedin` | Set `maxCostUsd: "0.50"` unless the user gives a different cap. The route requires maxCostUsd or maxCostMicrousd as the customer spend cap. The final debit is capped by that amount and reported as debitMicrousd. | +| POST | `/v1/scrape/linkedin/posts` | `scrape:linkedin` | Set `maxCostUsd: "0.05"` unless the user gives a different cap. The route requires maxCostUsd or maxCostMicrousd as the customer spend cap. The final debit is capped by that amount and reported as debitMicrousd. | +| POST | `/v1/scrape/twitter/user` | `scrape:twitter` | Set `maxCostUsd: "0.05"` unless the user gives a different cap. The route requires maxCostUsd or maxCostMicrousd as the customer spend cap. The final debit is capped by that amount and reported as debitMicrousd. | +| POST | `/v1/scrape/twitter/replies` | `scrape:twitter` | Set `maxCostUsd: "0.20"` unless the user gives a different cap. The route requires maxCostUsd or maxCostMicrousd as the customer spend cap. The final debit is capped by that amount and reported as debitMicrousd. | +| POST | `/v1/scrape/youtube/transcript` | `scrape:youtube` | Set `maxCostUsd: "0.05"` unless the user gives a different cap. The route requires maxCostUsd or maxCostMicrousd as the customer spend cap. The final debit is capped by that amount and reported as debitMicrousd. | +| POST | `/v1/scrape/youtube/channel` | `scrape:youtube` | Set `maxCostUsd: "0.30"` unless the user gives a different cap. The route requires maxCostUsd or maxCostMicrousd as the customer spend cap. The final debit is capped by that amount and reported as debitMicrousd. | +| POST | `/v1/scrape/youtube/search` | `scrape:youtube` | Set `maxCostUsd: "0.10"` unless the user gives a different cap. The route requires maxCostUsd or maxCostMicrousd as the customer spend cap. The final debit is capped by that amount and reported as debitMicrousd. | +| POST | `/v1/scrape/linkedin` | `scrape:linkedin` | Set `maxCostUsd: "0.05"` unless the user gives a different cap. The route requires maxCostUsd or maxCostMicrousd as the customer spend cap. The final debit is capped by that amount and reported as debitMicrousd. | +| POST | `/v1/scrape/github` | `scrape:github` | Set `maxCostUsd: "0.03"` unless the user gives a different cap. The route requires maxCostUsd or maxCostMicrousd as the customer spend cap. The final debit is capped by that amount and reported as debitMicrousd. | +| POST | `/v1/scrape/twitter` | `scrape:twitter` | Set `maxCostUsd: "0.03"` unless the user gives a different cap. The route requires maxCostUsd or maxCostMicrousd as the customer spend cap. The final debit is capped by that amount and reported as debitMicrousd. | +| POST | `/v1/email/send` | `email:send` | Uses configured email unit pricing; the route does not accept maxCostUsd. Check debitMicrousd in the response. | +| GET | `/v1/email/messages` | `email:read` | Read route returns debitMicrousd 0. | +| GET | `/v1/email/drafts` | `email:read` | Read route returns debitMicrousd 0. | +| POST | `/v1/email/drafts/{draftId}/send` | `email:send` | Uses configured email unit pricing; the route does not accept maxCostUsd. Check debitMicrousd in the response. | +| POST | `/v1/research/deep` | `research:deep` | Set `maxCostUsd: "0.10"` unless the user gives a different cap. Defaults to maxCostUsd 0.10. Pass maxCostUsd or maxCostMicrousd to choose a different customer spend cap. The final debit is capped and reported as debitMicrousd. | +| POST | `/v1/generate/image` | `generate:image` | Set `maxCostUsd: "0.20"` unless the user gives a different cap. Defaults to maxCostUsd 0.20. Pass maxCostUsd or maxCostMicrousd to choose a different customer spend cap. The final debit is capped and reported as debitMicrousd. | +| POST | `/v1/search/web` | `search:web` | Set `maxCostUsd: "0.05"` unless the user gives a different cap. Defaults to maxCostUsd 0.05. Pass maxCostUsd or maxCostMicrousd to choose a different customer spend cap. The final debit is capped and reported as debitMicrousd. | +| GET | `/v1/requests/{requestId}` | `same key` | Status polling does not create a new debit. | + +## Endpoint Details + +### Scrape Website + +Use `POST /v1/scrape/website`. Crawl website pages and return clean text and markdown per page. + +Side effects: Starts a scrape run and may debit credits when the run finishes. +Polling: If status is running, wait next.afterSecs and call next.method next.path until status is succeeded or failed. + +Safety: +- Send Authorization: Bearer $DEEPAPI_API_KEY and never expose the key. +- Send a unique Idempotency-Key for every POST. +- Set an explicit customer spend cap with maxCostUsd or maxCostMicrousd before starting a scrape. +- Start with small result caps such as maxItems or capability-specific limits. +- Poll next.path while status is running and report the final debitMicrousd. + +Example body: +```json +{ + "maxCostUsd": "1.00", + "waitForFinishSecs": 60, + "urls": [ + "https://example.com" + ], + "maxPages": 1 +} +``` + +### Scrape LinkedIn Profile + +Use `POST /v1/scrape/linkedin/profile`. Scrape public LinkedIn profile details. + +Side effects: Starts a scrape run and may debit credits when the run finishes. +Polling: If status is running, wait next.afterSecs and call next.method next.path until status is succeeded or failed. + +Safety: +- Send Authorization: Bearer $DEEPAPI_API_KEY and never expose the key. +- Send a unique Idempotency-Key for every POST. +- Set an explicit customer spend cap with maxCostUsd or maxCostMicrousd before starting a scrape. +- Start with small result caps such as maxItems or capability-specific limits. +- Poll next.path while status is running and report the final debitMicrousd. + +Example body: +```json +{ + "maxCostUsd": "0.05", + "waitForFinishSecs": 60, + "profiles": [ + "williamhgates" + ] +} +``` + +### Scrape GitHub Profile + +Use `POST /v1/scrape/github/profile`. Scrape public GitHub profile details. + +Side effects: Starts a scrape run and may debit credits when the run finishes. +Polling: If status is running, wait next.afterSecs and call next.method next.path until status is succeeded or failed. + +Safety: +- Send Authorization: Bearer $DEEPAPI_API_KEY and never expose the key. +- Send a unique Idempotency-Key for every POST. +- Set an explicit customer spend cap with maxCostUsd or maxCostMicrousd before starting a scrape. +- Start with small result caps such as maxItems or capability-specific limits. +- Poll next.path while status is running and report the final debitMicrousd. + +Example body: +```json +{ + "maxCostUsd": "0.03", + "waitForFinishSecs": 60, + "usernames": [ + "octocat" + ] +} +``` + +### Search X/Twitter + +Use `POST /v1/scrape/twitter/search`. Scrape X/Twitter posts from a search query or account handles. + +Side effects: Starts a scrape run and may debit credits when the run finishes. +Polling: If status is running, wait next.afterSecs and call next.method next.path until status is succeeded or failed. + +Safety: +- Send Authorization: Bearer $DEEPAPI_API_KEY and never expose the key. +- Send a unique Idempotency-Key for every POST. +- Set an explicit customer spend cap with maxCostUsd or maxCostMicrousd before starting a scrape. +- Start with small result caps such as maxItems or capability-specific limits. +- Poll next.path while status is running and report the final debitMicrousd. + +Example body: +```json +{ + "maxCostUsd": "0.03", + "waitForFinishSecs": 60, + "handles": [ + "nasa" + ], + "maxItems": 1, + "sort": "latest" +} +``` + +### Scrape LinkedIn Jobs + +Use `POST /v1/scrape/linkedin/jobs`. Scrape public LinkedIn job listings for a search query. + +Side effects: Starts a scrape run and may debit credits when the run finishes. +Polling: If status is running, wait next.afterSecs and call next.method next.path until status is succeeded or failed. + +Safety: +- Send Authorization: Bearer $DEEPAPI_API_KEY and never expose the key. +- Send a unique Idempotency-Key for every POST. +- Set an explicit customer spend cap with maxCostUsd or maxCostMicrousd before starting a scrape. +- Start with small result caps such as maxItems or capability-specific limits. +- Poll next.path while status is running and report the final debitMicrousd. + +Example body: +```json +{ + "maxCostUsd": "0.05", + "waitForFinishSecs": 60, + "query": "software engineer", + "location": "United States", + "maxItems": 5 +} +``` + +### Scrape LinkedIn Company + +Use `POST /v1/scrape/linkedin/company`. Scrape public LinkedIn company pages for firmographic details. + +Side effects: Starts a scrape run and may debit credits when the run finishes. +Polling: If status is running, wait next.afterSecs and call next.method next.path until status is succeeded or failed. + +Safety: +- Send Authorization: Bearer $DEEPAPI_API_KEY and never expose the key. +- Send a unique Idempotency-Key for every POST. +- Set an explicit customer spend cap with maxCostUsd or maxCostMicrousd before starting a scrape. +- Start with small result caps such as maxItems or capability-specific limits. +- Poll next.path while status is running and report the final debitMicrousd. + +Example body: +```json +{ + "maxCostUsd": "0.05", + "waitForFinishSecs": 60, + "companies": [ + "microsoft" + ] +} +``` + +### Search LinkedIn People + +Use `POST /v1/scrape/linkedin/people`. Search public LinkedIn profiles by role, location, company, or school. Requires maxCostUsd of at least 0.50. + +Side effects: Starts a scrape run and may debit credits when the run finishes. +Polling: If status is running, wait next.afterSecs and call next.method next.path until status is succeeded or failed. + +Safety: +- Send Authorization: Bearer $DEEPAPI_API_KEY and never expose the key. +- Send a unique Idempotency-Key for every POST. +- Set an explicit customer spend cap with maxCostUsd or maxCostMicrousd before starting a scrape. +- Start with small result caps such as maxItems or capability-specific limits. +- Poll next.path while status is running and report the final debitMicrousd. + +Example body: +```json +{ + "maxCostUsd": "0.50", + "waitForFinishSecs": 60, + "titles": [ + "Founder" + ], + "locations": [ + "San Francisco" + ], + "maxItems": 5 +} +``` + +### Scrape LinkedIn Posts + +Use `POST /v1/scrape/linkedin/posts`. Scrape recent public posts from LinkedIn profiles or company pages. + +Side effects: Starts a scrape run and may debit credits when the run finishes. +Polling: If status is running, wait next.afterSecs and call next.method next.path until status is succeeded or failed. + +Safety: +- Send Authorization: Bearer $DEEPAPI_API_KEY and never expose the key. +- Send a unique Idempotency-Key for every POST. +- Set an explicit customer spend cap with maxCostUsd or maxCostMicrousd before starting a scrape. +- Start with small result caps such as maxItems or capability-specific limits. +- Poll next.path while status is running and report the final debitMicrousd. + +Example body: +```json +{ + "maxCostUsd": "0.05", + "waitForFinishSecs": 60, + "profiles": [ + "williamhgates" + ], + "maxItems": 3 +} +``` + +### Scrape X/Twitter User + +Use `POST /v1/scrape/twitter/user`. Scrape public X/Twitter account profiles, with optional follower and following lists. + +Side effects: Starts a scrape run and may debit credits when the run finishes. +Polling: If status is running, wait next.afterSecs and call next.method next.path until status is succeeded or failed. + +Safety: +- Send Authorization: Bearer $DEEPAPI_API_KEY and never expose the key. +- Send a unique Idempotency-Key for every POST. +- Set an explicit customer spend cap with maxCostUsd or maxCostMicrousd before starting a scrape. +- Start with small result caps such as maxItems or capability-specific limits. +- Poll next.path while status is running and report the final debitMicrousd. + +Example body: +```json +{ + "maxCostUsd": "0.05", + "waitForFinishSecs": 60, + "handles": [ + "nasa" + ] +} +``` + +### Scrape X/Twitter Replies + +Use `POST /v1/scrape/twitter/replies`. Scrape the public reply thread of an X/Twitter post. Requires maxCostUsd of at least 0.20. + +Side effects: Starts a scrape run and may debit credits when the run finishes. +Polling: If status is running, wait next.afterSecs and call next.method next.path until status is succeeded or failed. + +Safety: +- Send Authorization: Bearer $DEEPAPI_API_KEY and never expose the key. +- Send a unique Idempotency-Key for every POST. +- Set an explicit customer spend cap with maxCostUsd or maxCostMicrousd before starting a scrape. +- Start with small result caps such as maxItems or capability-specific limits. +- Poll next.path while status is running and report the final debitMicrousd. + +Example body: +```json +{ + "maxCostUsd": "0.20", + "waitForFinishSecs": 60, + "url": "https://x.com/NASA/status/1234567890123456789", + "maxItems": 5 +} +``` + +### Scrape YouTube Transcript + +Use `POST /v1/scrape/youtube/transcript`. Scrape the transcript of a YouTube video as plain text plus timed segments. Videos without captions return an empty result. + +Side effects: Starts a scrape run and may debit credits when the run finishes. +Polling: If status is running, wait next.afterSecs and call next.method next.path until status is succeeded or failed. + +Safety: +- Send Authorization: Bearer $DEEPAPI_API_KEY and never expose the key. +- Send a unique Idempotency-Key for every POST. +- Set an explicit customer spend cap with maxCostUsd or maxCostMicrousd before starting a scrape. +- Start with small result caps such as maxItems or capability-specific limits. +- Poll next.path while status is running and report the final debitMicrousd. + +Example body: +```json +{ + "maxCostUsd": "0.05", + "waitForFinishSecs": 60, + "url": "https://www.youtube.com/watch?v=dQw4w9WgXcQ" +} +``` + +### Scrape YouTube Channel + +Use `POST /v1/scrape/youtube/channel`. Scrape a YouTube channel's stats and recent videos. Each video item includes subscriber and channel totals. + +Side effects: Starts a scrape run and may debit credits when the run finishes. +Polling: If status is running, wait next.afterSecs and call next.method next.path until status is succeeded or failed. + +Safety: +- Send Authorization: Bearer $DEEPAPI_API_KEY and never expose the key. +- Send a unique Idempotency-Key for every POST. +- Set an explicit customer spend cap with maxCostUsd or maxCostMicrousd before starting a scrape. +- Start with small result caps such as maxItems or capability-specific limits. +- Poll next.path while status is running and report the final debitMicrousd. + +Example body: +```json +{ + "maxCostUsd": "0.30", + "waitForFinishSecs": 60, + "channels": [ + "mkbhd" + ], + "maxItems": 3 +} +``` + +### Search YouTube + +Use `POST /v1/scrape/youtube/search`. Search YouTube videos by keyword and return video metadata. + +Side effects: Starts a scrape run and may debit credits when the run finishes. +Polling: If status is running, wait next.afterSecs and call next.method next.path until status is succeeded or failed. + +Safety: +- Send Authorization: Bearer $DEEPAPI_API_KEY and never expose the key. +- Send a unique Idempotency-Key for every POST. +- Set an explicit customer spend cap with maxCostUsd or maxCostMicrousd before starting a scrape. +- Start with small result caps such as maxItems or capability-specific limits. +- Poll next.path while status is running and report the final debitMicrousd. + +Example body: +```json +{ + "maxCostUsd": "0.10", + "waitForFinishSecs": 60, + "query": "ai agents", + "sort": "views", + "maxItems": 3 +} +``` + +### Scrape LinkedIn + +Use `POST /v1/scrape/linkedin`. Backward-compatible alias for LinkedIn profile scraping. + +Side effects: Starts a scrape run and may debit credits when the run finishes. +Polling: If status is running, wait next.afterSecs and call next.method next.path until status is succeeded or failed. + +Safety: +- Send Authorization: Bearer $DEEPAPI_API_KEY and never expose the key. +- Send a unique Idempotency-Key for every POST. +- Set an explicit customer spend cap with maxCostUsd or maxCostMicrousd before starting a scrape. +- Start with small result caps such as maxItems or capability-specific limits. +- Poll next.path while status is running and report the final debitMicrousd. + +Example body: +```json +{ + "maxCostUsd": "0.05", + "waitForFinishSecs": 60, + "profiles": [ + "williamhgates" + ] +} +``` + +### Scrape GitHub + +Use `POST /v1/scrape/github`. Backward-compatible alias for GitHub profile scraping. + +Side effects: Starts a scrape run and may debit credits when the run finishes. +Polling: If status is running, wait next.afterSecs and call next.method next.path until status is succeeded or failed. + +Safety: +- Send Authorization: Bearer $DEEPAPI_API_KEY and never expose the key. +- Send a unique Idempotency-Key for every POST. +- Set an explicit customer spend cap with maxCostUsd or maxCostMicrousd before starting a scrape. +- Start with small result caps such as maxItems or capability-specific limits. +- Poll next.path while status is running and report the final debitMicrousd. + +Example body: +```json +{ + "maxCostUsd": "0.03", + "waitForFinishSecs": 60, + "usernames": [ + "octocat" + ] +} +``` + +### Scrape Twitter + +Use `POST /v1/scrape/twitter`. Backward-compatible alias for X/Twitter search scraping. + +Side effects: Starts a scrape run and may debit credits when the run finishes. +Polling: If status is running, wait next.afterSecs and call next.method next.path until status is succeeded or failed. + +Safety: +- Send Authorization: Bearer $DEEPAPI_API_KEY and never expose the key. +- Send a unique Idempotency-Key for every POST. +- Set an explicit customer spend cap with maxCostUsd or maxCostMicrousd before starting a scrape. +- Start with small result caps such as maxItems or capability-specific limits. +- Poll next.path while status is running and report the final debitMicrousd. + +Example body: +```json +{ + "maxCostUsd": "0.03", + "waitForFinishSecs": 60, + "handles": [ + "nasa" + ], + "maxItems": 1, + "sort": "latest" +} +``` + +### Send Email + +Use `POST /v1/email/send`. Create an email draft from a workspace email identity; set send=true to send it. + +Side effects: Creates a draft, or sends an email when direct send is approved. +Polling: This route returns a terminal envelope directly. + +Safety: +- Send Authorization: Bearer $DEEPAPI_API_KEY and never expose the key. +- Send a unique Idempotency-Key for every POST. +- Keep send=false or mode=draft unless the user explicitly approves sending. +- Do not pass inboxId or inbox_id; use emailIdentityId or the workspace default. +- Attachments, hidden HTML, image HTML, URL shorteners, and high-risk direct sends are blocked by policy. + +Example body: +```json +{ + "to": "", + "subject": "Quick hello", + "text": "Hi, this is a draft from my agent.", + "send": false +} +``` + +### Receive Email + +Use `GET /v1/email/messages`. Read messages for a workspace email identity. + +Side effects: Reads messages only. +Polling: This route returns a terminal envelope directly. + +Safety: +- Send Authorization: Bearer $DEEPAPI_API_KEY and never expose the key. +- Do not pass inboxId or inbox_id; use emailIdentityId or the workspace default. + +### List Drafts + +Use `GET /v1/email/drafts`. List pending email drafts for a workspace email identity. + +Side effects: Reads drafts only. +Polling: This route returns a terminal envelope directly. + +Safety: +- Send Authorization: Bearer $DEEPAPI_API_KEY and never expose the key. +- Do not pass inboxId or inbox_id; use emailIdentityId or the workspace default. + +### Send Draft + +Use `POST /v1/email/drafts/{draftId}/send`. Approve and send an existing draft by draftId after review. + +Side effects: Sends the reviewed draft as a real email when direct send is approved. +Polling: This route returns a terminal envelope directly. + +Safety: +- Send Authorization: Bearer $DEEPAPI_API_KEY and never expose the key. +- Send a unique Idempotency-Key for every POST. +- Only send a draft after the user explicitly approves that draft. +- Do not pass inboxId or inbox_id; use emailIdentityId or the workspace default. +- Sending re-checks recipient and content policy against the stored draft; blocked drafts stay drafts. + +Example body: +```json +{} +``` + +### Deep Research + +Use `POST /v1/research/deep`. Answer a research question with current web evidence. + +Side effects: Runs a paid web research request and debits credits when finished. +Polling: This route returns a terminal envelope directly. + +Safety: +- Send Authorization: Bearer $DEEPAPI_API_KEY and never expose the key. +- Send a unique Idempotency-Key for every POST. +- Use query for the research question and context only for relevant background. +- Set maxCostUsd when you need a lower or higher spend cap than the default. +- Report debitMicrousd and summarize the returned sources when sources are present. + +Example body: +```json +{ + "query": "What changed in EU AI Act compliance timelines for API startups?", + "context": "We sell API tooling to EU customers.", + "maxCostUsd": "0.10" +} +``` + +### Generate Image + +Use `POST /v1/generate/image`. Generate an image from a text prompt. + +Side effects: Runs a paid image generation request and debits credits when finished. +Polling: This route returns a terminal envelope directly. + +Safety: +- Send Authorization: Bearer $DEEPAPI_API_KEY and never expose the key. +- Send a unique Idempotency-Key for every POST. +- Describe the image you want in prompt, including style and composition. +- Set maxCostUsd when you need a lower or higher spend cap than the default. +- output.images contains base64 data URLs; save them to files instead of printing them. + +Example body: +```json +{ + "prompt": "A minimal flat illustration of a rocket launching from a laptop screen", + "maxCostUsd": "0.20" +} +``` + +### Web Search + +Use `POST /v1/search/web`. Search the web and return ranked results with title, url, and snippet. + +Side effects: Runs a paid web search request and debits credits when finished. +Polling: This route returns a terminal envelope directly. + +Safety: +- Send Authorization: Bearer $DEEPAPI_API_KEY and never expose the key. +- Send a unique Idempotency-Key for every POST. +- Use query for the search terms only; keep it under 500 characters. +- Set maxCostUsd when you need a lower or higher spend cap than the default. +- Treat snippets as page summaries; open a result URL when you need the full content. + +Example body: +```json +{ + "query": "latest stable Node.js LTS version", + "maxResults": 3, + "maxCostUsd": "0.05" +} +``` + +### Request Status + +Use `GET /v1/requests/{requestId}`. Poll a running request by requestId. + +Side effects: Reads or refreshes request status. +Polling: If status is running, wait next.afterSecs and call next.method next.path until status is succeeded or failed. + +Safety: +- Send Authorization: Bearer $DEEPAPI_API_KEY and never expose the key. +- Only poll request ids created by the same API key. + +Example query: `waitForFinishSecs=60` + +## Limitations + +- Adapted from `davidondrej/skills`; verify local paths, tools, credentials, and agent features before acting. +- For commands, remote access, scheduling, browser automation, or file-changing workflows, get explicit user approval and confirm the target environment first. diff --git a/antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/distribute-skill-to-all-agents/SKILL.md b/antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/distribute-skill-to-all-agents/SKILL.md new file mode 100644 index 00000000..9fcbb0ff --- /dev/null +++ b/antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/distribute-skill-to-all-agents/SKILL.md @@ -0,0 +1,85 @@ +--- +name: distribute-skill-to-all-agents +description: "Distribute a skill across configured agent skill folders while respecting local symlink layouts." +category: development +risk: critical +source: community +source_repo: davidondrej/skills +source_type: community +date_added: "2026-07-07" +author: davidondrej +tags: [skills, distribution, agents] +tools: [claude, codex] +license: "MIT" +license_source: "https://github.com/davidondrej/skills/blob/main/LICENSE" +--- + +# Distribute a Skill Across All Agents + +## When to Use + +- Use when a skill should be made available across multiple local agent skill folders. +- Use when the user asks to sync or distribute skill updates to other agents. + +The user has 4 agent skill locations on his MacBook. A skill must exist in each (or via symlink) to be discoverable by every agent. + +## The 4 Canonical Locations + +| Agent | Skills Folder | Notes | +|---|---|---| +| Codex / OpenAI Agents | `~/.agents/skills/` | **Canonical** — author skills here first | +| Claude Code | `~/.claude/skills/` | **Symlink → `~/.agents/skills/`** — writing to `.agents/skills` automatically covers Claude | +| Pi Agent | `~/.pi/agent/skills/` | **Symlink → `~/.agents/skills/`** — auto-covered. (Path is `/agent/` nested — NOT `~/.pi/skills/`) | +| Hermes Agent | `~/.hermes/skills/` | Independent copy — the only one needing a manual copy | + +## Workflow + +1. **Author the skill in `~/.agents/skills//SKILL.md`** (canonical). Follow `effective-agent-skills` SKILL.md guidance. +2. **Verify the `.claude` symlink is intact** (one-time check): + ```bash + ls -la ~/.claude/skills + # Expect: ~/.claude/skills -> ~/.agents/skills + ``` + If it's a real directory instead of a symlink, the user has diverged copies — ask before touching. +3. **Copy to `.hermes` only** (`.claude` and `.pi` are symlinks — already covered): + ```bash + SKILL= + cp -r ~/.agents/skills/$SKILL ~/.hermes/skills/ + ``` +4. **Verify all 4 locations** show identical byte counts: + ```bash + for p in ~/.agents/skills/$SKILL ~/.claude/skills/$SKILL ~/.pi/agent/skills/$SKILL ~/.hermes/skills/$SKILL; do + echo "$p: $(wc -c < $p/SKILL.md) bytes" + done + ``` + All four numbers must match. If `.claude` or `.pi` shows a different byte count, that symlink is broken — investigate before proceeding. + +## Updating an Existing Distributed Skill + +Same flow — re-copy from `~/.agents/skills/` to `.hermes/skills/`. The `.claude` and `.pi` symlinks update automatically. `cp -r` overwrites by default; use `rsync -a --delete` if the skill folder has nested files that may have been removed: + +```bash +rsync -a --delete ~/.agents/skills/$SKILL/ ~/.hermes/skills/$SKILL/ +``` + +## Pitfalls + +- **`~/.pi/skills/` is the wrong location.** Pi Agent loads from `~/.pi/agent/skills/` only. A skill placed in `~/.pi/skills/` is invisible. If you find skills already there, they're orphans — confirm with the user before deleting. +- **`~/.claude/skills` is a symlink, not a folder.** `cp -r ~/.agents/skills/foo ~/.claude/skills/` will error with "are identical". Skip the explicit Claude copy. +- **Project-local skills exist too** — `./.pi/agent/skills/` (or `.pi/skills/`) inside a repo overrides the global one on collision (later-discovered wins). This skill only handles GLOBAL distribution. +- **`.pi/agent/skills` is a symlink → `.agents/skills`.** Don't `cp` into it (errors "are identical"); it auto-syncs. Only `.hermes/skills` is an independent copy — don't unilaterally consolidate Hermes into a symlink unless the user asks. +- **Hermes snapshots skills at session start.** A newly-distributed skill won't appear inside a running Hermes session until restart (it works fine for future sessions and for the other 3 agents immediately). +- **Filename casing matters on case-sensitive volumes.** `SKILL.md` must be uppercase. + +## When NOT to Use This Skill + +- Skill is project-specific → put it in `./.claude/skills/`, `./.pi/agent/skills/`, etc. inside the repo, not globally. +- Editing one agent's skill only (e.g. a Hermes-only workflow) → patch that file directly, don't propagate. +- Removing a skill globally is destructive. First show the exact skill directories + that would be removed, confirm with the user, then use the user's preferred + safe deletion method for `~/.agents/skills/` and `~/.hermes/skills/`. + +## Limitations + +- Adapted from `davidondrej/skills`; verify local paths, tools, credentials, and agent features before acting. +- For commands, remote access, scheduling, browser automation, or file-changing workflows, get explicit user approval and confirm the target environment first. diff --git a/antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/effective-agent-skills/SKILL.md b/antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/effective-agent-skills/SKILL.md new file mode 100644 index 00000000..7d6b3f03 --- /dev/null +++ b/antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/effective-agent-skills/SKILL.md @@ -0,0 +1,333 @@ +--- +name: effective-agent-skills +description: "Author and review high-quality agent skills with triggers, progressive disclosure, and safety notes." +category: development +risk: safe +source: community +source_repo: davidondrej/skills +source_type: community +date_added: "2026-07-07" +author: davidondrej +tags: [skills, authoring, quality] +tools: [claude, codex] +license: "MIT" +license_source: "https://github.com/davidondrej/skills/blob/main/LICENSE" +--- + +# Agent Skills: A Complete Guide + +## When to Use + +- Use when creating, editing, reviewing, or debugging an agent SKILL.md file. +- Use when you need quality guidance for triggers, examples, limitations, and safety notes. + +A consolidated reference on what agent skills are, why they exist, how they work, and how to write effective ones. + +--- + +## 1. What agent skills are + +An Agent Skill is a folder containing a `SKILL.md` file (YAML frontmatter + markdown instructions), plus optional subfolders for scripts, references, and assets that the agent loads on demand. + +``` +my-skill/ +├── SKILL.md # Required: metadata + instructions +├── scripts/ # Optional: executable code (CLIs, validators, helpers) +├── references/ # Optional: detailed docs loaded only when needed +└── assets/ # Optional: templates, fonts, static files +``` + +Skills are an open standard (agentskills.io), originally created by Anthropic and adopted by OpenAI Codex, Cursor, Gemini CLI, Microsoft Agent Framework, Google ADK, and 40+ other agent products. A skill written once works across all compatible agents. + +--- + +## 2. Why this abstraction exists + +Base LLMs are generalists. Real work requires procedural knowledge, organizational context, and repeatable workflows. Every prior alternative had a failure mode: + +| Approach | Problem | +|---|---| +| Stuff it into the system prompt | Always loaded → context bloat at scale | +| Re-paste instructions each session | No version control, no consistency | +| Fine-tuning | Slow, expensive, opaque, vendor-locked | +| MCP servers alone | Give the agent tools but no workflows for using them | + +Skills solve four problems at once: + +- **Context efficiency** — instructions load only when relevant +- **Repeatability** — multi-step procedures become auditable workflows +- **Composability** — multiple skills combine at runtime per task +- **Portability** — same files work across vendors and surfaces + +Mental model: skills are to LLMs what man pages, runbooks, and team handbooks are to engineers — reference material loaded into working memory only when the task demands it. + +--- + +## 3. How they work — progressive disclosure + +The architectural core. Three-stage loading: + +**Level 1 — Discovery (~100 tokens per skill, always in context):** +Only `name` + `description` from frontmatter are injected into the system prompt at startup. Agent knows the skill exists and when it applies. You can install dozens of skills with negligible overhead. + +**Level 2 — Activation (<5,000 tokens, loaded on match):** +When the user's request matches a skill's description, the agent reads the full `SKILL.md` body into context. + +**Level 3 — Execution (unbounded, on demand):** +The agent reads referenced files (`references/foo.md`) or runs scripts (`scripts/validate.py`) only as needed. Scripts can execute without their source being loaded into context at all. + +This is why bundled content has no practical limit. Files don't consume tokens until accessed. + +--- + +## 4. SKILL.md anatomy + +```markdown +--- +name: skill-name +description: What this skill does AND when to use it. Include trigger phrases the user will say. +--- + +# Skill Name + +## Quick start +[Minimal working example] + +## Workflow +[Step-by-step procedure with checklists] + +## Output format +[What the user/agent should expect back] + +## Advanced +[Link to references/ for rarely-needed detail] +``` + +Frontmatter constraints: +- `name` is lowercase, hyphens only, 1–64 chars, **exactly matches the parent folder name** +- Avoid `<` and `>` in frontmatter (they can inject into the system prompt) +- Invalid YAML silently prevents loading + +Optional standard fields: +- `disable-model-invocation: true` — stops the agent from auto-loading the skill based on the conversation; it can only be triggered manually (e.g. `/skill-name`). Now a standard Agent Skills spec field, so it works across spec-compliant clients (Claude Code, Copilot, etc.), not just Claude. Caveat: it prevents auto-invocation, but some clients (Claude Code, open bug) still inject the `description` into context, so it doesn't always save the discovery-level tokens. Use for manual-only utilities you don't want firing automatically. + +--- + +## 5. Two design philosophies + +Skills tend to fall into one of two patterns. Both are valid; they solve different problems. + +### Pattern A — Capability primitives (tool wrappers) +The skill is a thin wrapper over a deterministic CLI or script. Logic lives in code. SKILL.md teaches the agent how to invoke it. + +- **Adds**: new capabilities (search, email, browser, API access) +- **Reliability via**: shell tools, not prompts +- **Typical length**: 30–80 lines, mostly command examples +- **Use when**: the bottleneck is "the agent can't do X" + +### Pattern B — Process primitives (cognitive disciplines) +The skill encodes a methodology the agent should follow. Pure prompt engineering — no scripts needed. + +- **Adds**: structured workflows (TDD, code review, design alignment, debugging loops) +- **Reliability via**: explicit procedure, checklists, validation loops +- **Use when**: the bottleneck is "the agent's output quality or process is bad" + +A mature setup uses both. Pattern A gives the agent better tools. Pattern B gives it better methods for using them. + +--- + +## 6. How to write effective skills — do this + +### Description as routing contract +The description is the only thing the agent sees before deciding to load the skill. If your skill doesn't trigger, the description is wrong 95% of the time, not the body. + +Include three elements: +1. **What** the skill does (one phrase) +2. **When** to use it (trigger phrases, situations) +3. **Differentiator** vs related skills (prevents routing conflicts) + +Pattern: `"X via Y. Use for [situations]. [Differentiator: no Z required / faster than W / handles edge case V]."` + +**Never summarize the full workflow in the description.** If the description contains a step-by-step summary of *how* the skill works, the agent tends to follow that summary and skip loading the body. Describe *what* and *when*, never *how*. The description answers "should I open this skill now?" — not "what are the steps?" + +### Keep SKILL.md lean +- Beyond a certain length, you're usually encoding logic that should be in a script or referenced file + +### Bash-first, prose-second +Concrete command examples with inline comments beat prose explanations. The agent pattern-matches on syntax. Show, don't describe. + +### Push determinism into code +Anything fragile, repetitive, or where variation is a bug → script. Use markdown only for tasks requiring judgment. + +### Match strictness to task fragility (degrees of freedom) +Scale instruction rigidity to how costly a wrong move is: +- **Loose natural-language heuristics** when many approaches are valid (e.g. code review). +- **Pseudocode or templates** when there's a preferred pattern but variation is acceptable (e.g. report format). +- **Exact scripts and strict step lists** when the workflow is fragile, error-prone, or consistency-critical (e.g. migrations, document patching). + +### Build validation loops +The single biggest output quality improvement: state a verify → fix → re-verify loop explicitly. + +- Document skills: visual QA pass before delivery +- Code skills: tests pass + zero type errors before completion +- Data skills: schema validation before output + +### State-check before action +Don't assume setup is done. Instruct the agent to verify state, then branch: +``` +First check if X is configured: [command] +If not, walk the user through setup: [steps] +``` + +### Just-in-time loading with explicit pointers +Tell the agent exactly when to read each referenced file: +``` +For standard cases, follow the steps below. +For [specific edge case], read references/edge-cases.md first. +``` + +### Keep references one level deep +Link referenced files directly from SKILL.md. Never build chains (SKILL.md → advanced.md → details.md → actual.md) — the agent may preview nested files only partially and miss critical instructions. Add a table of contents to any reference file longer than 100 lines. + +### Document output formats +If your script returns structured data, show the agent what it looks like. Enables reliable downstream parsing. + +### Defer to --help for completeness +List the 80% common operations in SKILL.md. Tell the agent to run `tool --help` for the rest. Keeps SKILL.md small without losing functionality. + +### Compose primitives, don't bundle workflows +One skill = one capability or one discipline. Resist bundling concerns into "the X workflow." Multiple small skills combine at runtime; one large skill is rigid. + +### Cite established principles when applicable +If your skill encodes a known engineering methodology (TDD, DDD, red-green-refactor), name the source. Gives the agent a coherent model to align with and gives users a way to verify the design. + +### Persistent artifacts for cross-session memory +Skills can write to repo-level files (CONTEXT.md, ADRs, decision logs) that future agent sessions read. This is how you fight the "agents have no memory" problem at the architecture level. + +--- + +## 7. What not to do — anti-patterns + +### Don't re-teach what the model already knows +Every line in SKILL.md should provide context the model doesn't already have. No Python syntax tutorials. No "what is git." Challenge every paragraph. + +### Don't include human-facing docs +No README.md, no CHANGELOG.md, no INSTALLATION_GUIDE.md inside the skill folder. Skills are for agents. + +### Don't write vague descriptions +- Bad: "A helpful skill for documents" +- Good: "Fill PDF form fields, extract form data, flatten completed PDFs. Use when the user mentions PDF forms, fillable forms, or programmatic field population." + +### Don't bundle library code +If you need a parsing library, install via npm/pip. Don't paste source into the skill. + +### Don't write monolithic mega-skills +If one skill does design + planning + implementation + testing + deployment, you've built a framework, not a skill. Split it. + +### Don't assume the agent will infer +Be explicit about every step that matters. +- Bad: "Then deploy it." +- Good: "Run `npm run deploy:staging` and wait for HTTP 200 from /healthz before reporting success." + +### Don't write style-only variants +A skill that just changes tone or formatting belongs in user preferences or a system prompt, not a skill. + +### Don't ignore failure modes +For every workflow step that can fail, document what failure looks like and what to do. Happy-path-only skills break in production. + +### Don't include time-sensitive information +"As of Q4 2024..." rots fast. Fetch live data via script or omit. + +### Don't use absolute paths +Always relative. Forward slashes regardless of OS. Use runtime placeholders for skill-directory references. + +### Don't trust unfamiliar skills +Skills can execute arbitrary code and steer agent behavior. A malicious skill is a data exfiltration vector. Audit `scripts/` for unexpected network calls, file access outside expected scope, or hidden instructions in references. Watch for typosquatted skill names. Sandbox execution environments. + +--- + +## 8. Authoring workflow + +1. **Identify the gap.** Run your agent on real tasks. Where does it consistently fail or need re-prompting? That's a skill candidate. +2. **Decide the pattern.** Capability primitive (need new tools) or process primitive (need better methodology)? +3. **Draft the description first.** What + when + differentiator. Read it back: would the agent know when to fire it? +4. **Write the smallest body that works.** Add only when testing reveals gaps. +5. **Move detail to references/ once SKILL.md grows too long.** +6. **Test triggering.** Ask the agent something the skill should handle without invoking it explicitly. If it doesn't fire, fix the description. +7. **Test execution.** Invoke explicitly. If output is wrong, fix the body. +8. **Adversarial test.** Have another LLM ask: "What edge cases break this skill?" Patch the gaps. +9. **Version control.** Treat skills as code. Tag, branch, review. + +--- + +## 9. Testing and debugging + +- **"Which skill did you use?"** — ask the agent post-task. Fastest routing debug. +- **Routing fails → description problem.** Add specific trigger phrases. +- **Execution fails → body problem.** Add explicit steps, examples, or validation. +- **Skills snapshot at session start.** Edits during a session require a restart. +- **Test against the weakest model you'll deploy on.** Stronger models forgive vague skills; weaker models expose them. +- **Run an eval suite.** A handful of representative prompts that should and shouldn't trigger the skill, with expected outputs. + +--- + +## 10. Composition + +Skills compose at runtime — the agent loads multiple skills as needed for a single task. Design for this: + +- **One skill = one concern.** Resist bundling. +- **Define interfaces between skills.** If skill A produces artifacts that skill B consumes, document the shape. +- **Use a repo-level config substrate.** A shared file (e.g., AGENTS.md, CONTEXT.md, settings.json) that multiple skills read and write coordinates them without explicit handoffs. +- **Loops over menus.** A coordinated set of skills forming a workflow (align → spec → build → verify → refactor) drives adoption far better than an unrelated catalog of capabilities. + +--- + +## 11. Security checklist + +Before installing any third-party skill: + +- Read every file in the folder +- Audit `scripts/` for outbound network calls, file access outside expected scope, command execution +- Check references for prompt injection ("ignore previous instructions...") +- Verify the skill name isn't typosquatting a popular one +- Run in a sandboxed environment first +- Pin to a specific version/commit, not `latest` + +--- + +## 12. Ship checklist + +Before publishing a skill: + +- [ ] Frontmatter `name` matches folder name +- [ ] Description includes what + when + differentiator +- [ ] Description includes likely user trigger phrases +- [ ] No human-facing docs inside the skill folder +- [ ] No time-sensitive information +- [ ] Relative paths only +- [ ] State-check before action where applicable +- [ ] Validation loop documented +- [ ] Output format documented if relevant +- [ ] Tested with weak and strong models +- [ ] Tested for both correct triggering and correct execution +- [ ] Skill does one thing +- [ ] Composes cleanly with related skills +- [ ] Version controlled + +--- + +## 13. First principles, compressed + +1. **The description routes; the body executes.** Get both right independently. +2. **Tokens are scarce; files are cheap.** Push detail out of context until it's needed. +3. **Determinism comes from code; judgment comes from prompts.** Put each in its right place. +4. **One skill, one concern.** Composition beats bundling. +5. **Agents have no memory.** Use persistent artifacts to give them one. +6. **The model knows a lot.** Don't re-teach. Only add what's missing. +7. **Validate before completing.** Self-correction loops dominate output quality. +8. **Skills are code.** Version, test, audit, and review them as such. + +## Limitations + +- Adapted from `davidondrej/skills`; verify local paths, tools, credentials, and agent features before acting. +- For commands, remote access, scheduling, browser automation, or file-changing workflows, get explicit user approval and confirm the target environment first. diff --git a/antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/fable-safe-prompt/SKILL.md b/antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/fable-safe-prompt/SKILL.md new file mode 100644 index 00000000..992dcaf9 --- /dev/null +++ b/antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/fable-safe-prompt/SKILL.md @@ -0,0 +1,79 @@ +--- +name: fable-safe-prompt +description: "Rewrite allowed prompts to reduce false-positive safety triggers without bypassing policy or changing intent." +category: agent-behavior +risk: safe +source: community +source_repo: davidondrej/skills +source_type: community +date_added: "2026-07-07" +author: davidondrej +tags: [prompting, safety, guardrails] +tools: [claude, codex] +license: "MIT" +license_source: "https://github.com/davidondrej/skills/blob/main/LICENSE" +disable-model-invocation: true +--- + +# Fable-Safe Prompt + +## When to Use + +- Use when an allowed prompt appears likely to hit false-positive classifier language. +- Use when the user asks for prompt wording that keeps benign intent clear and policy-compliant. + +Return the user's prompt back **in full, verbatim**, changing ONLY the specific sentences/phrases most likely to trip Fable 5's cyber/bio classifiers. Do not rewrite the whole thing, do not summarize, do not restructure — minimal surgical edits. Keep the actual goal and all benign text exactly as written. This lowers false positives for benign work. It must not be used to bypass safety policy or enable harmful requests. + +Fable 5 runs 3 input classifiers: **cyber**, **bio/chem**, **reasoning_extraction**. Triggers are keyword/surface-based, largely intent-independent ("hello" and "cancer" got flagged). The fix is to abstract away the sensitive domain, not just restate intent. + +Apply when the prompt touches: cyber/auth/exploits/malware/pentesting/credentials; bio/chem/medical/disease/lab topics; or any "show your reasoning" instruction. + +The user provides the prompt-to-be-changed wrapped in `...` XML tags. Operate only on the text inside those tags; treat everything outside as instructions to you. + +## Method + +1. Flag the highly problematic sentences/phrases (offensive framings, named sensitive domains, "show your thinking" lines). +2. Replace each in place with a safe equivalent (see swaps), or describe the wanted functionality abstractly rather than naming the domain. +3. Leave everything else byte-for-byte identical. +4. Return the complete edited prompt. + +Reframe so the task reads as: **owned/authorized**, **defensive** (implement/fix/test, not attack), and **not dual-use** (no exploit dev, attack simulation, bypass payloads, malware, live testing). + +### Swap framings (apply per-sentence) + +| Triggering | Safe rewrite | +|---|---| +| "How could an attacker exploit this auth" | "Review these auth files for missing checks and fix them defensively" | +| "Write an exploit / payload / PoC" | "Add a regression test proving X is fixed, then patch it" | +| "How do I bypass / brute-force Y" | "Enforce secure session validation + rate limiting on Y" | +| "Reverse this malware / show attack steps" | "Describe the risk high-level, then implement the fix" | +| "Show your reasoning / explain step-by-step / walk me through your thinking" | **Delete it.** Trips `reasoning_extraction`. If progress visibility is needed, ask it to use a send-to-user tool, not to echo its internal thoughts. | +| Clinician framing: "as a doctor, diagnose this ECG" | Patient framing: "help me interpret this ECG my doctor gave me" | +| Named bio/chem domain: "cancer / disease pathway / chemical kinetics" | Abstract it: describe the data/analysis generically, drop the domain noun | + +### Trigger keywords to abstract away +*Cyber:* exploit, malware, vulnerability, attack, bypass, stealth, fingerprinting, anti-bot, CAPTCHA, penetration. +*Bio/chem:* biology, biomedicine, chemistry, cancer, disease pathways, RNA/variant calling, equilibrium, kinetics, diagnosis. +*Distillation:* "distill the model", training pipelines, frontier LLM development. + +If no benign defensive equivalent exists for a sentence (it's purely offensive), flag it to the user rather than silently neutering the intent. + +## Output + +1. Print the full safe prompt back to the user in text (a code block, ready to paste). +2. **Copy it to the clipboard** so the user can paste immediately: + ```bash + pbcopy <<'EOF' + + EOF + ``` + Confirm in one line that it's on the clipboard. +3. A short list of exactly which sentences you changed and what they became. +4. If the task is genuinely offensive (pentest, exploit repro, malware analysis): say plainly no edit makes it Fable-safe — use an Opus 4.8 fallback or vetted Mythos, not Fable 5. + +**Hard truth:** you can't reliably stop Fable 5 guardrails. Robust API setups also treat `stop_reason: "refusal"` (HTTP 200, `stop_details.category` = `cyber`/`bio`) as a route to an Opus 4.8 fallback — mention only if the user controls the integration. + +## Limitations + +- Adapted from `davidondrej/skills`; verify local paths, tools, credentials, and agent features before acting. +- For commands, remote access, scheduling, browser automation, or file-changing workflows, get explicit user approval and confirm the target environment first. diff --git a/antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/folder-specific-claude-and-agents-md/SKILL.md b/antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/folder-specific-claude-and-agents-md/SKILL.md new file mode 100644 index 00000000..0feb9654 --- /dev/null +++ b/antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/folder-specific-claude-and-agents-md/SKILL.md @@ -0,0 +1,96 @@ +--- +name: folder-specific-claude-and-agents-md +description: "Create folder-scoped CLAUDE.md and AGENTS.md guidance for future agents working in that area." +category: development +risk: critical +source: community +source_repo: davidondrej/skills +source_type: community +date_added: "2026-07-07" +author: davidondrej +tags: [agents-md, claude-md, documentation] +tools: [claude, codex] +license: "MIT" +license_source: "https://github.com/davidondrej/skills/blob/main/LICENSE" +user-invocable: true +--- + +# Folder CLAUDE.md Creation + +## When to Use + +- Use when the user asks for folder-specific agent instructions or local context files. +- Use when a subdirectory needs a CLAUDE.md and AGENTS.md handoff for future agents. + +Generate a focused `CLAUDE.md` inside a target folder, plus an `AGENTS.md` symlink pointing at it. The file gives any future agent (Claude Code, Codex, etc.) the folder-specific context the global `CLAUDE.md` doesn't cover. + +Background reference: `library/claude-code/claude-and-agents-md.md`. + +## Process + +### Step 1: Confirm the target folder + sanity-check it deserves a file +Ask the user which folder. Use absolute path under `~/Documents/code/workspace/`. + +**Only create a file if the folder has context needed across multiple sessions** — active evolving work, specific conventions, ongoing decisions. A folder of static reference files does NOT need one (agents can read on demand). If unsure, ask the user. + +### Step 2: Read every file in the folder IN FULL +- Use `ls -la` first to enumerate files and subfolders. +- Read every markdown, config, and key source file. +- For large tldraw/Vite subprojects: read `package.json`, `src/App.tsx`, one representative module file, and the folder's own `module-details.md`-style files. +- Do NOT skim. Do NOT skip. The user's later edits depend on you having full context. + +### Step 3: Draft a bullet list of candidate content +Before writing the file, give the user a bullet list grouped by section — let them react first. Candidate sections (skip any that don't apply): + +- **Product / Purpose** — what this folder/project is, current state, key metrics +- **Avatar / Audience** — who it's for (if applicable) +- **Essential Files** — one-line role for each important file, including cross-folder references (use `@path/file.md` import syntax) +- **Constraints (MUST NOT)** — explicit hard negatives. Highest-ROI content in the file. +- **Conventions** — the user's lingo, status emojis (✅ 🟡), naming patterns, "usually do" patterns +- **Locked Decisions** — things agreed + dated, must not re-litigate +- **Context** — history, authority, credibility that frames the work +- **How to work with the user** — collaboration style for this specific folder +- **Marketing Angles / Positioning** — if public-facing +- **Top Insights** — 3-5 most glaring signals from research (if research exists) + +### Step 4: Iterate with the user +- Keep answers short. The user will edit directly in the IDE. +- When they edit the file, RE-READ it and flag: contradictions, typos, missing rules, wrong categorization. +- Do not revert their edits unless asked. + +### Step 5: Write the file +- Path: `/CLAUDE.md` +- Start with a one-line header explaining the file's purpose. +- **Subdir file marker:** if this is a subdirectory file (parent folder already has its own CLAUDE.md), open with `Apply root CLAUDE.md first, then this file.` +- Use `##` section headers matching the sections the user approved. +- Bullets over prose. Short bullets. +- **Cross-folder references:** use `@relative/path/file.md` import syntax, not prose mentions. +- **Heavy reference docs:** annotate with `**Read when:**` triggers (e.g. "Read when: writing offer copy"). Prevents loading every session. + +### Step 6: Create the AGENTS.md symlink +``` +cd && ln -s CLAUDE.md AGENTS.md +``` +Verify with `ls -la CLAUDE.md AGENTS.md`. + +### Step 7: Commit only when asked +Do NOT stage or push unless the user says to. When they do: `git add -A`, commit with a `Day N:` style message, push. + +## Rules + +- **Never invent content.** Every bullet must trace back to something you read in the folder or something the user said. No generic boilerplate. +- **Brevity wins.** The user edits aggressively to make things shorter. Start tight. +- **Folder-scoped only.** Don't duplicate the global `CLAUDE.md` (personality, dates, ports, etc.). Only include what's specific to this folder. +- **No file trees, no directory dumps, no stack details the code already shows.** Anything an agent can derive from `ls` or `grep` rots fast and wastes tokens. Pin decisions, rules, and context — not structure. +- **Constraints vs Conventions.** Hard "MUST NOT" rules go in Constraints (explicit negatives). "Usually do X" patterns go in Conventions. Splitting these improves adherence. +- **No absolute ALWAYS/NEVER without explicit exceptions.** Edge cases make absolute rules get ignored. "Never commit secrets EXCEPT `.env.example`" beats "never commit secrets." +- **Never summarize or auto-shorten the file.** Context collapse degrades it. Grow deliberately, prune manually. If the user asks to trim, do it by hand. +- **Maintenance loop.** When the user corrects the agent on something this file should have prevented, add the rule to the file immediately. Don't wait. +- **No emojis unless the user uses them** (status markers ✅ 🟡 are the exception — they're already conventions). +- **Symlink, not copy.** `AGENTS.md` must be a symlink so edits stay in sync. +- **Flag gaps honestly.** If the user's edits introduce contradictions (e.g. "sell X" in one section and "never sell X" in another), call it out before they ask. + +## Limitations + +- Adapted from `davidondrej/skills`; verify local paths, tools, credentials, and agent features before acting. +- For commands, remote access, scheduling, browser automation, or file-changing workflows, get explicit user approval and confirm the target environment first. diff --git a/antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/goal-loop/SKILL.md b/antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/goal-loop/SKILL.md new file mode 100644 index 00000000..89083b99 --- /dev/null +++ b/antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/goal-loop/SKILL.md @@ -0,0 +1,175 @@ +--- +name: goal-loop +description: "Draft and explain persistent goal-loop prompts for long-running agent work with clear stop conditions." +category: agent-orchestration +risk: safe +source: community +source_repo: davidondrej/skills +source_type: community +date_added: "2026-07-07" +author: davidondrej +tags: [goals, autonomy, planning] +tools: [claude, codex] +license: "MIT" +license_source: "https://github.com/davidondrej/skills/blob/main/LICENSE" +--- + +# Agent `/goal` Loop + +## What `/goal` is + +`/goal` is a slash command that turns an agent prompt into a **persistent agent** looping `plan → act → test → review → iterate` until a stop condition is met, the user pauses, or the token budget runs out. Internally called the "Ralph loop." + +Agents with the `/goal` feature right now: **Codex, Claude Code, and Hermes Agent**. + +Key difference from a normal prompt: when a turn ends but the goal isn't met, the agent **auto-continues** instead of waiting for input. + +**Lifecycle states:** `pursuing`, `paused`, `achieved`, `unmet`, `budget-limited`. + +When monitoring a running `/goal`, every check should include a one-line update to the user: what the agent is doing and whether it is on track. Keep it extremely concise. + +**Not:** a budget command, a safety boundary, "run forever", or a replacement for `/plan`. It's a contract enforcer with a verification loop. + +## Requirements + +- An agent with the `/goal` feature — right now: Codex, Claude Code, or Hermes Agent +- The goals feature enabled in the agent's config +- **Subscription auth** — API-key auth does **not** work. A pro-tier plan is the realistic minimum for long runs. + +## When to Use it + +Use only when **all three** are true: +1. Task is >30 min of mechanical work. +2. There's a **verifiable stop condition** (tests pass, coverage hit, eval ≥ X, build green). +3. Repo is agent-ready (working build, decent tests, `AGENTS.md` present). + +Fits: migrations, coverage lifts, TDD feature builds, refactors with contract tests, prompt/eval optimization, deploy retry loops, bug-repro-then-fix. + +Bad fits: exploratory work, vague "improve this", anything without a "done" definition, prod credentials, destructive shared-infra ops. + +## The 5-part contract (every goal needs this) + +1. **Objective** — one sentence, one concrete outcome. +2. **Constraints** — what must NOT change (public API, files, libs, conventions). +3. **Validation command** — the exact shell command that proves progress (`pytest -q`, `pnpm test`, etc.). +4. **Stop condition** — verifiable: "Stop when X passes" OR "when further changes need human/product input." +5. **Documentation** — one sentence instructing the agent to write concise, targeted docs for every change, either creating new `.md` files or updating existing ones. + +Plus: tell the agent what to read first, ask it to work in checkpoints with a short progress log. + +## Writing a goal (the core deliverable) + +When the user wants a quick `/goal` instruction, produce a structured markdown block with one line per contract item (proper newlines, not flowing prose). **Do not prefix the output with `/goal`** — the user adds the slash command themselves in the composer. Emit only the contract body. Template: + +``` +**Objective:** +**Read first:** +**Constraints:** +**Validate:** `` after each change +**Document:** Write concise, targeted documentation for all changes — create new `.md` files or update existing docs as needed. +**Checkpoints:** work in checkpoints and log progress briefly +**Stop when:** , OR when further changes require human/product input +``` + +### Example (migration) + +``` +**Objective:** Migrate this project from Pydantic v1 to v2. +**Read first:** pyproject.toml, src/, tests/ +**Constraints:** no public API changes; keep imports backwards-compatible via shims if needed; no new dependencies +**Validate:** `pytest -q` after each change +**Checkpoints:** work in checkpoints; log progress briefly +**Stop when:** full suite passes with zero deprecation warnings, OR when a change requires architecture decisions +``` + +### Example (coverage lift) + +``` +**Objective:** Raise coverage in src/auth/ from ~38% to ≥75%. +**Read first:** src/auth/, tests/auth/, AGENTS.md +**Constraints:** no new deps; mirror existing test style; do not modify production code unless strictly required for testability +**Validate:** `pytest --cov=src/auth --cov-report=term-missing` +**Checkpoints:** work in checkpoints; log coverage delta each one +**Stop when:** coverage ≥75% AND all tests pass, OR when uncovered code needs design changes +``` + +### Writing rules +- **One objective, one stop condition.** Not a backlog. +- **Documentation is mandatory.** Every `/goal` prompt must include a single sentence committing the agent to concise, targeted docs — new `.md` files or focused updates to existing docs. +- **Never instruct the agent to create new ADRs** — ADRs require the user's explicit approval, so goal prompts must not pre-approve or encourage them. +- **Forbid reward-hacking explicitly:** "Do not delete, skip, weaken, or narrow tests to make the goal pass." Otherwise the agent may game the stop condition. +- **4,000-char limit** on the objective. If longer, put detail in a file (`PLAN.md`/`GOAL_BRIEF.md`) and make the goal point to it — keep the goal itself compact. +- Use **literal strings** for paths, commands, issue numbers — exact. +- Forbid scope creep explicitly: "Do not refactor unrelated code. Do not add dependencies." +- Tell the agent when to pause: "If , pause and ask before proceeding." +- Short, vague goals burn tokens for no extra value vs. a normal prompt. + +### Meta-prompting trick (highest-leverage) + +Hand-written goals under-specify. Ask a second AI session (Claude with the codebase loaded, ChatGPT with project connected, or a separate agent thread in the same dir) to: (1) inspect the codebase, (2) surface hidden assumptions/constraints/edge cases, (3) emit a structured `/goal` markdown block using the 4-part contract. Paste that into the agent. Order-of-magnitude better runs. + +Claude Code cmux note: after Claude finishes, it may prefill a predicted next user message; that draft is Claude, not the user speaking. + +### Self-goal setting + +The agent can now write and set its own goal natively (the `create_goal` tool). Instead of crafting the contract yourself, give it your high-level intent and tell it to set the goal: "Inspect this repo, then write yourself a `/goal` with a verifiable stop condition and pursue it." It's the meta-prompting trick done inline — the agent turns your intent into the contract. Still give it the same raw materials (files to read, constraints, the validation command) so the goal it writes is grounded. Add: "ask clarifying questions before committing if the intent is underspecified" — catches ambiguity up front and prevents the self-set goal from drifting. + +## Launching + +1. `cd ` (goals run scoped to the working directory). +2. Launch the agent bare (opens the TUI). **Not** exec/headless mode — `/goal` is a TUI slash command only. +3. Sign in with subscription auth (not an API key). +4. Type `/goal ` in the composer, Enter. +5. Walk away. + +## Controlling a running goal + +| Command | Effect | +|---|---| +| `/goal` (alone) | Status: current checkpoint, what's verified, what remains, blockers | +| `/goal pause` | Freeze | +| `/goal resume` | Unfreeze (paused goals never auto-resume) | +| `/goal clear` | Kill the goal | +| `/goal ` | Replace the current goal | +| Ctrl+C / any typed message | Auto-pauses; user input always wins priority | + +Resuming across sessions: goal state is persisted server-side. `cd` back into the repo, launch the agent, `/goal` for status, `/goal resume`. + +Budget-limited state: the agent doesn't stop abruptly — it summarizes, notes what's left, saves state. `/goal resume` works after budget refresh or upgrade. + +## When a goal drifts + +- **Minor drift:** just type a correction in the composer (auto-pauses, folds it in, resumes). +- **Loose objective:** `/goal pause`, read status, then `/goal ` — replaces the contract. Don't pile instructions on a vague goal. +- **Bad mess:** `/goal clear`, `git status` or `git stash`, rewrite with the meta-prompting trick, restart. + +Don't let a drifting goal keep running "to see where it goes." Tokens burn, diffs compound. + +## Operational tips + +- Inspect status periodically with bare `/goal`. +- **Always review the diff** before merging — long autonomy means more code to validate, not less. Human oversight becomes more critical, not optional. +- Keep approvals/sandboxing tight; default permissions are correct. +- First run: pick a 30-min scoped task so you learn how `/goal` actually stops before trusting it overnight. +- Bake recurring policy into `AGENTS.md` so every goal inherits it without restating: adversarial self-review before declaring done, an extra QA pass even when tests pass, and the standard validation command. Saves repeating it in each goal paragraph. + +## Troubleshooting + +| Symptom | Fix | +|---|---| +| `/goal` missing from slash popup | Update the agent to a version that supports `/goal` | +| Feature flag on but command missing | Quit and restart the agent fully | +| Typed `/goals` | It's singular: `/goal` | +| Doesn't activate | Sign out, sign back in with subscription auth (not API key) | +| Stopped with progress summary | Budget-limited — `/goal resume` after refresh, or tighten scope | +| `/goal resume` says no active goal | Terminal state or cleared — start fresh with `/goal ` | +| Goal looks active but won't auto-continue | Stuck in Plan mode — plan-only work doesn't trigger continuation. Draft the plan, then switch to Goal execution | + +## Mental model + +`/goal` is a **contract enforcer with a verification loop**, not a "run forever" button. The shift: stop writing prompts, start writing **specifications with stop conditions**. Spend the time upfront defining "done"; the run takes care of itself. + +## Limitations + +- Adapted from `davidondrej/skills`; verify local paths, tools, credentials, and agent features before acting. +- For commands, remote access, scheduling, browser automation, or file-changing workflows, get explicit user approval and confirm the target environment first. diff --git a/antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/interview-style-doc-building/SKILL.md b/antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/interview-style-doc-building/SKILL.md new file mode 100644 index 00000000..8edcf2cb --- /dev/null +++ b/antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/interview-style-doc-building/SKILL.md @@ -0,0 +1,86 @@ +--- +name: interview-style-doc-building +description: "Build structured strategy documents by asking one question at a time and patching the file." +category: productivity +risk: critical +source: community +source_repo: davidondrej/skills +source_type: community +date_added: "2026-07-07" +author: davidondrej +tags: [documentation, interview, planning] +tools: [claude, codex] +license: "MIT" +license_source: "https://github.com/davidondrej/skills/blob/main/LICENSE" +--- + +# Interview-Style Doc Building + +The user's preferred mode for creating durable strategic docs. AI does NOT propose content — AI asks one question, the user answers, AI patches the file, AI asks the next question. The file IS the conversation's output, updated incrementally. + +## When to Use + +- Building a new SSOT file (life priorities, life vision, principles, frameworks, ranked lists). +- Filling out a structured doc the user explicitly wants to author themselves. +- Quarterly/annual reviews where the user's words go into the file. + +**NOT for:** day planning (use `day-plan`), task triage (`organize-tasks`), or anything where AI proposes content first. + +## The Loop + +1. **Create the file** with a skeleton (header, sections, "to be filled in" placeholders). Single `write_file` for the new file. After this, NEVER overwrite — only `patch`. +2. **Ask ONE question.** Concise. Specific. Single-faceted. Open-ended where possible. +3. **Wait for the answer.** Don't ask the next question yet. +4. **Patch the file** with the user's answer in the correct section. +5. **Re-ask** — next question, or follow-up if the answer was incomplete. +6. Repeat until the file is complete. + +## Hard Rules + +- **One question at a time.** Never dump multiple questions in a single message. The user has flagged this. +- **Patch, don't overwrite.** After the initial skeleton, use `patch` for every update. Never `write_file` to an existing doc. +- **Update the file BEFORE asking the next question.** Order: receive answer → patch file → ask next question. Not the reverse. +- **Lists from the user are UNORDERED SETS.** When the user lists items in response to "which X should we cover?" or "what are the Ys?", that is a SET, not a ranking. Never infer rank, priority, or sequence from the order they typed them. If you need ordering, ask explicitly: "Which of these is #1?" +- **Ask dynamics, not names.** When the user references a person, don't ask "who is X?" — ask about the role/dynamic. +- **No snark, no attitude, no filler.** Concise questions, concise acknowledgments. +- **No speculative additions.** Don't invent sections, edge cases, or "anything else?" prompts unless the user asks. + +## Question Design + +- **Domain-discovery, not confirmation.** "What wins against everything else?" — not "Is Business #1?" +- **Surface new reality.** Each question should pull out info AI doesn't already have. +- **Engine-move framing where applicable.** "What's the thing that, if true, makes the rest obvious?" +- **Concrete over abstract.** "What's #2 — the domain that wins against everything except #1?" beats "Tell me about your second priority." + +## File Patching Pattern + +After each answer: +1. Read the relevant section (if not already in context). +2. `patch` with `old_string` = placeholder or previous entry, `new_string` = updated content with the user's words preserved. +3. Confirm the diff. Move on. + +For ranked lists, append one rank at a time: +``` +1. **Business** — Q2 #1 goal: ... +2. **Health** — get below 81.0 kg, sleep 9h/day, ... +``` +Each rank gets patched in as the user confirms it. + +## Common Pitfalls + +- **Assuming order from a set.** The user lists "A, B, C, D" → AI writes "1. A, 2. B, 3. C, 4. D" → the user flags it. ALWAYS confirm rank explicitly. +- **Asking too many questions at once.** Even bundling 2 violates the rule. +- **Overwriting the file** instead of patching specific sections — destroys prior content. +- **Adding AI-generated content** to fill out sections. Sections stay empty until the user provides the content. +- **Skipping the file update** between Q&A pairs — the doc falls out of sync. + +## Pairing with Other Skills + +- `day-plan` — different pattern (task triage), not interview-style. +- `organize-tasks` — Todoist-specific. +- `memory-management` — separate from this; persona/preferences go to memory. + +## Limitations + +- Adapted from `davidondrej/skills`; verify local paths, tools, credentials, and agent features before acting. +- For commands, remote access, scheduling, browser automation, or file-changing workflows, get explicit user approval and confirm the target environment first. diff --git a/antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/linkedin-post-writer/SKILL.md b/antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/linkedin-post-writer/SKILL.md new file mode 100644 index 00000000..6c06bf8d --- /dev/null +++ b/antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/linkedin-post-writer/SKILL.md @@ -0,0 +1,159 @@ +--- +name: linkedin-post-writer +description: "Draft LinkedIn posts from 16 tested hook formulas mapped to engagement goals (comments, reposts, likes, saves), with 2026 algorithm formatting rules and an AI-tell scrub pass before publishing." +category: marketing +risk: none +source: community +source_repo: sergebulaev/linkedin-skills +source_type: community +date_added: "2026-07-06" +author: sergebulaev +tags: [linkedin, copywriting, hooks, social-media, personal-brand, content-marketing] +tools: [claude, codex, cursor, gemini] +license: "MIT" +license_source: "https://github.com/sergebulaev/linkedin-skills/blob/main/LICENSE" +--- + +# LinkedIn Post Writer + +## Overview + +Drafts long-form LinkedIn posts using 16 hook formulas that were reverse-engineered from posts that outperformed their authors' baselines in 2025-2026, each with a reference engagement number. Instead of asking "what should I write", the workflow asks "what should this post earn" (comments, reposts, likes, or saves), shortlists 2-3 matching formulas, fills the chosen skeleton with the user's voice, then scrubs the draft for AI tells before it ships. + +This is the flagship skill from [sergebulaev/linkedin-skills](https://github.com/sergebulaev/linkedin-skills), a 10-skill LinkedIn bundle (writer, humanizer, pre-publish audit, comment drafter, reply handler, hook extractor, content planner, profile optimizer, engager analytics, thread monitor) installable as a Claude Code or Codex plugin. This standalone version covers the drafting workflow; scheduling and publishing automation live in the full bundle. + +## When to Use This Skill + +- Use when the user says "write me a LinkedIn post about X" +- Use when the user has a topic and a rough angle but needs a hook and structure +- Use when the user wants to pick from proven post formats instead of improvising +- Use when a draft exists but the hook is weak and needs a formula-based rebuild +- Not for replying to comments or optimizing profiles; this skill only drafts posts + +## How It Works + +### Step 1: Gather inputs + +Collect: topic, angle, target audience (founders, operators, marketers), desired length (short 300-500, medium 900-1,300, or long 1,500-1,900 characters), and any raw material the user already has (numbers, anecdotes, names). + +### Step 2: Pick the formula by engagement goal first + +Ask (or infer) what the post should earn, then shortlist: + +| Goal | Earned by | Formulas | +|---|---|---| +| Comments | questions, contrarian takes, vulnerability | F4 Time-Anchor Confession, F10 Contrarian + Receipts, F12 Permission Slip, F9 Curiosity-Gap | +| Reposts | quotable maxims, tributes, "X isn't Y" distinctions | F14 Named Gratitude, F2 R.I.P. Obituary, F8 Paid-vs-Free Reversal | +| Likes | emotional stories, celebrations, status-strip | F11 Emotional Cold-Open, F13 Bait-and-Switch Reversal, F16 Status-Strip Humility | +| Saves | simplifications, exact how-to, frameworks | F15 Explain-to-Kids, F7 Odd-Precision Money Ledger, F8 Paid-vs-Free Reversal | + +The full set of 16, with reference engagement: + +| Code | Formula | Reference | Best for | +|---|---|---|---| +| F1 | Platform Risk Anaphora | 4,240 eng | Category and platform-risk arguments | +| F2 | R.I.P. Obituary | 3,822 eng | Era-ending claims, industry pivots | +| F3 | Year-over-Year Pivot | 494 eng, 3.74x baseline | Identity shifts, founder reflection | +| F4 | Time-Anchor Confession | 1,519+ eng | Vulnerability, voice reset | +| F5 | Self-Proving Meta | 1,082 eng, 435 comments | Commitments and tests in public | +| F6 | Comment-Gate Lead Magnet | 717-3,008 eng | List building (max once a month) | +| F7 | Odd-Precision Money Ledger | 1,755 eng, 9.4x baseline | Build logs, cost breakdowns | +| F8 | Paid-vs-Free Reversal | 550 eng, 19.64x baseline | Framework giveaways | +| F9 | Curiosity-Gap Teaser | 306 eng, 4.25x baseline | Surprise and behind-the-scenes stories | +| F10 | Contrarian + Historical Receipts | 3,083 eng | Sacred-cow takes backed by history | +| F11 | Emotional Cold-Open | high raw reach | Real stories with emotional stakes | +| F12 | Permission Slip | comment-heavy | Encouragement to a discouraged audience | +| F13 | Bait-and-Switch Reversal | high raw reach | Bad-news framing that turns into an upgrade | +| F14 | Named Gratitude / Tribute | repost-heavy | Thanking mentors, teams, departing colleagues | +| F15 | Explain-to-Kids | save-heavy | Demystifying jargon into a reference post | +| F16 | Status-Strip Humility | like-heavy | Senior voices trading prestige for warmth | + +Important caveat: F1-F10 references are engagement counts or format multipliers against the author's own baseline; F11-F16 references are raw corpus reach, often inflated by a famous author or a reshare. The two groups measure different things, so never rank formulas across groups by number. + +The full skeletons for all 16 formulas are bundled with this skill in [references/hook-formulas.md](references/hook-formulas.md), along with per-formula warnings and the "Never do" list. + +### Step 3: Draft the post + +Read the chosen formula's skeleton from the bundled [references/hook-formulas.md](references/hook-formulas.md) and fill it with the user's voice and material, respecting the 2026 formatting rules: + +- Hook lands in the first 210 characters (before the "... see more" fold) +- 900-1,300 characters is the sweet spot for text posts +- Double line-breaks between ideas, never walls of text +- 0-2 hashtags, placed at the end +- No external links in the body (put links in the first comment) +- Prefer "How I" over "How to": first-person experience hooks outperform generic instruction 2-3x +- Put one specific number in the first sentence ($873.47 beats $900; 40,000 beats "a lot") + +### Step 4: Scrub AI tells + +Before showing the draft: strip em dashes, AI vocabulary ("game-changer", "deep dive", "delve"), rule-of-three lists without receipts, and generic openers like "In today's fast-paced world". Add human fingerprints: at least one specific number, one named entity, and one first-person concrete detail per 100 words. Vary sentence length aggressively (mix 3-word and 25-word sentences). + +### Step 5: Present the result + +Show the user: formula used, full draft, character count, and a suggested posting window (Tuesday to Thursday, 7:30-9:00 AM local time performs best for B2B audiences). + +## Examples + +### Example 1: Founder build-log (F7 Odd-Precision Money Ledger) + +```text +User: write a post about what my bootstrapped SaaS actually costs to run +Agent: Goal check: this reads like a saves play (people screenshot cost + breakdowns). Best fit is F7 Odd-Precision Money Ledger (9.4x baseline). + Draft hook: + + "My SaaS costs $412.83 a month to run. Here is every line item." + + Then the ledger: hosting $94.20, email $35.00, monitoring $18.63... + exact numbers only, totals that actually add up, one lesson at the end. +``` + +### Example 2: Goal-first selection + +```text +User: I want a post that gets real comments, topic: why I stopped doing demos +Agent: Comment-earners are F4 Confession, F10 Contrarian, F12 Permission Slip. + For "I stopped doing X" the strongest is F10 Contrarian + Receipts: + open with the unpopular claim, back it with 2 historical parallels, + close with a question that forces side-picking. Reference: 3,083 eng. +``` + +## Best Practices + +- ✅ Pick the formula by engagement goal first, topic second +- ✅ Lead with a real failure or a specific number in the first 3 lines +- ✅ Include one moment of genuine vulnerability or concrete stakes; pure insight posts underperform in 2026 +- ❌ Don't blend two hook formulas in one post; it dilutes both +- ❌ Don't use F5 Self-Proving Meta unless the user will actually keep the promise +- ❌ Don't pair F7 Money Ledger with rounded or invented numbers; readers notice +- ❌ Don't open with an all-caps line ("THIS CHANGED EVERYTHING") +- ❌ Don't frame LinkedIn as inferior inside a LinkedIn post + +## Limitations + +- Reference engagement numbers describe the 2025-2026 corpus the formulas were extracted from; they are priors, not guarantees, and LinkedIn's ranking changes over time. +- The skill drafts text posts; it does not generate images, carousels, or video scripts. +- This standalone version does not schedule or publish. Scheduling, comment drafting, reply handling, and engagement analytics require the full bundle from the source repo. +- Voice quality depends on the raw material the user provides; a formula cannot invent authentic anecdotes, and the skill should ask for real details rather than fabricate them. + +## Common Pitfalls + +- **Problem:** The draft sounds like every other AI-written LinkedIn post. + **Solution:** Run Step 4 ruthlessly. Cut em dashes, cut "game-changer" vocabulary, and force one concrete first-person detail per 100 words. +- **Problem:** The hook is buried in paragraph two. + **Solution:** The first 210 characters must carry the hook; everything before the fold decides the expand rate. +- **Problem:** Comparing F11's raw reach to F8's 19.64x multiplier and picking F11 "because the number is bigger". + **Solution:** The columns measure different things. Match formula to goal and topic, not to the largest number. +- **Problem:** Post gets reach but zero comments. + **Solution:** The formula was picked for the wrong goal. Comment-earners end with a question or a side-picking claim, not a summary. + +## Related Skills + +- `@linkedin-content-generator` - broader LinkedIn content suite (carousels, newsletters, calendars) +- `@linkedin-profile-optimizer` - profile and authority optimization rather than post drafting +- `@social-post-writer-seo` - multi-platform social copy when LinkedIn is not the only target + +## Additional Resources + +- [Source repo with all 16 formula skeletons and worked examples](https://github.com/sergebulaev/linkedin-skills) +- [Full 10-skill bundle install (Claude Code / Codex plugin)](https://github.com/sergebulaev/linkedin-skills#install) diff --git a/antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/linkedin-post-writer/references/hook-formulas.md b/antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/linkedin-post-writer/references/hook-formulas.md new file mode 100644 index 00000000..c33ddc44 --- /dev/null +++ b/antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/linkedin-post-writer/references/hook-formulas.md @@ -0,0 +1,482 @@ + + +# 16 LinkedIn Hook Formulas - 2026 Edition + +Each formula has a skeleton, why it works, and a reference engagement number from the original post that defined it. + +F1-F10 are the original long-form thought-leadership set. F11-F16 were validated in 2026 against a large corpus of above-average performers across 10 verticals; they skew shorter and more emotional, and each is tagged with its primary engagement goal (comments / reposts / likes / saves). Pick by goal first (see "Engagement-goal split" below), then by topic. + +**Reading the reference numbers:** F1-F10 cite engagement with a baseline multiplier (a real format effect, e.g. "19.64x baseline"). F11-F16 cite absolute reach from the 2026 corpus, which can be inflated by reshares or a famous author. Treat F11-F16 numbers as a reach ceiling, not a like-for-like comparison against F1-F10. Where the reach was source-driven rather than format-driven, the formula says so. + +## Contents + +- F1 - Platform Risk Anaphora +- F2 - R.I.P. Category Obituary +- F3 - Year-over-Year Pivot +- F4 - Time-Anchor Confession +- F5 - Self-Proving Meta +- F6 - Comment-Gate Lead Magnet +- F7 - Odd-Precision Money Ledger +- F8 - Paid-vs-Free Reversal +- F9 - Curiosity-Gap Teaser +- F10 - Contrarian + Historical Receipts +- F11 - Emotional Cold-Open +- F12 - Permission Slip +- F13 - Bait-and-Switch Reversal +- F14 - Named Gratitude / Tribute +- F15 - Explain-to-Kids Simplification +- F16 - Status-Strip Humility +- Engagement-goal split +- Choosing which formula to use +- Hook micro-rules +- Never do + +--- + +## F1 - Platform Risk Anaphora + +**Reference:** 4,240 eng. + +``` +{Platform1} can {restrict|shadowban|throttle} you {timing}. +{Platform2} can {bad thing} for {reason}. + +[4-5 more anaphoric lines, escalating specificity] + +You don't own {audience}. You don't own {feed}. You're renting {attention}. + +[Concrete horror anecdote with real number: "I watched a friend lose 180k followers in an afternoon"] + +Here's what most people miss: [reframe: what the real asset is]. + +So I changed how I work: +- [tactic 1] +- [tactic 2] +- [tactic 3] + +[Metaphor close: "castles on rented land vs roads"] +[Product mention as natural conclusion, one sentence, no pitch verbs] +[Personal-audit question] +``` + +**Why:** Loss aversion stacked 5x. Identity threat. Solution list earns the close. + +--- + +## F2 - R.I.P. Category Obituary + +**Reference:** 3,822 eng. + +``` +R.I.P. {category}. + +Cause of death: {specific mechanism + numbers}. + +[Concrete evidence, 2-3 paragraphs with dates and stats] + +I defended {old thing} publicly through most of 2025. + +It worked. Until [pivotal event + date]. + +Here's what actually changed under the hood: + +1. [Change 1 with stat] +2. [Change 2 with stat] +... +6. [Change 6 with stat] + +The winners in 2026 aren't {old-winner-type}. They're {new-winner-type}. + +[One-line philosophical close] +``` + +**Why:** Status-threat + relief combo. Reframes "I'm behind" as "the game changed." Removes shame, invites curiosity. + +--- + +## F3 - Year-over-Year Pivot + +**Reference:** 494 eng (3.74x baseline). + +``` +In {last year}, I {humble benchmark}. + +In {this year}, I'm {transformational goal}. + +Here's what actually changed. + +[Vulnerable truth + specific numbers (12 -> 1,000 posts)] +[The identity reframe: "the shift wasn't tools, it was identity"] +[3-beat imperative close] + +[Mirror question: "What's your {last}->{this} pivot? One line below."] +``` + +**Why:** Two-line hook carries 80% of the weight. Mirror CTA compounds engagement algorithmically. + +--- + +## F4 - Time-Anchor Confession + +**Reference:** 1,519+ eng. + +``` +{N} {days|months|years} ago, I stopped {behavior}. + +Here's what happened. + +[2-year backstory of why the old behavior worked: concrete numbers] + +[The quiet cost, what it did to you internally] + +So in {month} I stopped. [New behavior, 2-3 lines] + +[Metric dropped by N%. Expected worse.] + +What surprised me: [counterintuitive upside, specific wins] + +[One-line reframe: "X attracts Y. Z attracts the right Y."] + +[Mirror question: "What's something you stopped doing that quietly made your work better?"] +``` + +**Why:** Confession earns the room. Specific numbers kill the "vibes" energy. Close turns every commenter into a mini-confession. + +--- + +## F5 - Self-Proving Meta + +**Reference:** 1,082 eng / 435 comments. + +``` +Most LinkedIn posts die in the first 30 minutes. + +Not because {common reason}. Because {real reason}. + +[Reveal the metric: "reply latency in first 60 min = 3.4x reach"] + +So here's the test. + +For the next 24 hours, I will {specific commitment}. + +You do two things: +1. [Low-bar action] +2. [Verification action] + +If the thesis is right, {outcome}. +If it's wrong, I owe you a post admitting it. +``` + +**Why:** Claim is validated by reader action. Every comment is evidence. Public accountability hook. + +--- + +## F6 - Comment-Gate Lead Magnet + +**Reference:** 717-3,008 eng. + +``` +[Authority number: "We've helped creators publish 47,000+ posts in 14 months"] + +[Pattern observation the authority earned] + +So I turned that workflow into {N named items}. [Drop them into X, type one command, get the output.] + +What's inside: +- [Item 1] +- [Item 2] +... +- [Item 12] + +Free. No email wall. [Light scarcity: "48 hours only, I'll DM the link personally"] + +Comment "{keyword}" below + connect with me and I'll send the bundle. +``` + +**Why:** Capped reach but huge DM conversion. Named bundle + real authority = 300-800 comments if the bundle is genuine. + +**Warning:** This is engagement bait. Ship only when the weekly goal is list-building, not thought leadership. LinkedIn suppresses pure "comment X" posts. + +--- + +## F7 - Odd-Precision Money Ledger + +**Reference:** 1,755 eng (9.4x baseline). + +``` +{Odd, specific dollar number: "$873.47"} + +[1-line context of what this number covers] + +Here is every line item, from the ledger, nothing rounded: + +- {tool 1}: $X.YZ +- {tool 2}: $X.YZ +... + +[What the total replaces: "$14,200 team cost"] + +[The thing that surprised you: what broke, what worked] + +[Identity reframe close: "Tradesmen flip houses, SEOs flip blogs, AI founders flip {X}"] +``` + +**Why:** Non-rounded numbers signal real accounting. Ledger is screenshot-bait. Dwell time stays high. + +--- + +## F8 - Paid-vs-Free Reversal + +**Reference:** 550 eng (19.64x baseline, highest multiplier in the set). + +``` +I charge {audience} $X for {service}. + +Screw it. Today it's free. + +Below is the exact {N-step} teardown I run before I'll take a client. It's called the {NAMED-FRAMEWORK}. + +[Block an hour, open X in one tab, Y in another, grade yourself honestly.] + +1. {STEP-1-NAME}: [actionable instruction with specific ratio or example] +2. {STEP-2-NAME}: [actionable instruction] +... +7. {STEP-7-NAME}: [actionable instruction] + +That's the {framework}. Run it today. Most {audience} find 3 fixes in the first 20 minutes. + +[Soft scarcity close: "Want me to run {framework} on your profile personally? Connect + send me yours, I'll pick 5 this week."] +``` + +**Why:** Reversal hook (price to free) creates pattern interrupt. Named framework signals proprietary thinking. Checklist drives saves (5x likes under 360Brew). + +--- + +## F9 - Curiosity-Gap Teaser + +**Reference:** 306 eng (4.25x baseline). + +``` +Yesterday, our {system} did something. + +Something we didn't program it to do. + +[One sensory anchor: "I was watching the logs from my kitchen, half-reading, half-making coffee."] + +[Specific reveal, not a platitude: the concrete thing that happened] + +[Reframe: what it means for the category, one paragraph] + +[Sensory detail: "held a cold cup of coffee for about ten minutes"] + +[Philosophical close naming an unnamed feeling, ending with a question] +``` + +**Why:** Line 1 is incomplete + line 2 deepens the gap = scroll-locked brain. Sensory anchor kills the AI-slop pattern detector. + +--- + +## F10 - Contrarian + Historical Receipts + +**Reference:** 3,083 eng. + +``` +{Sacred cow} has been dying since {year}. + +{Month Year}: {event}. "{Death prediction.}" +{Month Year}: {event}. "{Death prediction.}" +[6-9 total dated entries, each 1-2 lines] + +Every quarter for N years. Every cycle: the same obituary. The same LinkedIn carousel. + +Here's the counterpunch. + +[Hard stat with source: "$391B -> $1.81T, 35.9% CAGR"] +[Second stat: "the shippers grew 3-10x in the same window"] + +What actually died wasn't {X}. It was {specific subset}. [2-3 lines of who.] + +What's thriving: {opposite subset with specifics}. + +[Binary identity close:] +If you're still {losing behavior}, you already lost. +If you're {winning behavior}, you already won. + +[Provocative question: "What's the most embarrassing X-killed-Y prediction you remember?"] +``` + +**Why:** Receipt list is a dwell-time machine. Binary identity close forces commenters to pick a side publicly. + +--- + +## F11 - Emotional Cold-Open + +**Reference:** highest single post in the 2026 corpus (256k eng), but that reach came from a generic emotional reshare, not the format. Treat it as a ceiling, not a promise. Primary goal: **likes**. + +``` +{One short line dropped into the emotional peak of a real story: the moment of breaking, loss, or impossible odds. No setup.} + +{Subject} had almost {given up / lost everything} after {the struggle}. + +[Mid-scene narrative: 3-6 short lines, present-tense, sensory. The reader is already inside the moment.] + +[The turn: what changed, who showed up, what it cost.] + +[One-line meaning, not a moral. Let the story carry it.] +``` + +**Why:** Starting at the emotional peak (in medias res) skips the warm-up the scroll punishes. Raw feeling out-travels expertise in every vertical. + +**Warning:** Do NOT write the first line in ALL CAPS even though many source posts did; all-caps openers read as AI/cringe. Carry the intensity with word choice, not caps. Only use a true story; half the top emotional posts in the corpus were generic reshares, and readers punish manufactured stakes. + +--- + +## F12 - Permission Slip + +**Reference:** 29k eng, comment-heavy. Primary goal: **comments**. + +``` +I don't know who needs to hear this today, but {reassuring truth aimed at one anonymous reader}. + +[2-4 lines that make the reassurance specific and earned, not a platitude.] + +[A small, concrete permission: "you're allowed to {X}".] + +[Soft close that invites the reader to self-identify.] +``` + +**Why:** Anonymous second-person reassurance makes readers tag themselves in the comments ("I needed this today"). Comments over-index hard. + +**Warning:** This is the most formulaic creator-economy opener in the set. Effective but visibly engineered. Use no more than once or twice a month, and only when the reassurance is something you actually believe, or it reads as hollow. + +--- + +## F13 - Bait-and-Switch Reversal + +**Reference:** 195k eng (top of the Startups/Tech corpus). Primary goal: **likes**. + +``` +Enough is enough. No more {beloved perk / standard practice} at {company / in my workflow}. + +We're also cutting {second thing}. + +[Beat of suspense: let the reader assume bad news.] + +[The reveal: it's actually an upgrade. Here's what we replaced it with and why it's better.] + +[What the change really stands for: the value underneath.] +``` + +**Why:** Fake bad news weaponizes loss aversion, then the positive reveal releases it. The whiplash is the engine. + +**Warning:** Only works if the reveal genuinely resolves positive. A real cut dressed as good news will get torn apart in the comments. + +--- + +## F14 - Named Gratitude / Tribute + +**Reference:** 109k eng, but from a celebrity tribute reshare. The format helps; the fame did the heavy lifting. Primary goal: **reposts**. + +``` +To {Name}, {Name}, and {Name}: thank you for {the specific quality or thing they did}. + +[2-4 lines naming what each person or the group actually did. Specific, not generic praise.] + +[Why it mattered to you / to the work.] + +[One-line close that honors them, not you.] +``` + +**Why:** Publicly naming real people invites everyone tagged or adjacent to repost and amplify. Celebrating others gets shared far more than self-promotion. + +**Warning:** Name real people for real reasons. Tactical name-dropping to borrow reach is transparent and backfires. + +--- + +## F15 - Explain-to-Kids Simplification + +**Reference:** 23k eng, 2,184 reposts. Primary goal: **saves** (LinkedIn exposes no public save count, so the high repost count stands in as the save-worthiness proxy here, not a sign this is a repost formula). + +``` +{Jargon term} explained to kids. + +Explanations for kids... and adults! + +{emoji} {TERM}: what does it stand for? +{emoji} {first part} = {plain-language meaning} +{emoji} {second part} = {plain-language meaning} +[continue the scannable, emoji-anchored glossary] + +[One-line "now you'll never forget it" close.] +``` + +**Why:** A scannable, emoji-anchored simplification of something dense is saved and reshared as a reference. Works for any jargon-heavy field (finance, law, medicine, engineering). + +**Warning:** Keep the simplification correct. Condescending or wrong explanations of your own field destroy authority. + +--- + +## F16 - Status-Strip Humility + +**Reference:** viral-tier on likes in the corpus (no exact count). Primary goal: **likes**. + +``` +Outside, I get called {impressive titles like founder, CEO, investor}. + +At home, none of that survives {the humbling moment}. + +[The scene that strips the status: a kid, a partner, a quiet failure.] + +[What the contrast taught you, in one or two lines.] +``` + +**Why:** Trading prestige for relatability converts authority into warmth. Senior people get likes by showing the human under the title. + +**Warning:** Don't humble-brag. The titles in line one should set up a genuine deflation, not a flex disguised as one. + +--- + +## Engagement-goal split + +Pick the formula by what you want the post to earn. This split held across all 10 verticals in the 2026 corpus: + +| Goal | Earned by | Formulas | +|---|---|---| +| **Comments** | questions, contrarian/unpopular takes, vulnerability, self-tagging | F4 Confession, F10 Contrarian, F12 Permission Slip, F9 Curiosity-Gap | +| **Reposts** | quotable maxims, tributes, "X isn't Y" distinctions | F14 Named Gratitude, F2 R.I.P., F8 Paid-vs-Free | +| **Likes** | emotional stories, celebrations, status-strip, spectacle | F11 Emotional Cold-Open, F13 Bait-and-Switch, F16 Status-Strip | +| **Saves** | simplifications, exact how-to, frameworks | F15 Explain-to-Kids, F7 Odd-Precision Money, F8 Paid-vs-Free | + +## Choosing which formula to use + +| Topic type | Best formula | Why | +|---|---|---| +| Platform/category argument | F1 Anaphora | Loss aversion stacks cleanly | +| Industry era ending | F2 R.I.P. / F10 Contrarian | Force side-picking | +| Personal year recap | F3 Year-over-Year / F4 Confession | Identity shift reads as earned | +| Product demo in public | F5 Self-Proving Meta | Structural self-proof | +| Big authority giveaway | F6 Comment-Gate / F8 Paid-vs-Free | List-building tier | +| Founder build-log | F7 Odd-Precision Money | Screenshot-bait ledger | +| Emergent/surprise story | F9 Curiosity-Gap | Scroll-lock hook | +| Real story with emotional stakes | F11 Emotional Cold-Open | In-medias-res beats the warm-up | +| Encouragement to a discouraged audience | F12 Permission Slip | Readers self-tag in comments | +| Policy/process change that's an upgrade | F13 Bait-and-Switch | Fake bad news then relief | +| Thanking mentors / team / a departing colleague | F14 Named Gratitude | Named people amplify it | +| Demystifying jargon | F15 Explain-to-Kids | Save-worthy reference | +| Senior person wanting warmth, not distance | F16 Status-Strip | Prestige traded for relatability | + +## Hook micro-rules + +- **"How I" beats "How to".** First-person experience ("How I cut CAC by 62%") outperforms generic instruction ("How to cut CAC") by 2-3x. Swap every "How to" hook to "How I" unless the post is a pure framework with no narrator. +- **Specific number in the first sentence** raises expand-rate by ~35%. $873.47 beats $900. 40,000 beats "a lot of". +- **Real failure in the first 3 lines** outperforms polished framing by **8.5x**. Lead with what broke. + +## Never do + +- Blend two hooks in one post (dilutes both) +- Use F5 Self-Proving Meta if you won't actually keep the promise +- Use F6 Comment-Gate more than once per month +- Pair F7 Money Ledger with made-up numbers; readers know +- Use F1 Anaphora to frame LinkedIn as inferior (algo penalty on LinkedIn) diff --git a/antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/loki-mode/examples/todo-app-generated/backend/package-lock.json b/antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/loki-mode/examples/todo-app-generated/backend/package-lock.json index bf210f5c..b8cd6751 100644 --- a/antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/loki-mode/examples/todo-app-generated/backend/package-lock.json +++ b/antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/loki-mode/examples/todo-app-generated/backend/package-lock.json @@ -8,7 +8,7 @@ "name": "todo-app-backend", "version": "1.0.0", "dependencies": { - "better-sqlite3": "^12.10.1", + "better-sqlite3": "^12.11.1", "cors": "^2.8.6", "express": "^4.18.2", "express-rate-limit": "^8.5.2" @@ -302,9 +302,9 @@ "license": "MIT" }, "node_modules/better-sqlite3": { - "version": "12.10.1", - "resolved": "https://registry.npmjs.org/better-sqlite3/-/better-sqlite3-12.10.1.tgz", - "integrity": "sha512-HfFtzCqnSfwB3+HroF6PSKzyh+7RfNMGPCzHFUZXRlvrPCb4P3cvxKZNN43Sr7IrkofqQZM+gIvffGpA8VvqgA==", + "version": "12.11.1", + "resolved": "https://registry.npmjs.org/better-sqlite3/-/better-sqlite3-12.11.1.tgz", + "integrity": "sha512-dq9AtApgg5PGFtBzPFSBl3HZQjHok5gaQCM6zh2Yk0aSmDCs1CbnVI8/HgASQkNKsWFpseIO9beg5xxpYhbIfA==", "hasInstallScript": true, "license": "MIT", "dependencies": { diff --git a/antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/loki-mode/examples/todo-app-generated/backend/package.json b/antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/loki-mode/examples/todo-app-generated/backend/package.json index 0c97a29d..16c02ba5 100644 --- a/antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/loki-mode/examples/todo-app-generated/backend/package.json +++ b/antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/loki-mode/examples/todo-app-generated/backend/package.json @@ -9,7 +9,7 @@ "dev": "ts-node src/index.ts" }, "dependencies": { - "better-sqlite3": "^12.10.1", + "better-sqlite3": "^12.11.1", "cors": "^2.8.6", "express": "^4.18.2", "express-rate-limit": "^8.5.2" diff --git a/antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/markdown-rendering/SKILL.md b/antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/markdown-rendering/SKILL.md new file mode 100644 index 00000000..5ee94504 --- /dev/null +++ b/antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/markdown-rendering/SKILL.md @@ -0,0 +1,72 @@ +--- +name: markdown-rendering +description: "Open Markdown reliably in cmux panes and recover from blank rendered surfaces." +category: productivity +risk: safe +source: community +source_repo: davidondrej/skills +source_type: community +date_added: "2026-07-07" +author: davidondrej +tags: [markdown, cmux, rendering] +tools: [claude, codex] +license: "MIT" +license_source: "https://github.com/davidondrej/skills/blob/main/LICENSE" +--- + +# Markdown Rendering in cmux + +## When to Use + +- Use when opening Markdown in cmux shows a blank pane or wrong layout. +- Use when you need to display a Markdown file in a stable cmux right pane. + +## The Problem + +`cmux markdown open` defaults to **spawning a brand-new pane** every time, even with `--direction right`. The common "fix" — moving the new markdown surface into the existing right pane with `move-surface` — **bugs out: the moved viewer renders BLANK.** The surface keeps `type=markdown` and looks healthy, but shows nothing. + +So you get stuck: either a stray extra pane, or a blank viewer after moving it. + +## The Rule + +You have exactly two reliable options. **Never `move-surface` a markdown viewer** — that is the path that bugs. + +### Option A — Open it right on the first try + +If there is no usable right pane yet, just let cmux create one and leave it where it lands: + +```bash +cmux markdown open /abs/path/file.md --direction right --focus false +``` + +Do NOT then move it. If it spawned where you want it, you're done. + +### Option B — Close existing right pane(s), then open fresh + +If there are other right panes in the way (and they're unused or irrelevant), **close them first**, then open the markdown fresh as a new right pane: + +```bash +# 1. find panes in THIS workspace +cmux list-panes --workspace "$CMUX_WORKSPACE_ID" + +# 2. close the unused/irrelevant right pane(s) by closing their surfaces +cmux list-pane-surfaces --pane pane:NN +cmux close-surface --surface surface:XX # repeat per surface in that pane + +# 3. THEN open the markdown fresh — it creates its own clean right pane +cmux markdown open /abs/path/file.md --direction right --focus false +``` + +## Hard Rules + +- **Never `move-surface` a markdown viewer.** It renders blank afterward. This is the core bug this skill exists for. +- Open it correctly the first time (Option A), OR close the conflicting right pane(s) and open a fresh right pane from scratch (Option B). +- Only close panes that are unused or irrelevant — never close a pane the user is working in. +- Always anchor to `$CMUX_WORKSPACE_ID`; never assume the visually focused workspace. +- Pass `--focus false` so you don't steal the user's focus. +- You can't screenshot/read a markdown surface to verify it. If unsure it rendered, ask the user. + +## Limitations + +- Adapted from `davidondrej/skills`; verify local paths, tools, credentials, and agent features before acting. +- For commands, remote access, scheduling, browser automation, or file-changing workflows, get explicit user approval and confirm the target environment first. diff --git a/antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/pi-custom-model/SKILL.md b/antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/pi-custom-model/SKILL.md new file mode 100644 index 00000000..b67fb799 --- /dev/null +++ b/antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/pi-custom-model/SKILL.md @@ -0,0 +1,68 @@ +--- +name: pi-custom-model +description: "Register custom Pi Agent model slugs so saved OpenRouter variants resolve correctly." +category: operations +risk: critical +source: community +source_repo: davidondrej/skills +source_type: community +date_added: "2026-07-07" +author: davidondrej +tags: [pi-agent, models, openrouter] +tools: [claude, codex] +license: "MIT" +license_source: "https://github.com/davidondrej/skills/blob/main/LICENSE" +disable-model-invocation: true +--- + +# Pi custom / variant model + +## When to Use +Pi's saved default only loads if the exact `provider/id` exists in its model registry. Pi ships a static bundled list per provider — so OpenRouter **routing-shortcut variants** (`:nitro` = sort by throughput, `:floor` = cheapest, `:exacto` = quality tool-use) and any brand-new slug are NOT in it. When the default doesn't resolve, Pi silently falls through to its built-in per-provider default (for openrouter that's `moonshotai/kimi-k2.6`) — looking like Pi "reset" your model. Fix = register the slug as a custom model so `find(provider, id)` matches. + +## Files (global) +- `~/.pi/agent/settings.json` — `defaultProvider`, `defaultModel`, `defaultThinkingLevel` +- `~/.pi/agent/models.json` — custom models, keyed by provider +- `~/.pi/agent/auth.json` — provider credentials (check the provider key exists) + +## Steps +1. **Confirm the slug is real** before adding it (e.g. check the OpenRouter model/variant exists). A typo'd id also silently falls back. +2. **Confirm auth.** The provider must have a key in `auth.json` (or an env var like `OPENROUTER_API_KEY`). No auth → the model is registered but unavailable → still falls back. +3. **Add the model to `models.json`** under `providers..models`. For a **built-in provider** (openrouter, anthropic, etc.) you only supply metadata — `api`, `baseUrl`, and auth are inherited from the bundled defaults. Example: + ```json + { + "providers": { + "openrouter": { + "models": [ + { + "id": "z-ai/glm-5.2:nitro", + "name": "Z.ai: GLM 5.2 (nitro)", + "reasoning": true, + "thinkingLevelMap": { "xhigh": "xhigh" }, + "input": ["text"], + "cost": { "input": 0.95, "output": 3, "cacheRead": 0.18, "cacheWrite": 0 }, + "contextWindow": 1048576, + "maxTokens": 32768, + "compat": { "supportsDeveloperRole": false, "thinkingFormat": "openrouter" } + } + ] + } + } + } + ``` + Copy `cost`/`contextWindow`/`compat` from the base model (the variant shares them) — find the bundled entry in `/node_modules/@earendil-works/pi-ai/dist/providers/.models.js`. Don't hardcode generic 128k/16k if the real model is bigger. +4. **Set the default** in `settings.json`: `defaultProvider` + `defaultModel` = the exact id. Leave `defaultThinkingLevel` as the user has it. +5. **Verify:** `pi --list-models | grep ` shows it, and JSON parses. Optionally smoke-test: `pi --provider

--model "" "which model are you?"`. + +## Quirks +- **Exact match only.** `find()` is exact `provider`+`id` — no fuzzy/colon-stripping for the *saved default* path. The slug in `settings.json` and `models.json` must be byte-identical. +- **Silent fallback.** Pi prints no error when the default doesn't resolve; it just shows a different model in the footer. That's the tell. +- **Don't edit `settings.json` alone.** Setting `defaultModel` to an unregistered slug does nothing — `models.json` is the actual fix. +- **`enabledModels`** (optional) pins the model picker so Ctrl+P cycling can't drift back: `"enabledModels": ["/:"]`. +- **Project override.** A repo's `.pi/settings.json` overrides global. If a default reverts only inside one project, check that file first. +- Restart Pi fully — the registry loads at startup. + +## Limitations + +- Adapted from `davidondrej/skills`; verify local paths, tools, credentials, and agent features before acting. +- For commands, remote access, scheduling, browser automation, or file-changing workflows, get explicit user approval and confirm the target environment first. diff --git a/antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/pi-web-search/SKILL.md b/antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/pi-web-search/SKILL.md new file mode 100644 index 00000000..612507ff --- /dev/null +++ b/antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/pi-web-search/SKILL.md @@ -0,0 +1,74 @@ +--- +name: pi-web-search +description: "Give Pi Agents a safe web-search and fetch workflow using the installed pi-web-access package." +category: research +risk: safe +source: community +source_repo: davidondrej/skills +source_type: community +date_added: "2026-07-07" +author: davidondrej +tags: [web-search, pi-agent, research] +tools: [claude, codex] +license: "MIT" +license_source: "https://github.com/davidondrej/skills/blob/main/LICENSE" +--- + +# Web Search + +## When to Use + +- Use when a Pi Agent task needs current web information, page fetches, PDFs, YouTube, or GitHub content. +- Use when Pi should use its own web-access package instead of another agent browser tool. + +The `pi-web-access` package is installed globally. Zero-config via Exa MCP (no API key), with fallback Exa → Perplexity → Gemini. + +## CRITICAL: always pass `workflow: "none"` + +Every `web_search` call MUST include `workflow: "none"`. This skips the interactive browser curator popup (the user does not want it opening). No exceptions — single query or batched `queries`, always set `workflow: "none"`. + +``` +web_search({ queries: ["query 1", "query 2"], workflow: "none" }) +``` + +## Tools + +- `web_search` — search the web; returns synthesized answers with citations. Can be called many times per turn. **Always pass `workflow: "none"`.** +- `code_search` — zero-key Exa code-context. Use for library/API/code lookups instead of generic `web_search`. +- `fetch_content` — fetch URL(s) → markdown; handles PDFs, YouTube, GitHub. +- `get_search_content` — big pages (>30k chars) are truncated in responses but stored in full; call this to pull the rest on demand so they don't blow context. + +## fetch_content specifics + +- **GitHub URLs are cloned, not scraped** — you get real files + a local path to explore with `read`/`bash` (private repos need the `gh` CLI). Use this for dev work. +- **PDFs** → auto-extracted to markdown in `~/Downloads/`, readable in sections (text-only, no OCR). +- **YouTube/video** → full raw transcripts + frame extraction. Needs a `GEMINI_API_KEY` (not zero-config); frame extraction also needs `ffmpeg`/`yt-dlp`. + +## Routing — match the user's phrasing + +Always use the `web_search` tool. These counts are HARD MINIMUMS — count your queries before answering and do not stop short: + +- **"web search"** → **at least 2** queries, varied keywords/angles, then synthesize. +- **"extensive web research"** → **at least 4** queries, totally different keywords and angles. +- **"deep research"** → **at least 8** queries, totally different keywords and angles, run across 2–3 successive batches (refine angles after each batch), to learn as much as possible about the topic. + +A single batched `web_search` call counts each query in `queries[]` toward the total. If your first batch is under the minimum, fire another batch before synthesizing. + +## Fallback / alternative: DeepAPI web search + +If the Exa → Perplexity → Gemini chain fails, or you need ranked results with URLs: + +```bash +test -n "$DEEPAPI_API_KEY" || { echo "DEEPAPI_API_KEY is not set"; exit 1; } +curl -s --max-time 60 "https://deepapi.co/v1/search/web" \ + -H "Authorization: Bearer $DEEPAPI_API_KEY" -H "Content-Type: application/json" \ + -H "Idempotency-Key: $(uuidgen)" \ + -d '{"query": "your search terms", "maxResults": 5, "maxCostUsd": "0.05"}' +``` + +Results are in `.output` (title, url, snippet per item). Query under 500 chars. Full details: `deepapi` skill. + +## Limitations + +- Adapted from `davidondrej/skills`; verify local paths, tools, credentials, and agent features before acting. +- For commands, remote access, scheduling, browser automation, or file-changing workflows, get explicit user approval and confirm the target environment first. diff --git a/antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/push-skill-to-github/SKILL.md b/antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/push-skill-to-github/SKILL.md new file mode 100644 index 00000000..da08487b --- /dev/null +++ b/antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/push-skill-to-github/SKILL.md @@ -0,0 +1,61 @@ +--- +name: push-skill-to-github +description: "Commit and push skill changes to the configured skills repository after review and validation." +category: development +risk: critical +source: community +source_repo: davidondrej/skills +source_type: community +date_added: "2026-07-07" +author: davidondrej +tags: [skills, git, publishing] +tools: [claude, codex] +license: "MIT" +license_source: "https://github.com/davidondrej/skills/blob/main/LICENSE" +--- + +# Push Skills to GitHub + +## When to Use + +- Use when skill changes are ready to commit and push to the configured skills repo. +- Use when the user asks to save or publish skill updates after validation. + +For committing any skill change to the user's private skills repo, git root **`~/.agents`** (this is also the canonical skill folder; `.claude` and `.pi/agent/skills` symlink to `~/.agents/skills`). Pushes here auto-publish a sanitized public mirror to `davidondrej/skills` — never push directly to that public repo. + +Use this after creating or editing a skill. If the skill is distributed to all agents, do that first (`distribute-skill-to-all-agents`), then run this to push the canonical copy. + +## Steps + +**Not in cmux?** (no `$CMUX_WORKSPACE_ID`): skip the cmux pane steps — just run the git commands from step 2 directly in any available terminal, then verify the push output. + +1. **Open a fresh cmux pane** in the current workspace, no focus steal: + ```bash + cmux new-pane --type terminal --direction right --workspace "$CMUX_WORKSPACE_ID" --focus false + cmux list-panes --workspace "$CMUX_WORKSPACE_ID" # note the NEW pane + its surface ref + ``` +2. **Stage, commit, push** in `~/.agents` (send to the new pane's surface): + ```bash + cmux send --surface surface:NEW 'cd ~/.agents && git add -A && git commit -m "" && git push' + cmux send-key --surface surface:NEW enter + ``` +3. **Verify** the push landed: + ```bash + sleep 2 + cmux read-screen --surface surface:NEW | tail -15 # expect "main -> main" + ``` +4. **Close the pane** once confirmed: + ```bash + cmux close-surface --surface surface:NEW + cmux list-panes --workspace "$CMUX_WORKSPACE_ID" # confirm the pane is gone + ``` + +## Notes +- Always run git from `~/.agents` (the repo root), not `~/.agents/skills`. +- Write a concise, specific commit message describing the skill change. +- Only push to GitHub when the user asks. Don't push speculatively. + +## Limitations + +- Adapted from `davidondrej/skills`; verify local paths, tools, credentials, and agent features before acting. +- For commands, remote access, scheduling, browser automation, or file-changing workflows, get explicit user approval and confirm the target environment first. diff --git a/antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/read-all-adrs/SKILL.md b/antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/read-all-adrs/SKILL.md new file mode 100644 index 00000000..334d5052 --- /dev/null +++ b/antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/read-all-adrs/SKILL.md @@ -0,0 +1,35 @@ +--- +name: read-all-adrs +description: "Read every ADR in a project before summarizing architectural context or decisions." +category: productivity +risk: safe +source: community +source_repo: davidondrej/skills +source_type: community +date_added: "2026-07-07" +author: davidondrej +tags: [adr, documentation, architecture] +tools: [claude, codex] +license: "MIT" +license_source: "https://github.com/davidondrej/skills/blob/main/LICENSE" +disable-model-invocation: true +--- + + + +## When to Use + +- Use when the user explicitly asks to load ADR context. +- Use when architectural decisions must be understood before changing or judging a project. + +Read EVERY single ADR `.md` file in this project's `docs/adr/` folder, start to +finish. + +Do not skim. Read each ADR completely before summarizing. + +Read every single ADR file, for this project, in full. + +## Limitations + +- Adapted from `davidondrej/skills`; verify local paths, tools, credentials, and agent features before acting. +- For commands, remote access, scheduling, browser automation, or file-changing workflows, get explicit user approval and confirm the target environment first. diff --git a/antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/research-prompt/SKILL.md b/antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/research-prompt/SKILL.md new file mode 100644 index 00000000..26760cc4 --- /dev/null +++ b/antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/research-prompt/SKILL.md @@ -0,0 +1,63 @@ +--- +name: research-prompt +description: "Turn vague research needs into one precise deep-research prompt with context and output criteria." +category: research +risk: safe +source: community +source_repo: davidondrej/skills +source_type: community +date_added: "2026-07-07" +author: davidondrej +tags: [research, prompting, briefs] +tools: [claude, codex] +license: "MIT" +license_source: "https://github.com/davidondrej/skills/blob/main/LICENSE" +--- + +# Research Prompt + +## When to Use + +- Use when the user wants a deep-research brief or researcher prompt. +- Use when a vague research question needs to become one precise self-contained paragraph. + +Goal: turn a vague research need into ONE self-contained paragraph that a researcher with zero prior knowledge of the project can act on with zero back-and-forth. + +## Rules + +- **One paragraph.** No headers, no bullet list in the deliverable. +- **Prompt the job, not the topic.** Give search handles (timeframe, ranking, source type, decision logic) — not just a subject. +- **Assume zero prior knowledge.** Write for a researcher who has never heard of the project. Open by explaining, in plain English, what the project/product is, why it exists, and the current situation — so they understand what's going on, what we need, and why we need it. +- **Lead with the goal + decision.** Right after that explainer, state the single question the research must answer and the decision/use it informs. +- **Embed all context.** Names, dates, product, prior known facts, constraints. The researcher must not need to ask anything or guess. +- **Number the sub-questions inline** (1, 2, 3…) so coverage is explicit. Keep to 3–6. One mission per prompt — don't cram unrelated questions. +- **State constraints.** What to include, what to avoid (e.g. "only non-Chinese competitors", "no marketing fluff"). +- **Source hierarchy.** Prefer primary sources (official docs, GitHub, papers, filings, changelogs); forums/X/Reddit are weak signal only, never factual proof. +- **Contradiction handling.** If sources conflict, separate confirmed facts / inference / unresolved uncertainty — don't force fake consensus. Flag low-confidence claims for verification. +- **Completion bar (define "done").** Don't stop at the first plausible answer. Corroborate each key claim with multiple independent primary sources where they exist; where sources are scarce, say so explicitly instead of padding. Keep going until every numbered sub-question is covered to this bar. +- **Gap round before finishing.** Require a final self-critique pass: list gaps, contradictions, and any single-source claims, then run another round of searches to close them — repeat until clean. +- **Constrain output hard, method loosely.** Be strict on the deliverable; leave the search path flexible so the researcher can explore. +- **Demand a fixed output per finding:** source link + specific claim + one-line "why it matters / why a viewer should care". +- Verifiable, citable facts only. No opinions. +- **Last sentence:** instruct them to output everything into a single detailed markdown file. + +## Process + +1. Pull context from the relevant project files / conversation (dates, names, known facts, audience, end use), and write a 1–2 sentence plain-English explainer of what the project is and why it exists for a reader who knows nothing. +2. Identify the ONE question the research answers. +3. Draft 3–6 numbered sub-questions that fully cover it. +4. Add include/avoid constraints + the per-finding output format. +5. Compress to one clean paragraph. Cut filler. + +## Template + +> [For a reader with zero prior knowledge: in 1–2 plain-English sentences, what the project/product is, why it exists, and the current situation.] Research [TOPIC + key identifying facts] to answer one question: [THE QUESTION] — for [DECISION / END USE]. Find: (1) …; (2) …; (3) …; (4) …. [Constraints: include X, avoid Y.] Prefer primary sources; treat forums/social as weak signal only; if sources conflict, separate fact from inference and flag what needs verification. Don't stop at the first plausible answer: corroborate each key claim with multiple independent primary sources where they exist (and say so explicitly where they don't), continuing until every numbered question is covered to that bar. Before finishing, do a self-critique pass — list gaps, contradictions, and any single-source claims, then run another round of searches to close them, repeating until clean. For each point, give the source link, the specific claim, and a one-line "why it matters". No marketing fluff — verifiable, citable facts only. Output everything into a single detailed markdown file. + +## Executing the prompt + +To run the finished prompt with an AI researcher, execute it via DeepAPI `POST /v1/research/deep` — follow the `deep-research` skill. + +## Limitations + +- Adapted from `davidondrej/skills`; verify local paths, tools, credentials, and agent features before acting. +- For commands, remote access, scheduling, browser automation, or file-changing workflows, get explicit user approval and confirm the target environment first. diff --git a/antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/run-deep-swe/SKILL.md b/antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/run-deep-swe/SKILL.md new file mode 100644 index 00000000..b56254d2 --- /dev/null +++ b/antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/run-deep-swe/SKILL.md @@ -0,0 +1,120 @@ +--- +name: run-deep-swe +description: "Run reproducible DeepSWE coding-agent benchmark evaluations through OpenRouter and mini-swe-agent." +category: agent-evaluation +risk: critical +source: community +source_repo: davidondrej/skills +source_type: community +date_added: "2026-07-07" +author: davidondrej +tags: [benchmark, deepswe, openrouter, evaluation] +tools: [claude, codex] +license: "MIT" +license_source: "https://github.com/davidondrej/skills/blob/main/LICENSE" +disable-model-invocation: true +--- + +# Run DeepSWE via OpenRouter + +## When to Use + +- Use when the user wants to benchmark a model on DeepSWE or mini-swe-agent tasks. +- Use when you need a reproducible coding-agent evaluation plan and output artifacts. + +DeepSWE (deepswe.datacurve.ai) is a 113-task Harbor-compatible coding-agent benchmark. It runs via **Pier** (Harbor fork) driving **mini-swe-agent** (model-agnostic). Any model reachable through OpenRouter can be scored. + +## Prerequisites — state-check first + +```bash +which uv git docker || echo "MISSING: install uv, git, docker" +docker info >/dev/null 2>&1 || echo "MISSING: Docker daemon not running (Pier's default sandbox)" +echo "OPENROUTER_API_KEY set? ${OPENROUTER_API_KEY:+YES}" +``` + +**Docker must be running** — Pier sandboxes each task in Docker by default (`--env modal` for cloud instead). + +`OPENROUTER_API_KEY` must already be present in the environment. If it is unset, +ask the user to configure their preferred secret-management path; do not read +shell startup files, print secrets, or invent a key. + +## Setup + +```bash +git clone https://github.com/datacurve-ai/deep-swe && cd deep-swe +uv tool install datacurve-pier # PyPI (preferred) +# or: uv tool install git+https://github.com/datacurve-ai/pier +# pier bundles mini-swe-agent as the --agent driver +``` + +Run all `pier` commands from inside `deep-swe/`, using relative `-p tasks/...`. + +## OpenRouter wiring (the part the docs don't spell out) + +mini-swe-agent has a native OpenRouter model class. Both routes below use `OPENROUTER_API_KEY` and the OpenRouter slug (`vendor/model`, e.g. `minimax/minimax-m3`): + +**Route A — native OpenRouter class (preferred, hits openrouter.ai/api/v1 directly):** +```bash +pier run -p deep-swe/tasks --agent mini-swe-agent \ + --model minimax/minimax-m3 --model-class openrouter +``` + +**Route B — LiteLLM provider prefix (fallback; same key):** +```bash +pier run -p deep-swe/tasks --agent mini-swe-agent \ + --model openrouter/minimax/minimax-m3 +``` + +Notes: +- Slug = the exact OpenRouter slug. Verify it at openrouter.ai/models before running. +- Free/zero-cost models: OpenRouter cost tracking can error. Set `export MSWEA_COST_TRACKING=ignore_errors`. +- Flag spelling can vary by version — confirm with `pier run --help` and `mini --help`. + +## Smoke test FIRST (1 task — do this before any full run) + +Always validate end-to-end wiring on a single task before spending tokens on the corpus: + +```bash +pier run -p deep-swe/tasks/ --agent mini-swe-agent \ + --model minimax/minimax-m3 --model-class openrouter +# list available task ids: +ls deep-swe/tasks +``` + +Pass criteria: run completes, model returns actions (not auth/format errors), a score/trajectory is emitted. If it 401s → key wrong. If "provider not provided"/"model not mapped" → fix slug or switch route. + +## Subset run (deterministic sample) + +```bash +pier run -p deep-swe/tasks --agent mini-swe-agent \ + --model minimax/minimax-m3 --model-class openrouter \ + --n-tasks 10 --sample-seed 0 +``` + +## Full 113-task corpus (costs tokens + time — confirm with user first) + +```bash +pier run -p deep-swe/tasks --agent mini-swe-agent \ + --model minimax/minimax-m3 --model-class openrouter +# add `--env modal` to run in parallel Modal sandboxes (needs Modal configured) +``` + +## Output & leaderboard + +- Trials land in `jobs///`. Inspect with `pier view jobs/`, `pier analyze jobs/`, or `pier critique run jobs/`. +- Report: the exact command used, pass/fail, score, and any blockers. +- Submit results for the official leaderboard to: **** + +## Failure modes + +| Symptom | Cause | Fix | +|---|---|---| +| HTTP 401 | bad/missing key | re-export `OPENROUTER_API_KEY` | +| "LLM Provider NOT provided" | missing slug prefix | use Route B `openrouter/...` or Route A with `--model-class openrouter` | +| "model isn't mapped"/cost error | unknown cost for model | `export MSWEA_COST_TRACKING=ignore_errors` | +| unknown flag | version drift | check `pier run --help` | + +## Limitations + +- Adapted from `davidondrej/skills`; verify local paths, tools, credentials, and agent features before acting. +- For commands, remote access, scheduling, browser automation, or file-changing workflows, get explicit user approval and confirm the target environment first. diff --git a/antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/setup-help/SKILL.md b/antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/setup-help/SKILL.md new file mode 100644 index 00000000..5f9a5e80 --- /dev/null +++ b/antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/setup-help/SKILL.md @@ -0,0 +1,50 @@ +--- +name: setup-help +description: "Walk a user through setup or installation one step at a time with the remaining steps visible." +category: productivity +risk: safe +source: community +source_repo: davidondrej/skills +source_type: community +date_added: "2026-07-07" +author: davidondrej +tags: [setup, onboarding, installation] +tools: [claude, codex] +license: "MIT" +license_source: "https://github.com/davidondrej/skills/blob/main/LICENSE" +disable-model-invocation: true +--- + +# setup-help + +## When to Use + +- Use when the user asks to set up, install, configure, or get something working step by step. +- Use when the setup has multiple steps and benefits from one-at-a-time guidance. + +Guide the user through any setup, one step at a time, in plain English. + +## Response format (every single response) + +1. **Current step** — ONE atomic action. A single click, field, or command — not a checklist. 1–2 lines max. If it needs sub-steps, it's too big: split it and push the rest into "Still remaining". Plain English. +2. A `----` divider. +3. **Still remaining** — a numbered list of the setup steps left after this one. Max 8 items, ever. + +Repeat this format for every response until setup is done. + +## Rules + +- Before the first step, build a complete canonical checklist from the user's outline, repo/docs, current screen, and any discovered prerequisites. +- The **Still remaining** list must never exceed 8 items — more is overwhelming. Track ALL unfinished checklist items internally; if more than 8 remain, show the nearest steps individually and merge the later ones into broader phase-level items so the list stays at 8 or fewer. Never silently drop a required step from internal tracking. +- If a new required step is discovered mid-setup, add it to **Still remaining** immediately in the correct order. +- Before every response, audit the current step plus **Still remaining** against the canonical checklist. If any unfinished step is missing, fix the list before replying. +- Only give instructions for the current step. Do not jump ahead. +- Keep it concise. Short sentences. No filler. +- After the user finishes a step, move the next "remaining" item up to "Current step". +- Update the "Still remaining" list each time as steps get done. +- When nothing remains, say setup is complete instead of showing the list. + +## Limitations + +- Adapted from `davidondrej/skills`; verify local paths, tools, credentials, and agent features before acting. +- For commands, remote access, scheduling, browser automation, or file-changing workflows, get explicit user approval and confirm the target environment first. diff --git a/antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/short/SKILL.md b/antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/short/SKILL.md new file mode 100644 index 00000000..292afa11 --- /dev/null +++ b/antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/short/SKILL.md @@ -0,0 +1,28 @@ +--- +name: short +description: "Rewrite the previous response more briefly while preserving the substance." +category: writing +risk: safe +source: community +source_repo: davidondrej/skills +source_type: community +date_added: "2026-07-07" +author: davidondrej +tags: [writing, editing, concise] +tools: [claude, codex] +license: "MIT" +license_source: "https://github.com/davidondrej/skills/blob/main/LICENSE" +disable-model-invocation: true +--- + +rewrite your last response to be simpler & shorter. do not do anything else. + +## When to Use + +- Use when the user asks for a shorter, simpler, or TLDR version of the previous response. +- Use when the current answer should be compressed without changing the substance. + +## Limitations + +- Adapted from `davidondrej/skills`; verify local paths, tools, credentials, and agent features before acting. +- For commands, remote access, scheduling, browser automation, or file-changing workflows, get explicit user approval and confirm the target environment first. diff --git a/antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/taisly-social-media-posting/SKILL.md b/antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/taisly-social-media-posting/SKILL.md new file mode 100644 index 00000000..56e02c86 --- /dev/null +++ b/antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/taisly-social-media-posting/SKILL.md @@ -0,0 +1,79 @@ +--- +name: taisly-social-media-posting +description: "Use Taisly Agent Kit to prepare and publish approved short-form video posts across TikTok, Instagram Reels, YouTube Shorts, X, and Facebook." +category: marketing +risk: critical +source: community +source_repo: taisly/agent +source_type: community +date_added: "2026-07-07" +author: taisly +tags: [social-media, video, publishing, mcp, cli, sdk, tiktok, instagram, youtube-shorts, x, facebook] +tools: [codex, claude] +license: "MIT" +license_source: "https://github.com/taisly/agent/blob/main/LICENSE" +--- + +# Taisly Social Media Posting + +## Overview + +Taisly Agent Kit provides an MCP server, CLI, SDK, and agent docs for publishing +approved short-form videos to TikTok, Instagram Reels, YouTube Shorts, X, and +Facebook. Use this skill to plan a posting workflow around Taisly, verify that +the user has the required account access, and keep publishing actions behind an +explicit confirmation gate. + +## When to Use + +- Use when the user wants an agent-assisted workflow for publishing short-form + videos with Taisly. +- Use when the user mentions `taisly/agent`, the Taisly MCP server, Taisly CLI, + or the Taisly SDK. +- Use when coordinating final approval, caption metadata, target platforms, and + posting status for social video distribution. + +## Workflow + +1. Confirm the exact target platforms and video asset paths or URLs. +2. Confirm that the user has already connected the relevant social accounts in + Taisly or has provided the intended MCP/CLI setup path. +3. Draft or review captions, hashtags, titles, descriptions, and platform + metadata before any publishing command is run. +4. Present a final posting summary with platforms, media, captions, visibility, + and timing. +5. Wait for explicit user approval before invoking any Taisly command, MCP tool, + SDK call, or other state-changing publishing action. + +## Examples + +```text +Use Taisly to prepare this product demo for TikTok, Reels, Shorts, X, and Facebook. +Review the caption and metadata first; do not publish until I approve. +``` + +```text +Set up a Taisly MCP publishing workflow for approved video assets in ./campaign. +``` + +## Safety Notes + +- Treat publish, schedule, delete, account-linking, and metadata update actions + as state-changing operations requiring explicit user approval. +- Never request, print, or store platform passwords, OAuth secrets, API keys, or + session tokens. Use the user's existing Taisly/MCP/CLI authentication flow. +- If the requested action could violate platform policies, brand review, legal + constraints, or creator permissions, pause and ask for confirmation. + +## Limitations + +- Platform availability, media requirements, and API behavior depend on the + upstream Taisly Agent Kit and connected platform accounts. +- This skill does not replace human review for legal, brand, copyright, or + platform-compliance decisions. +- Verify the current Taisly setup instructions from `taisly/agent` before + installing or running tools in a new environment. + +## Source + +- GitHub: [taisly/agent](https://github.com/taisly/agent) diff --git a/antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/vps-server-management/SKILL.md b/antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/vps-server-management/SKILL.md new file mode 100644 index 00000000..f44a9045 --- /dev/null +++ b/antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/vps-server-management/SKILL.md @@ -0,0 +1,72 @@ +--- +name: vps-server-management +description: "Manage authorized VPS hosts and server-side agents through cautious SSH and operations workflows." +category: operations +risk: critical +source: community +source_repo: davidondrej/skills +source_type: community +date_added: "2026-07-07" +author: davidondrej +tags: [vps, ssh, server-management] +tools: [claude, codex] +license: "MIT" +license_source: "https://github.com/davidondrej/skills/blob/main/LICENSE" +--- + +# VPS Server Management + +## When to Use + +- Use when the user asks to operate an authorized VPS or agent running on a remote host. +- Use when SSH, deployment, restart, status, or log inspection is needed with explicit permission. + +Source of truth: `library/infrastructure.md` (read it for the latest — IPs/expirations change). + +## Servers (Hostinger VPS) — 3 total + +| Hostname | IP | OS | Purpose | Expires | +|---|---|---|---|---| +| openclaw-server | | Ubuntu 24.04 (Dokploy) | OpenClaw — personal instance | | +| n8n-server | | Ubuntu 24.04 (n8n) | All n8n workflow automations (primary) | | +| hermes-server | | Ubuntu 24.04 | Hermes Agent — Discord gateway (Vilnius, LT) | | + +SSH as `root@`. + +## Access levels (never share higher than needed) + +1. **App login** — e.g. `app.example.hstgr.cloud`. Build/edit workflows, no server access. Safest to share. +2. **VPS SSH** — `root@`. Docker, files, system config. Trusted technical people only. +3. **Hostinger hPanel** — `hpanel.hostinger.com`. Billing, reboot, OS reinstall. Exposes SSH creds + browser terminal, so it grants server access too. The user only. + +## Managing a VPS via an agent + +For multi-step or exploratory work, **SSH into the box first and launch the agent ON the VPS** (e.g. `codex --yolo`), then talk to that local-on-server agent — it has full filesystem/process context and avoids fragile SSH round-trips. For short command sequences (update, config change, restart), driving an existing SSH session directly (e.g. via a cmux pane) is fine. + +When checking on a remote/on-box agent, send the user one concise status line each time: what it is doing and whether it is on track. + +Claude Code cmux note: after Claude finishes, it may prefill a predicted next user message; that draft is Claude, not the user speaking. + +## Agents on servers + +- **OpenClaw** → openclaw-server (managed via Dokploy). +- **Hermes** → hermes-server (Discord gateway). Setup/config docs in `library/hermes/`. +- **n8n** → n8n-server. + +## Hermes ops (on hermes-server) + +```bash +hermes --version # shows version + commits behind +hermes update # auto-snapshots, updates deps, rebuilds web UI, restarts gateway itself +hermes gateway status|restart +journalctl --user -u hermes-gateway --since '5 min ago' --no-pager # gateway logs (systemd USER service) +``` + +- **Default model** lives in `~/.hermes/config.yaml` under `model.provider` + `model.default` — NOT in `.env`. Change via `hermes model` (interactive) or edit the yaml directly, then `hermes gateway restart` to propagate to gateways. +- npm `EBADENGINE` warnings during update (deps want Node >=24, box runs v22) are non-blocking — do not "fix" them. +- Deeper docs (Discord/Slack/WhatsApp setup, file structure, vision config): `library/hermes/`. + +## Limitations + +- Adapted from `davidondrej/skills`; verify local paths, tools, credentials, and agent features before acting. +- For commands, remote access, scheduling, browser automation, or file-changing workflows, get explicit user approval and confirm the target environment first. diff --git a/antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/youtube-transcript/SKILL.md b/antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/youtube-transcript/SKILL.md new file mode 100644 index 00000000..9ceb64e0 --- /dev/null +++ b/antigravity-awesome-skills/plugins/antigravity-awesome-skills-claude/skills/youtube-transcript/SKILL.md @@ -0,0 +1,120 @@ +--- +name: youtube-transcript +description: "Fetch YouTube transcripts through DeepAPI or local fallback tooling and save clean text output." +category: research +risk: safe +source: community +source_repo: davidondrej/skills +source_type: community +date_added: "2026-07-07" +author: davidondrej +tags: [youtube, transcripts, research] +tools: [claude, codex] +license: "MIT" +license_source: "https://github.com/davidondrej/skills/blob/main/LICENSE" +--- + +# YouTube Transcript (via DeepAPI, yt-dlp fallback) + +## When to Use + +- Use when the user asks for a YouTube transcript, captions, subtitles, or spoken-content extraction. +- Use when DeepAPI or a local fallback can fetch the transcript safely. + +Fetch a YouTube video's transcript and save a clean raw `.txt` file. Primary path is DeepAPI `POST /v1/scrape/youtube/transcript`. It runs server-side, so it avoids the local-IP bot flagging that plagues yt-dlp. + +## Save location +- If the user is in a real project/working dir → save there. +- Otherwise (no dir given, or cwd makes no sense) → save to `~/Downloads`. +- **Always name the file `Channel_Title` with spaces replaced by `_`** (e.g. `David_Ondrej_title_of_video.txt`). If metadata is unavailable, fall back to the video ID. + +## Primary path — DeepAPI + +`DEEPAPI_API_KEY` must already be present in the environment. Do not read shell +startup files or print secrets: + +```bash +test -n "$DEEPAPI_API_KEY" || { echo "DEEPAPI_API_KEY is not set"; exit 1; } +BASE=${DEEPAPI_API_BASE_URL:-https://deepapi.co} +``` + +Run the scrape (keep the Idempotency-Key; retries must reuse the SAME one): + +```bash +IDK=$(uuidgen) +curl -s --max-time 120 "$BASE/v1/scrape/youtube/transcript" \ + -H "Authorization: Bearer $DEEPAPI_API_KEY" \ + -H "Content-Type: application/json" \ + -H "Idempotency-Key: $IDK" \ + -d '{"url": "VIDEO_URL", "maxCostUsd": "0.05", "waitForFinishSecs": 60}' \ + > /tmp/yt_transcript.json +``` + +- Non-English videos: add `"language": "de"` (etc.) to the body. +- `status: running` → wait `next.afterSecs`, then `curl "$BASE$(jq -r '.next.path' /tmp/yt_transcript.json)" -H "Authorization: Bearer $KEY"` until `succeeded` or `failed`. + +Extract the text and save it: + +```bash +jq -r '.status' /tmp/yt_transcript.json # succeeded | running | failed +jq -r '.output[0].text' /tmp/yt_transcript.json > "$OUT/$NAME.txt" +jq -r '.debitMicrousd' /tmp/yt_transcript.json # cost (50000 = $0.05) +``` + +`.output[0].segments` also has timed segments (`startSecs`, `durationSecs`, `text`) if the user wants timestamps. Empty `output` = video has no captions; report it, don't retry. + +For the `Channel_Title` filename, get metadata with a quick `yt-dlp --print "%(channel)s|%(title)s" --skip-download "URL"`; if that fails, use the video ID. + +## When to fall back to yt-dlp + +- `DEEPAPI_API_KEY` missing from the environment. +- HTTP 402 `insufficient_credits` (tell the user to top up at deepapi.co/credits first; fall back only if they're unavailable). +- DeepAPI request `failed` twice. + +Tell the user whenever you fall back — a fallback means the product missed a real use case. + +## Fallback path — yt-dlp (local) + +```bash +OUT="$(pwd)" # or ~/Downloads if cwd makes no sense +META=$(yt-dlp --print "%(channel)s|%(title)s" --skip-download "URL") +NAME=$(echo "$META" | tr '| ' '__' | tr -cd '[:alnum:]_.-') # "Channel_Title", spaces -> _, strip unsafe chars +yt-dlp --skip-download --write-subs --write-auto-subs \ + --sub-langs "en.*" --sub-format json3 \ + -o "$OUT/$NAME.%(ext)s" "URL" +``` + +- Fall back `channel` → `uploader` → `uploader_id` if `channel` is null. +- `--skip-download` = captions only. `--write-subs` + `--write-auto-subs` = manual first, auto as fallback. +- **Always use `json3`, never VTT/SRT** — auto VTT repeats every line twice (rolling captions). + +Flatten json3 → raw text: + +```bash +python3 - "$OUT" <<'PY' +import json, html, re, glob, sys, pathlib +f = glob.glob(sys.argv[1] + "/*.json3") +if not f: sys.exit("no json3 file") +data = json.load(open(f[0], encoding="utf-8")) +parts = ["".join(s.get("utf8","") for s in e.get("segs") or []) for e in data.get("events", [])] +txt = re.sub(r"\s+", " ", html.unescape(" ".join(p.strip() for p in parts if p.strip()))).strip() +out = pathlib.Path(f[0]).with_suffix(".txt") +out.write_text(txt, encoding="utf-8"); print(out) +PY +``` + +### yt-dlp failure handling +- Non-English / unknown language: run `yt-dlp --list-subs "URL"` first, then set `--sub-langs`. +- Newer yt-dlp may need `deno` on PATH for YouTube extraction. +- On first failure: run `yt-dlp -U` once, retry once, then stop. +- **429 / "Sign in to confirm you're not a bot"** = IP flagged. STOP — do NOT retry in a loop (makes it worse). +- Never fall back to downloading audio for Whisper unless the user explicitly asks. + +## Output + +Report the saved path; print the text if short. If DeepAPI was used, also report the cost in dollars. + +## Limitations + +- Adapted from `davidondrej/skills`; verify local paths, tools, credentials, and agent features before acting. +- For commands, remote access, scheduling, browser automation, or file-changing workflows, get explicit user approval and confirm the target environment first. diff --git a/antigravity-awesome-skills/plugins/antigravity-awesome-skills/.codex-plugin/plugin.json b/antigravity-awesome-skills/plugins/antigravity-awesome-skills/.codex-plugin/plugin.json index 7158bbbc..5d70dbd2 100644 --- a/antigravity-awesome-skills/plugins/antigravity-awesome-skills/.codex-plugin/plugin.json +++ b/antigravity-awesome-skills/plugins/antigravity-awesome-skills/.codex-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "antigravity-awesome-skills", - "version": "13.11.0", + "version": "13.12.0", "description": "Plugin-safe Codex plugin for the Antigravity Awesome Skills library.", "author": { "name": "sickn33 and contributors", @@ -19,7 +19,7 @@ "skills": "./skills/", "interface": { "displayName": "Antigravity Awesome Skills", - "shortDescription": "1,832 plugin-safe skills for coding, security, product, and ops workflows.", + "shortDescription": "1,857 plugin-safe skills for coding, security, product, and ops workflows.", "longDescription": "Install a plugin-safe Codex distribution of Antigravity Awesome Skills. Skills that still need hardening or target-specific setup remain available in the repo but are excluded from this plugin.", "developerName": "sickn33 and contributors", "category": "Productivity", diff --git a/antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/agent-self-scheduling/SKILL.md b/antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/agent-self-scheduling/SKILL.md new file mode 100644 index 00000000..743f3371 --- /dev/null +++ b/antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/agent-self-scheduling/SKILL.md @@ -0,0 +1,88 @@ +--- +name: agent-self-scheduling +description: "Schedule AI agent runs with cron, loops, or external clocks while avoiding unsafe tight autonomous timers." +category: agent-orchestration +risk: critical +source: community +source_repo: davidondrej/skills +source_type: community +date_added: "2026-07-07" +author: davidondrej +tags: [agents, scheduling, automation, cron] +tools: [claude, codex] +license: "MIT" +license_source: "https://github.com/davidondrej/skills/blob/main/LICENSE" +--- + +# Agent Self-Scheduling + +## When to Use + +- Use when the user asks for recurring, scheduled, heartbeat, or looped agent work. +- Use when you need to choose between cron, external schedulers, hooks, or built-in agent scheduling. + +First question: does the agent have a built-in scheduler (Hermes → Camp B), or do you own the clock (everything else → Camp A)? + +Universal floor: cron is 1 minute minimum (5-field expr, no seconds) — every camp. For sub-minute you MUST use a `while ...; sleep N; done` loop, a TS extension, or an event hook. Never put an LLM on a tight timer. + +## Camp A — one-shot agents, you own the clock + +These run once and exit (amnesiac unless resumed). Schedule them externally. + +```bash +claude -p "PROMPT" --output-format json --allowedTools "Read,Edit,Bash" # Claude Code +codex exec --json "PROMPT" # Codex +pi run "PROMPT" # Pi +``` + +Wrap in a clock: + +```bash +# 1. cron (>= 1 min floor) +*/10 * * * * cd /path/to/project && pi run "check X and report" >> ~/agent.log 2>&1 +# 2. systemd timer (Linux, survives reboot, better logging) — OnUnitActiveSec=10min +# 3. dumb loop (sub-minute, or no cron available) +while true; do pi run "check X"; sleep 30; done +``` + +Gotchas (each breaks unattended runs if ignored): +- **Permissions hang forever.** Pass `--allowedTools` (Claude) or sandbox/auto-approve flags (Codex), or the run blocks on a prompt. +- **Use JSON output** (`--output-format json` / `--json`) so the wrapper parses results deterministically. +- **Runs are amnesiac.** Resume (`codex exec resume --last`) or persist state to a file the next run reads. + +Pi has NO built-in scheduler/loop/heartbeat by design — external clock only (or a TS extension for agent-side timers). + +### cmux — orchestration only, NO scheduler + +cmux has no timer/watch/cron. Three ways to loop it: orchestrator-driven (`send` → `sleep` → `read-screen` on your own clock), a dumb while-sleep wrapper, or — preferred — event-driven via `cmux notify` + OSC terminal hooks, which is cheaper and more responsive than polling. `read-screen` is non-interruptive, safe to poll. + +If a loop checks another agent, send the user a one-line status each check: what the agent is doing, on track or not. (Claude Code may prefill a predicted next user message after finishing — that's Claude, not the user.) + +## Camp B — Hermes built-in scheduler + +Hermes' gateway ticks every 60s and runs due jobs in fresh isolated sessions. State-check first: + +```bash +hermes gateway install # user-level ( --system to survive reboot) +hermes cron create "every 1h" "summarize new emails and report" --skill himalaya +hermes cron create "0 9 * * *" "post daily standup" # cron expr +hermes cron create "30m" "one-shot reminder in 30 min" # one-shot delay +``` + +Hermes-unique: **zero-token mode** (run a script, deliver stdout verbatim — use for watchdogs), **chaining** (`context_from` pipes one job's output into the next), **self-terminating loops**, and **loop safety** (scheduled sessions cannot create more cron jobs — don't schedule from inside a scheduled job). Each run is a fresh session: the prompt must carry all context. + +## Heartbeat pattern + +One fast recurring tick gates many slower per-task checks: the tick reads a task list + per-task `last_run` timestamps and only acts on tasks that are due. In Hermes use a recurring job (zero-token mode when nothing's due); in Camp A use a while-sleep loop. Define active-hours, and stay silent when nothing is due — no empty noise. + +## Verify it fires (before reporting success) + +1. Camp A: log file grows after one interval, or run the wrapped command once by hand → clean JSON, exit 0. +2. Camp B: `hermes cron list` shows the job + sane `next_run`; trigger a run-now to confirm delivery. +3. Confirm permission/sandbox flags are present — the #1 silent failure is a hung permission prompt. +4. Heartbeats: confirm a nothing-due tick stays silent. + +## Limitations + +- Adapted from `davidondrej/skills`; verify local paths, tools, credentials, and agent features before acting. +- For commands, remote access, scheduling, browser automation, or file-changing workflows, get explicit user approval and confirm the target environment first. diff --git a/antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/anti-sleep/SKILL.md b/antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/anti-sleep/SKILL.md new file mode 100644 index 00000000..d180fbe6 --- /dev/null +++ b/antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/anti-sleep/SKILL.md @@ -0,0 +1,90 @@ +--- +name: anti-sleep +description: "Keep a Mac awake with caffeinate during long builds, downloads, or supervised automation runs." +category: operations +risk: critical +source: community +source_repo: davidondrej/skills +source_type: community +date_added: "2026-07-07" +author: davidondrej +tags: [macos, caffeinate, operations] +tools: [claude, codex] +license: "MIT" +license_source: "https://github.com/davidondrej/skills/blob/main/LICENSE" +--- + +# Anti-Sleep (macOS caffeinate) + +## When to Use + +- Use when the user wants the Mac to stay awake during a long supervised task. +- Use when a build, download, or automation run should not be interrupted by sleep. + +Keep the Mac awake using the built-in `caffeinate` command. No install needed. + +## Quick start — the standard command + +```bash +caffeinate -d -i -t 7200 # full power: screen stays on + no idle sleep, for 2 hours +``` + +Duration is `-t `: 2h = 7200, 7h = 25200, overnight (9h) = 32400. + +## Aggressiveness levels + +| Flags | Effect | +|---|---| +| `-i` | prevents idle **system** sleep only (screen may still dim/lock) | +| `-d` | prevents **display** sleep (screen stays on) | +| `-d -i` | **default choice** — screen on + system awake | +| `-d -i -s` | adds `-s`: prevents sleep even on AC power semantics; `-s` only works when plugged in | +| `-u -t 1` | simulates user activity — wakes the display right now | + +Default to `-d -i -t ` unless the user says otherwise. + +## Tie to a process instead of a timer + +```bash +caffeinate -d -i -w # stays awake until that process exits (great for builds) +caffeinate -i npm run build # wraps a command; exits when the command finishes +``` + +## Run it in a visible terminal (cmux pane) + +Prefer running it in the user's own terminal pane so it's visible and easy to Ctrl+C. In cmux (read the `cmux` skill first if interacting with panes): + +```bash +cmux send --surface surface: "caffeinate -d -i -t 25200\n" +``` + +Otherwise run it as a background Bash task. Never block your own foreground shell with it. + +## Verify and monitor + +```bash +pgrep -fl caffeinate # is it running? shows exact flags +ps -o etime= -p # how long it's been running +pmset -g assertions | grep -i deny # confirm sleep assertions are active +``` + +**Gotcha:** `caffeinate` prints nothing and holds the prompt — it looks "stuck" or like Enter wasn't pressed. It isn't stuck. Verify with `pgrep`, not by looking at the terminal. + +**Expiry:** with `-t` it exits silently when time runs out — no notification. If the user asks "is it still on?" after hours, check `pgrep` first; it may simply have expired. + +## Keyboard backlight + +`caffeinate` cannot keep the keyboard backlight on — it has its own inactivity timer with no CLI/API on Apple Silicon (researched 2026-07). Fix is manual, one-time: System Settings > Keyboard > "Turn keyboard backlight off after inactivity" > Never. + +## Stop early + +```bash +pkill -f "caffeinate -d -i" # or Ctrl+C in the pane running it +``` + +After starting: confirm to the user the PID, the flags, and the wall-clock time it will expire. + +## Limitations + +- Adapted from `davidondrej/skills`; verify local paths, tools, credentials, and agent features before acting. +- For commands, remote access, scheduling, browser automation, or file-changing workflows, get explicit user approval and confirm the target environment first. diff --git a/antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/brain-to-docs/SKILL.md b/antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/brain-to-docs/SKILL.md new file mode 100644 index 00000000..f6b2bd48 --- /dev/null +++ b/antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/brain-to-docs/SKILL.md @@ -0,0 +1,54 @@ +--- +name: brain-to-docs +description: "Interview the user to turn project vision and decisions into README and ADR documentation." +category: productivity +risk: critical +source: community +source_repo: davidondrej/skills +source_type: community +date_added: "2026-07-07" +author: davidondrej +tags: [documentation, adr, planning] +tools: [claude, codex] +license: "MIT" +license_source: "https://github.com/davidondrej/skills/blob/main/LICENSE" +--- + +# brain-to-docs + +## When to Use + +- Use when the user wants to extract project vision, decisions, or preferences into durable docs. +- Use when README and ADRs should be built through a back-and-forth interview. + +The whole purpose: extract as much of the user's taste, judgment, knowledge, vision, +preferences, and decisions as possible into text — saved as clear, concise +markdown docs for the project. README holds the vision; `docs/adr/` holds the +decisions. + +## The loop + +1. **Check docs first, every time.** Read `docs/adr/` (and `README.md`) before + doing anything — other agents and people add/edit ADRs constantly. +2. **Ask 5 different questions** in plain text (never a questions UI) — default 5 + unless the user asks for a different number. Make them high-variety: a wide, + creative spectrum of unique angles, not all the same type (e.g. not all "tech + stack" or all "product" or all "monetization"). Exception: if the user asks for a + specific focus area, follow it. The user answers whichever they find most useful. +3. **Update docs after EVERY answer** — no exceptions. You decide whether it + updates `README.md` or becomes a new ADR — whatever makes sense. +4. Repeat until the user says "we're done" (or similar). + +## Rules + +- All answers & responses during this "brain to docs" process must be VERY + CONCISE, all sentences should be SHORT, and everything should be written in + PLAIN ENGLISH. +- ADRs: short, numbered `NNNN-slug.md`, Status + Context + Decision + Consequences. +- README: vision only. Decisions go in ADRs. +- Don't challenge the user's thinking unless they ask, or they're making a severe mistake. + +## Limitations + +- Adapted from `davidondrej/skills`; verify local paths, tools, credentials, and agent features before acting. +- For commands, remote access, scheduling, browser automation, or file-changing workflows, get explicit user approval and confirm the target environment first. diff --git a/antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/browser-harness/SKILL.md b/antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/browser-harness/SKILL.md new file mode 100644 index 00000000..a442aeb1 --- /dev/null +++ b/antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/browser-harness/SKILL.md @@ -0,0 +1,220 @@ +--- +name: browser-harness +description: "Drive an existing browser through CDP for authenticated, visual, or interactive web automation." +category: browser-automation +risk: critical +source: community +source_repo: davidondrej/skills +source_type: community +date_added: "2026-07-07" +author: davidondrej +tags: [browser, cdp, automation, scraping] +tools: [claude, codex] +license: "MIT" +license_source: "https://github.com/davidondrej/skills/blob/main/LICENSE" +--- + +# browser-harness + +## When to Use + +- Use when a task needs a real logged-in browser, visible interaction, or JS-heavy page control. +- Use when static fetches are insufficient and CDP browser automation is appropriate. + +Direct browser control via CDP. For task-specific edits, use `agent-workspace/agent_helpers.py`. For setup, install, or connection problems, read install.md. + +**Routing check first:** if the task needs no interaction (no clicks, logins, or forms) and you just want page content, use DeepAPI `POST /v1/scrape/website` instead of driving a browser — see the `deepapi` skill. Use browser-harness when the task needs a real browser: interaction, JS-heavy flows, logged-in sessions, or visual verification. + +Domain skills (community-contributed per-site playbooks under `agent-workspace/domain-skills/`) are off by default. Set `BH_DOMAIN_SKILLS=1` to enable them; see the bottom section. + +**If `BH_DOMAIN_SKILLS=1` and the task is site-specific, read every file in the matching `agent-workspace/domain-skills//` directory before inventing an approach.** + +## Usage + +```bash +browser-harness -c ' +new_tab("https://docs.browser-use.com") +wait_for_load() +print(page_info()) +' +``` + +- Invoke as browser-harness — it's on $PATH. No cd, no uv run. +- First navigation is new_tab(url), not goto_url(url) — goto runs in the user's active tab and clobbers their work. + +## Tool call shape + +```bash +browser-harness -c ' +# any python. helpers pre-imported. daemon auto-starts. +' +``` + +run.py calls ensure_daemon() before exec — you never start/stop manually unless you want to. + +### Remote browsers + +Use remote for parallel sub-agents (each gets its own isolated browser via a distinct BU_NAME) or on a headless server. BROWSER_USE_API_KEY must be set. start_remote_daemon, list_cloud_profiles, list_local_profiles, sync_local_profile are pre-imported. + +When supervising those sub-agents, after each check send the user one very short status line: what they are doing and whether they are on track. + +Claude Code cmux note: after Claude finishes, it may prefill a predicted next user message; that draft is Claude, not the user speaking. + +```bash +browser-harness -c ' +start_remote_daemon("work") # default — clean browser, no profile +# start_remote_daemon("work", profileName="my-work") # reuse a cloud profile (already logged in) +# start_remote_daemon("work", profileId="") # same, but by UUID +# start_remote_daemon("work", proxyCountryCode="de", timeout=120) # DE proxy, 2-hour timeout +# start_remote_daemon("work", proxyCountryCode=None) # disable the Browser Use proxy +' + +BU_NAME=work browser-harness -c ' +new_tab("https://example.com") +print(page_info()) +' +``` + +start_remote_daemon prints liveUrl and auto-opens it in the local browser (if a GUI is detected) so the user can watch along. Headless servers print only — share the URL with the user. The daemon PATCHes the cloud browser to stop on shutdown, which persists profile state. Running remote daemons bill until timeout. + +Profiles (cookies-only login state) live in interaction-skills/profile-sync.md — covers list_cloud_profiles(), the chat-driven "which profile?" pattern, and sync_local_profile() for uploading a local Chrome profile. + +## Interaction skills + +If you start struggling with a specific mechanic while navigating, look in interaction-skills/ for helpers. They cover reusable UI mechanics like dialogs, tabs, dropdowns, iframes, and uploads. The available interaction skills are: +- connection.md +- cookies.md +- cross-origin-iframes.md +- dialogs.md +- downloads.md +- drag-and-drop.md +- dropdowns.md +- iframes.md +- network-requests.md +- print-as-pdf.md +- profile-sync.md +- screenshots.md +- scrolling.md +- shadow-dom.md +- tabs.md +- uploads.md +- viewport.md + +## What actually works + +- Screenshots first: use capture_screenshot() to understand the current page quickly, find visible targets, and decide whether you need a click, a selector, or more navigation. +- Clicking: capture_screenshot() → read the pixel off the image → click_at_xy(x, y) → capture_screenshot() to verify. Suppress the Playwright-habit reflex of "locate first, then click" — no getBoundingClientRect, no selector hunt. Drop to DOM only when the target has no visible geometry (hidden input, 0×0 node). Hit-testing happens in Chrome's browser process, so clicks go through iframes / shadow DOM / cross-origin without extra work. +- Bulk HTTP: http_get(url) + ThreadPoolExecutor. No browser for static pages (249 Netflix pages in 2.8s). +- After goto: wait_for_load(). +- Wrong/stale tab: ensure_real_tab(). Use it when the current tab is stale or internal; the daemon also auto-recovers from stale sessions on the next call. +- Verification: print(page_info()) is the simplest "is this alive?" check, but screenshots are the default way to verify whether a visible action actually worked. +- DOM reads: use js(...) for inspection and extraction when the screenshot shows that coordinates are the wrong tool. +- Iframe sites (Azure blades, Salesforce): click_at_xy(x, y) passes through; only drop to iframe DOM work when coordinate clicks are the wrong tool. +- Auth wall: redirected to login → stop and ask the user. Don't type credentials from screenshots. +- Raw CDP for anything helpers don't cover: cdp("Domain.method", params). + +## Design constraints + +- Coordinate clicks default. Input.dispatchMouseEvent goes through iframes/shadow/cross-origin at the compositor level. +- Connect to the user's running Chrome. Don't launch your own browser. +- cdp-use is only for CDPClient.send_raw. Prefer raw CDP strings over typed wrappers. +- run.py stays tiny. No argparse, subcommands, or extra control layer. +- Core helpers stay short. Put task-specific helper additions in `agent-workspace/agent_helpers.py`; daemon/bootstrap and remote session admin live in the core package. +- Don't add a manager layer. No retries framework, session manager, daemon supervisor, config system, or logging framework. + +## Hermes Agent integration + +Installed at `~/Developer/browser-harness` as editable `uv tool install -e .`. Binary at `~/.local/bin/browser-harness`. Skill at `~/.hermes/skills/browser-harness/`. + +**Frontmatter pitfall:** The upstream SKILL.md ships with `name: browser` in frontmatter, which collides with Hermes's built-in `browser` toolset. When copying into `~/.hermes/skills/`, rename to `name: browser-harness` in the frontmatter or Hermes will shadow/conflict with its own browser tools. + +**Brave Browser:** Works identically to Chrome. Enable remote debugging at `brave://inspect/#remote-debugging` (same checkbox). The harness auto-discovers Brave's profile directory. + +## Authenticated content extraction (proven pattern) + +browser-harness connects to the user's real browser with their active sessions — ideal for extracting content from login-walled sites where `web_extract` or Hermes's built-in `browser_navigate` fail (e.g. X/Twitter articles, LinkedIn, paywalled sites). + +**Pattern:** +```bash +browser-harness -c ' +new_tab("https://x.com/user/status/123456") +wait_for_load() +import time +time.sleep(5) # let JS-heavy pages render +text = js(""" + const article = document.querySelector("article"); + if (article) return article.innerText; + return document.body.innerText; +""") +with open("/tmp/extracted.txt", "w") as f: + f.write(text) +print("Written", len(text), "chars") +' +``` + +- Write to a temp file to avoid shell escaping issues with large text +- Use `time.sleep()` generously for JS-heavy SPAs (X, LinkedIn need 3-5s) +- X/Twitter articles render inline — just scroll/extract via DOM, no extra click needed +- For very long pages, `js(...)` with `innerText` grabs everything including below-fold content + +## Hermes Agent integration + +Installed at `~/Developer/browser-harness` as editable `uv tool install -e .`. Binary at `~/.local/bin/browser-harness`. Skill at `~/.hermes/skills/browser-harness/`. + +**Frontmatter pitfall:** The upstream SKILL.md ships with `name: browser` in frontmatter, which collides with Hermes's built-in `browser` toolset. When copying into `~/.hermes/skills/`, rename to `name: browser-harness` in the frontmatter. + +**Brave Browser:** Works identically to Chrome. Enable remote debugging at `brave://inspect/#remote-debugging` (same checkbox). The harness auto-discovers Brave's profile directory. + +## Authenticated content extraction (proven pattern) + +browser-harness connects to the user's real browser with active sessions — ideal for login-walled sites where `web_extract` or Hermes's built-in `browser_navigate` fail (X/Twitter articles, LinkedIn, paywalled sites). + +```bash +browser-harness -c ' +new_tab("https://x.com/user/status/123456") +wait_for_load() +import time +time.sleep(5) # let JS-heavy pages render +text = js(""" + const article = document.querySelector("article"); + if (article) return article.innerText; + return document.body.innerText; +""") +with open("/tmp/extracted.txt", "w") as f: + f.write(text) +print("Written", len(text), "chars") +' +``` + +- Write to a temp file to avoid shell escaping issues with large text +- Use `time.sleep()` generously for JS-heavy SPAs (X, LinkedIn need 3-5s) +- X/Twitter articles render inline — just scroll/extract via DOM, no extra click needed +- `js(...)` with `innerText` grabs everything including below-fold content + +## Gotchas (field-tested) + +- **Brave Browser** uses `brave://inspect/#remote-debugging` instead of `chrome://inspect/...`. The harness auto-discovers Brave's data dir. +- Login-walled content extraction (e.g. X/Twitter articles): navigate with `new_tab(url)`, `wait_for_load()`, then extract via `js("document.querySelector('article').innerText")`. Write to a temp file to avoid shell escaping: `with open('/tmp/out.txt', 'w') as f: f.write(text)`. The user's existing browser session handles auth automatically. +- Omnibox popups are fake page targets. Filter chrome://omnibox-popup... and other internals when you need a real tab. +- CDP target order != Chrome's visible tab-strip order. Use UI automation when the user means "the first/second tab I can see"; Target.activateTarget only shows a known target. +- Default daemon sessions can go stale. ensure_real_tab() re-attaches to a real page. +- Browser Use API is camelCase on the wire. cdpUrl, proxyCountryCode, etc. +- Remote cdpUrl is HTTPS, not ws. Resolve the websocket URL via /json/version. +- Stop cloud browsers with PATCH /browsers/{id} + {"action":"stop"}. +- After every meaningful action, re-screenshot before assuming it worked. Use the image to verify changed state, open menus, navigation, visible errors, and whether the page is in the state you expected. +- Use screenshots to drive exploration. They are often the fastest way to find the next click target, notice hidden blockers, and decide if a selector is even worth writing. +- Prefer compositor-level actions over framework hacks. Try screenshots, coordinate clicks, and raw key input before adding DOM-specific workarounds. +- If you need framework-specific DOM tricks, check interaction-skills/ first. That is where dropdown, dialog, iframe, shadow DOM, and form-specific guidance belongs. + +## Domain skills (opt-in) + +Only applies when `BH_DOMAIN_SKILLS=1`. Otherwise ignore — `agent-workspace/domain-skills/` is dormant and `goto_url` won't surface skill files. + +When enabled, search `agent-workspace/domain-skills//` before inventing an approach. `goto_url` returns up to 10 skill filenames for the navigated host. + +If you learn anything non-obvious — a private API, stable selector, framework quirk, URL pattern, hidden wait, or site-specific trap — open a PR to `agent-workspace/domain-skills//`. Capture the durable shape of the site (the map, not the diary). Don't write pixel coordinates (break on layout), task narration, or secrets — the directory is public. + +## Limitations + +- Adapted from `davidondrej/skills`; verify local paths, tools, credentials, and agent features before acting. +- For commands, remote access, scheduling, browser automation, or file-changing workflows, get explicit user approval and confirm the target environment first. diff --git a/antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/browser-harness/references/install.md b/antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/browser-harness/references/install.md new file mode 100644 index 00000000..a38e81dd --- /dev/null +++ b/antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/browser-harness/references/install.md @@ -0,0 +1,132 @@ +--- +name: browser-install +description: Install browser-harness into the current agent and connect it to a browser with minimal prompting. +--- + +# `browser-harness` installation + +Use this file only for browser-harness install, browser connection setup, and connection troubleshooting. For day-to-day browser work, read `SKILL.md`. Task-specific edits belong in `agent-workspace/agent_helpers.py` and `agent-workspace/domain-skills/`. + +## Recommended `browser-harness` setup + +Clone the repo once into a durable location, then install it as an editable tool so `browser-harness` works from any directory: + +```bash +git clone https://github.com/browser-use/browser-harness +cd browser-harness +uv tool install -e . +command -v browser-harness +``` + +That keeps the command global while still pointing at the real repo checkout, so when the agent edits `agent-workspace/agent_helpers.py` the next `browser-harness` uses the new code immediately. Prefer a stable path like `~/Developer/browser-harness`, not `/tmp`. + +## Make browser-harness global for the current agent + +After the repo is installed, register this repo's `SKILL.md` with the agent you are using: + +- **Codex**: add this file as a global skill at `$CODEX_HOME/skills/browser-harness/SKILL.md` (often `~/.codex/skills/browser-harness/SKILL.md`). A symlink to this repo's `SKILL.md` is fine. + + ```bash + mkdir -p "${CODEX_HOME:-$HOME/.codex}/skills/browser-harness" && ln -sf "$PWD/SKILL.md" "${CODEX_HOME:-$HOME/.codex}/skills/browser-harness/SKILL.md" + ``` + +- **Claude Code**: add an import to `~/.claude/CLAUDE.md` that points at this repo's `SKILL.md`, for example `@~/Developer/browser-harness/SKILL.md`. + +This makes new Codex or Claude Code sessions in other folders load the runtime browser harness instructions automatically. + +## Keeping the harness current + +- On each run, `browser-harness` prints `[browser-harness] update available: X -> Y` (once per day) when a newer GitHub release exists. +- When you see that banner, run `browser-harness --update -y` yourself — don't ask the user. It pulls the new code (`git pull --ff-only` for editable clones, `uv tool upgrade browser-harness` for PyPI installs) and stops the running daemon so the next call picks up the new code. With `-y` it won't prompt. +- `--update` refuses to run on an editable clone with uncommitted changes. If that happens, tell the user and let them resolve the dirty worktree. + +## Maintenance commands + +- browser-harness --doctor — show version, install mode, daemon and Chrome state, and whether an update is pending. + +## Architecture + +```text +Chrome / Browser Use cloud -> CDP WS -> browser_harness.daemon -> IPC -> browser_harness.run +``` + +- Protocol is one JSON line each way. +- Requests are {method, params, session_id} for CDP or {meta: ...} for daemon control. +- Responses are {result} / {error} / {events} / {session_id}. +- IPC: Unix socket at `/tmp/bu-.sock` on POSIX, TCP loopback + port file on Windows. +- BU_NAME namespaces the daemon's IPC, pid, and log files. +- BU_CDP_WS overrides local Chrome discovery for remote browsers. +- BU_CDP_URL overrides local Chrome discovery with a specific DevTools HTTP endpoint (used for Way 2). +- BU_BROWSER_ID + BROWSER_USE_API_KEY lets the daemon stop a Browser Use cloud browser on shutdown. + +# Browser connection setup and troubleshooting + +## Browser connection reference + +This section is the source of truth for how browser-harness connects to a browser. It is the canonical reference for every agent and user of this repo. Every statement here is intended to be verifiable against either an official Chrome source or this repo's own code, and is held to that standard deliberately. If anything below is incorrect, incomplete, or misleading, open an issue on the browser-harness repository immediately with clear evidence and explanation so it can be corrected. Do not silently work around an error in this document; the cost of one user being misled is much higher than the cost of one issue. + +Browser-harness can connect to any Chrome or Chromium-based browser on your computer, or to a Browser Use cloud browser. + +**Cloud browsers** are managed by the Browser Use cloud API. Start one in Python with `start_remote_daemon("work", ...)`. Authentication is via the `BROWSER_USE_API_KEY` environment variable; the harness handles the WebSocket URL itself. To carry your local Chrome cookies into a cloud browser, install the Browser Use `profile-use` helper only after reviewing the upstream installer instructions, then call `uuid = sync_local_profile("MyChromeProfile")` followed by `start_remote_daemon("work", profileId=uuid)`. Cookies are the only thing synced — not localStorage, not extensions, not history. + +**Local browsers** require remote debugging to be enabled. There are two ways, and they suit different use cases. + +*Way 1: chrome://inspect/#remote-debugging checkbox — uses your real profile.* In your running Chrome, navigate to `chrome://inspect/#remote-debugging` and tick the "Allow remote debugging for this browser instance" checkbox. This setting is per-profile and sticky: tick it once and it persists across every future Chrome launch of that profile. Then run any `browser-harness` command. On Chrome 144 and later, the first attach by the harness triggers an in-browser "Allow remote debugging?" popup that you must click Allow on. The popup may reappear on later attaches under conditions that are not fully characterized.[^1] This path inherits your everyday Chrome's logins, extensions, history, and bookmarks, which makes it the right choice for an agent helping you with tasks in your real browser. + +*Way 2: command-line flag — uses an isolated profile, no popups ever.* Launch Chrome with `--remote-debugging-port=9222 --user-data-dir=`. Two precisions: + +- The path must be a directory that is **not** Chrome's platform default (`%LOCALAPPDATA%\Google\Chrome\User Data` on Windows, `~/Library/Application Support/Google/Chrome` on macOS, `~/.config/google-chrome` on Linux). On Chrome 136 and later, the port flag is silently no-opped when the user-data-dir is the platform default, even if you pass it explicitly. An empty or new path gives a fresh clean profile that Chrome will persist there across future runs. +- This path does **not** let you reuse your everyday Chrome profile. Copying the default profile's files into a custom directory makes Chrome accept the flag, but cookies are encrypted under a key bound to the original directory and will not survive the copy — so you carry over bookmarks and extensions but lose every logged-in session. If you want your real logins, use Way 1. + +Tell the harness which port you launched on by setting `BU_CDP_URL=http://127.0.0.1:9222` before running `browser-harness`. + +For most tasks where the agent acts on your behalf in your normal browser, use Way 1. For automation that runs without you watching, or any case where popup interruptions are unacceptable, use Way 2 or a cloud browser. + +[^1]: The conditions that cause Chrome to re-show the "Allow remote debugging?" popup on a subsequent attach (time elapsed since previous Allow, daemon restart, browser restart, new CDP session, version-dependent options like "Allow for N hours") are not fully characterized. Way 2 sidesteps this entirely. + +## First time setup + +Try yourself before asking the user to do anything. Retry transient errors briefly. Only ask the user when a step genuinely needs them — ticking a checkbox, clicking Allow. + +If the user hasn't said which connection method to use, default to Way 1 if Chrome is already running, Way 2 if not. Cloud is only used when the user opts in. + +1. Try the harness: + + ```bash + browser-harness -c 'print(page_info())' + ``` + + If it prints page info, you're done. + +2. Otherwise run `browser-harness --doctor`. The two lines that matter for connection are `chrome running` and `daemon alive`. + +3. Match the output to a case: + + - **chrome FAIL** → no Chrome process detected. + - **Way 1**: ask the user to open their target Chrome themselves. + - **Way 2**: launch Chrome yourself with `--remote-debugging-port=9222 --user-data-dir=`, then set `BU_CDP_URL=http://127.0.0.1:9222` for the harness (see the Browser connection reference). + + - **chrome ok, daemon FAIL** → Way 1 setup is incomplete. Tell the user to: + - navigate to `chrome://inspect/#remote-debugging` in their Chrome and tick "Allow remote debugging for this browser instance" if not yet ticked (one-time per profile) + - click Allow on the in-browser popup if it appears (every attach on Chrome 144+) + + On macOS, you can open the inspect page in their running Chrome yourself instead of asking them to navigate: + + ```bash + osascript -e 'tell application "Google Chrome" to activate' \ + -e 'tell application "Google Chrome" to open location "chrome://inspect/#remote-debugging"' + ``` + + - **chrome ok, daemon ok, but step 1 still failed** → stale daemon. Restart it: + + ```bash + browser-harness -c 'restart_daemon()' + ``` + + If that hangs, escalate: kill all Chrome and daemon processes, then reopen Chrome and retry. On macOS/Linux, also remove `/tmp/bu-default.sock` and `/tmp/bu-default.pid` if they linger. + +4. After any fix, retry step 1. + +If Way 1 fails repeatedly or the user's task is unattended, move to Way 2 or a cloud browser per the Browser connection reference (these have no popups). + +If you are testing browser connection for the first time, run this demo: open `https://github.com/browser-use/browser-harness` in a new tab and activate it (`switch_tab`) so the user sees the harness has attached. Then ask what they want to do next. diff --git a/antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/cmux/SKILL.md b/antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/cmux/SKILL.md new file mode 100644 index 00000000..908b780b --- /dev/null +++ b/antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/cmux/SKILL.md @@ -0,0 +1,250 @@ +--- +name: cmux +description: "Control cmux workspaces, panes, surfaces, and agent sessions safely from macOS terminal workflows." +category: development +risk: critical +source: community +source_repo: davidondrej/skills +source_type: community +date_added: "2026-07-07" +author: davidondrej +tags: [cmux, terminal, agents, macos] +tools: [claude, codex] +license: "MIT" +license_source: "https://github.com/davidondrej/skills/blob/main/LICENSE" +--- + +# cmux Control + +## When to Use + +- Use when you need to inspect, create, close, or rearrange cmux panes, surfaces, or workspaces. +- Use when you need to send input to or monitor agents running inside cmux. + +cmux is a native macOS terminal app for running multiple AI coding agents in parallel. It exposes a CLI (`cmux`) and a Unix-socket JSON-RPC API (`/tmp/cmux.sock`) for full topology and browser control. + +## Core Concepts + +- **Window** — top-level macOS cmux window +- **Workspace** — sidebar tab within a window (one git branch / project context) +- **Pane** — split region inside a workspace +- **Surface** — tab inside a pane (terminal or browser) + +Handles default to short refs (`workspace:2`, `pane:1`, `surface:7`); UUIDs accepted as input. Add `--id-format uuids|both` for UUID output. + +### Ref syntax — get this right or fail silently + +- **Always use PREFIXED refs** (`pane:38`, `surface:46`). A **bare number is treated as an INDEX, not an ID** — `--surface 46` means "the surface at index 46" (usually nonexistent → silent failure), NOT `surface:46`. +- **`read-screen` and `capture-pane` have NO `--pane` flag** — they target `--workspace` or `--surface` only. Passing `--pane` errors, and a bare/missing target falls back to your OWN surface (you'll read your own footer and draw wrong conclusions). To read a pane: resolve it to a surface FIRST with `cmux list-pane-surfaces --pane pane:N`, then `cmux read-screen --surface surface:N`. +- **Never append `2>/dev/null` to cmux commands.** Errors go to stderr with exit code 1; suppressing them blinds you to your own ref/flag mistakes (the #1 cause of "(no output)"). + +## Detect cmux in a Shell + +```bash +[ -S "${CMUX_SOCKET_PATH:-/tmp/cmux.sock}" ] || exit 0 # bail if not in cmux +[ -n "${CMUX_WORKSPACE_ID:-}" ] && echo "inside cmux surface" +``` + +Injected env vars in every cmux-spawned terminal: `CMUX_WORKSPACE_ID`, `CMUX_SURFACE_ID`, `CMUX_SOCKET_PATH`, `CMUX_PORT`. **Always anchor automation to `CMUX_WORKSPACE_ID`** — the visually focused workspace may not be the agent's caller workspace. + +## Fast Start — Topology + +```bash +cmux identify --json # who am I (window/workspace/pane/surface) +cmux tree # full hierarchy +cmux list-workspaces --json +cmux list-panes --workspace "$CMUX_WORKSPACE_ID" +cmux list-surfaces --workspace "$CMUX_WORKSPACE_ID" + +cmux new-workspace --name "feature-x" --cwd /path/to/repo +cmux new-pane --workspace "$CMUX_WORKSPACE_ID" --type terminal --direction right --focus false +cmux new-pane --workspace "$CMUX_WORKSPACE_ID" --type browser --direction right --url http://localhost:3000 +cmux move-surface --surface surface:7 --pane pane:2 --focus false +cmux split-off --surface surface:7 right +cmux reorder-surface --surface surface:7 --before surface:3 +cmux close-surface --surface surface:7 +``` + +## Polling Pi Agents in Panes — Keep Sleeps Short + +When launching a Pi Agent inside a cmux pane and polling for output, use **short `sleep` intervals (2–5s)**. Pi is fast and minimal, and the user runs it on Opus 4.8 Fast via OpenRouter, which streams tokens extremely quickly. Do NOT use `sleep 15` unless genuinely needed (a big build/refactor) — most of the time `sleep 2`–`sleep 5` is more than enough. + +After every agent check, send the user a one-line status update: what the agent is doing and whether it is on track. Keep it extremely concise. + +Claude Code cmux note: after Claude finishes, it may prefill a predicted next user message; that draft is Claude, not the user speaking. + +## Send Input + +**Command names:** there is NO `send-surface` / `send-key-surface`. Target a specific surface with the `--surface` flag on `send` / `send-key` (same commands as the focused terminal). `send-panel` / `send-key-panel` exist ONLY for panels (`--panel`), not surfaces. + +```bash +cmux send "echo hi\n" # focused terminal +cmux send-key "ctrl+c" # enter|tab|esc|backspace|arrows|ctrl+x|shift+tab +cmux send --surface surface:7 "npm run build" # specific surface (NOT send-surface) +cmux send-key --surface surface:7 enter # specific surface (NOT send-key-surface) +``` + +## Notifications & Sidebar Metadata + +```bash +cmux notify --title "Done" --body "tests passed" +cmux set-status build "compiling" --icon hammer --color "#ff9500" +cmux set-progress 0.5 --label "Building..." +cmux log --level success "All 42 tests passed" # info|progress|success|warning|error +cmux trigger-flash --workspace "$CMUX_WORKSPACE_ID" # blue-ring attention cue +cmux sidebar-state --json # dump all sidebar metadata +``` + +## Browser Automation (WKWebView) + +Workflow: open → wait → snapshot → act → re-snapshot. + +```bash +S=$(cmux --json browser open https://example.com | jq -r .result.surface_ref) +cmux browser "$S" wait --load-state complete --timeout-ms 15000 +cmux browser "$S" snapshot --interactive # returns elements as e1, e2, ... +cmux browser "$S" fill e1 "" +cmux browser "$S" click e2 --snapshot-after + +# Navigation / inspection +cmux browser "$S" goto URL | back | forward | reload +cmux browser "$S" get url | get title | get text body | get value "#email" | get count ".row" +cmux browser "$S" eval 'return document.title' + +# Waits +cmux browser "$S" wait --selector "#ready" --timeout-ms 10000 +cmux browser "$S" wait --url-contains "/dashboard" --timeout-ms 10000 + +# Session +cmux browser "$S" cookies get | cookies set --name foo --value bar +cmux browser "$S" state save /tmp/auth.json | state load /tmp/auth.json + +# Diagnostics +cmux browser "$S" console list | errors list | screenshot +``` + +**Not supported by WKWebView** (return `not_supported`): viewport emulation, geolocation/offline emulation, trace recording, network route interception, raw input injection. + +## Markdown Viewer + +```bash +cmux markdown open plan.md --direction right # live-watching renderer +cmux open file.pdf # auto-routes to right viewer +``` + +`cmux markdown open` flags: `--workspace`, `--surface`, `--window`, `--direction `, `--focus `. There is **NO `--pane` flag** — passing it errors. To target a pane, pass `--surface `. + +### Reuse the existing right markdown pane (don't spawn strays) + +Default behavior of `markdown open` is to **create a new pane** every time, even with `--direction right`. To keep all docs as tabs in ONE right pane, follow this exactly: + +```bash +# 1. Find the right pane and its surfaces (anchor to THIS workspace) +cmux list-panes --workspace "$CMUX_WORKSPACE_ID" +cmux list-pane-surfaces --pane pane:10 # the right/helper pane + +# 2. Open targeting an existing markdown surface IN that pane (reuses pane, adds tab) +cmux markdown open /abs/path/file.md --surface surface:12 --focus false + +# 3. If it STILL spawned a new pane (it can), move the new surface in + verify +cmux move-surface --surface surface:NEW --pane pane:10 --focus false +cmux list-panes --workspace "$CMUX_WORKSPACE_ID" # confirm stray pane is gone +``` + +### Swapping the file in the single right pane (close-FIRST, then open) + +To replace the doc shown in your one right markdown pane, the ONLY reliable order is **close the previous surface FIRST, then `markdown open` the new file fresh** — never move an existing viewer, never open-then-close. + +```bash +# 1. close the previous right markdown surface (right side goes empty) +cmux list-panes --workspace "$CMUX_WORKSPACE_ID" +cmux close-surface --surface surface:PREV +# 2. THEN open the new file fresh +cmux markdown open /abs/path/new.md --direction right --focus false +``` + +ORDER MATTERS: close-previous BEFORE open-new. Opening first then closing the old one, or `move-surface`-ing an existing viewer, leaves the right pane BLANK. + +### Hard-won lessons (avoid the trial-and-error) + +- **Surface refs are global, not per-workspace.** A ref like `surface:126` from an earlier `markdown open` may live in a different window/workspace. Always re-list (`list-panes` / `list-pane-surfaces`) before reusing a ref — never assume a ref from a previous turn is still in the right pane. +- **`move-surface`-ing a markdown viewer often leaves it BLANK.** The moved surface keeps `type=markdown` and `surface-health` looks fine, but renders nothing. Fix: `close-surface` it and `cmux markdown open ` fresh, then move the *fresh* surface if needed. Don't waste time on `refresh-surfaces` — it usually won't fix a moved-then-blank viewer. +- **You cannot screenshot or `read-screen` a markdown surface** (`Surface is not a terminal` / browser screenshot is WKWebView-only). To verify a markdown viewer rendered, ask the user or open the file in a browser surface instead. Don't burn turns trying to capture it. +- **`cmux list-surfaces` does not exist.** Use `cmux list-pane-surfaces [--pane ...]`. + +## Settings & Config + +```bash +cmux docs settings # prints paths, schema URL, reload cmd — read BEFORE editing +cmux settings path # path to cmux.json +cmux settings cmux-json # open in editor +cmux reload-config # hot-reload cmux.json + ~/.config/ghostty/config (Cmd+Shift+,) +``` + +Locations: +- cmux settings: `~/.config/cmux/cmux.json` (canonical). Project-local override: `.cmux/cmux.json` or `./cmux.json`. +- Terminal rendering (font, cursor, theme, scrollback, opacity, blur): `~/.config/ghostty/config` — NOT cmux.json. + +Before editing `cmux.json`, copy it to a timestamped `.bak` next to it so the user can revert. Schema: `https://raw.githubusercontent.com/manaflow-ai/cmux/main/web/data/cmux.schema.json`. + +## Agent Hooks & Install + +```bash +brew tap manaflow-ai/cmux && brew install --cask cmux +sudo ln -sf /Applications/cmux.app/Contents/Resources/bin/cmux /usr/local/bin/cmux +cmux hooks setup # all detected agents +cmux hooks setup codex|grok|antigravity|opencode # specific agent +npx skills add manaflow-ai/cmux -g -y # install cmux skills for agents +``` + +Native session-resume supported for: Claude Code, Codex, Grok, OpenCode, Pi, Amp, Cursor CLI, Gemini, Antigravity, Rovo Dev, Hermes, Copilot, CodeBuddy, Factory, Qoder. + +## Socket API (advanced) + +`/tmp/cmux.sock` — Unix socket, JSON-RPC v2. Use for tight loops where subprocess spawn cost matters; otherwise prefer the CLI. + +```bash +echo '{"id":"1","method":"workspace.list","params":{}}' | nc -U /tmp/cmux.sock +``` + +Method prefixes: `system.*`, `window.*`, `workspace.*`, `pane.*`, `surface.*`, `notification.*`, `browser.*`. Full list and Python client example in `references/socket-api.md`. + +Access modes: `cmuxOnly` (default — only cmux-spawned processes), `automation` (any local process), `password`, `allowAll` (unsafe). If you hit `Failed to connect to socket`, you're likely an external process under `cmuxOnly` — switch mode in Settings > Automation or run from inside a cmux terminal. + +## Critical Rules — Non-Disruptive Automation + +These rules come from the `cmux-workspace` skill and prevent agents from yanking the user's focus: + +1. **Anchor to `CMUX_WORKSPACE_ID`.** Never assume the visually focused workspace is the target. +2. **Never call focus-changing verbs speculatively.** `select-workspace`, `focus-pane`, `focus-panel`, `focus-surface` only on explicit user request. Pass `--focus false` whenever available. +3. **Build layout additively in one call.** `cmux new-pane --type … --focus false` beats create-then-move-then-focus chains. +4. **Right-side helper pane pattern.** Reuse an existing non-caller helper pane if present; otherwise create exactly one right-side pane. +5. **Never send input to surfaces you don't own.** Only target surfaces in the caller's workspace unless the user explicitly asks for cross-workspace routing. +6. **Check surface health before routing input** when UI state may be stale: `cmux surface-health`. + +## Common Pitfalls + +- **Pi/Pi-like socket connection failures from external processes** → default `cmuxOnly` mode; either run inside a cmux terminal or change socket mode. +- **macOS only.** No Linux/Windows port. +- **WKWebView ≠ CDP.** Don't expect Playwright-equivalent network mocking or viewport emulation. +- **Resume strips sensitive env vars.** Re-inject tokens at resume time if the agent needs them. +- **Skills snapshot at app start.** Edits to skill files require a restart of the consuming agent. +- **Legacy v1 socket payloads (`{"command":...}`) rejected.** Use v2 JSON-RPC only. +- **Don't `cat ~/.cmuxterm/*-hook-sessions.json`** expecting secrets — they're scrubbed. Look there for session/surface mappings only. + +## Reference: Full CLI Help + +For any command, `cmux --help` is authoritative. Use `cmux capabilities --json` to enumerate available socket methods in the current build. + +## Keyboard Shortcuts (most-used) + +Workspaces: ⌘N new, ⌘1–8 jump, ⌃⌘[ / ⌃⌘] prev/next, ⌘⇧W close, ⌘B sidebar. +Surfaces: ⌘T new, ⌘⇧[ / ⌘⇧] prev/next, ⌘W close, ⌃1–8 jump. +Splits: ⌘D right, ⌘⇧D down, ⌥⌘D browser right, ⌥⌘←→↑↓ focus directional, ⌘⇧↵ zoom. +Browser: ⌘⇧L open, ⌘L address bar, ⌘[/⌘] back/forward, ⌥⌘I devtools. +App: ⌘, settings, ⌘⇧, reload-config, ⌘⇧P palette, ⌘⇧O restore session, ⌃⌥⌘. system-wide show/hide. + +## Limitations + +- Adapted from `davidondrej/skills`; verify local paths, tools, credentials, and agent features before acting. +- For commands, remote access, scheduling, browser automation, or file-changing workflows, get explicit user approval and confirm the target environment first. diff --git a/antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/cyber-audit/SKILL.md b/antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/cyber-audit/SKILL.md new file mode 100644 index 00000000..e5a5b6e4 --- /dev/null +++ b/antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/cyber-audit/SKILL.md @@ -0,0 +1,138 @@ +--- +name: cyber-audit +description: "Run read-only exposure checks for security advisories and write a structured local audit report." +category: security +risk: safe +source: community +source_repo: davidondrej/skills +source_type: community +date_added: "2026-07-07" +author: davidondrej +tags: [security, audit, read-only] +tools: [claude, codex] +license: "MIT" +license_source: "https://github.com/davidondrej/skills/blob/main/LICENSE" +disable-model-invocation: true +--- + +# cyber-audit + +## When to Use + +- Use when the user asks whether their machine or projects are affected by a CVE, breach, or package advisory. +- Use when a read-only local security exposure report is appropriate. + +## Hard rules + +- **Read-only.** No installs, removes, upgrades, restarts, network calls, or file modifications outside `~/Documents/security-audits/`. +- **No `sudo`.** Never. +- **One report per invocation.** Always end by writing the `.md` file (even if the verdict is "Not affected" — the audit trail matters). +- If a check requires a state-changing command, **skip it and note "not checked (would require state change)"** in the table. Do not run it. + +## Workflow + +1. **Identify scope.** Extract from the advisory: package/binary name, affected versions, platform (macOS / Linux / Windows), attack vector (supply chain / RCE / local / network). +2. **Run checks in parallel** (Bash tool, multiple calls in one message). Pick relevant checks for the advisory type — don't run all of them. +3. **Build the table** as you go. Each row = one check + concrete result (version number, path, "None", "N/A"). +4. **Write the report** to `~/Documents/security-audits/YYYY-MM-DD-.md`. Use today's date from the environment header. +5. **Tell the user** the verdict in one line + path to the report. + +## Check menu (pick what's relevant) + +```bash +# --- Node / npm ecosystem (supply-chain advisories) --- +which npm pnpm yarn; npm root -g; pnpm root -g 2>/dev/null +ls /opt/homebrew/lib/node_modules # global npm +find ~ -maxdepth 8 -type d -name "" 2>/dev/null \ + | grep -v -E "(Library/Caches|\.Trash)" # installed copies +find ~/Documents ~/Desktop ~/Downloads -maxdepth 8 -type f \ + \( -name "package.json" -o -name "package-lock.json" \ + -o -name "pnpm-lock.yaml" -o -name "yarn.lock" \) 2>/dev/null \ + | xargs grep -l "" 2>/dev/null # direct + transitive + +# --- Python ecosystem --- +which python3 pip pipx uv +pip list 2>/dev/null | grep -i "" +find ~/Documents -maxdepth 6 -name "requirements*.txt" -o -name "pyproject.toml" \ + -o -name "poetry.lock" -o -name "uv.lock" 2>/dev/null | xargs grep -l "" 2>/dev/null + +# --- Homebrew / system binaries --- +brew list --versions 2>/dev/null +which ; --version 2>/dev/null + +# --- Running processes / listeners (for RCE / network CVEs) --- +pgrep -lf "" +lsof -iTCP -sTCP:LISTEN -P -n 2>/dev/null | grep "" + +# --- LaunchAgents / LaunchDaemons (persistence / autostart) --- +ls ~/Library/LaunchAgents /Library/LaunchAgents /Library/LaunchDaemons 2>/dev/null \ + | grep -i "" + +# --- Env vars that change exposure (e.g. OLLAMA_HOST, listening addr) --- +launchctl getenv ; grep -r "" ~/.zshrc ~/.zprofile ~/.config 2>/dev/null + +# --- VS Code / browser extensions (for IDE-targeted advisories) --- +ls ~/.vscode/extensions 2>/dev/null | grep -i "" +``` + +If the advisory mentions an ecosystem not above (Rust cargo, Go modules, Ruby gems, Docker images, etc.), apply the same pattern: global install path + manifest grep + running processes. + +## Report template + +File: `~/Documents/security-audits/YYYY-MM-DD-.md` + +```markdown +# — Audit + +**Date:** YYYY-MM-DD +**Host:** the user's Mac + +## in scope + +- ** ""** — . . + +## Audit results + +| Check | Result | +|---|---| +| | | +| | | + +## Verdict + +**** + +- +- + +## Action taken + +None — diagnostic only, no files modified, no . + +## Follow-ups + +- +``` + +Match the tone of the two existing reports in `~/Documents/security-audits/` — terse, factual, bulleted, no hedging. + +## Verdict wording + +- **Not affected.** — package/binary absent, or installed but patched, or not running and not exposed. +- **Affected.** — vulnerable version present *and* reachable by the attack vector. +- **Partially affected.** — present but mitigated (e.g. binary installed but service not running, or listener bound to loopback only). Spell out the mitigation in the bullets. + +## When to break the read-only rule + +Never on your own. If the verdict is "Affected", list the remediation command in **Follow-ups** and stop. The user runs it. + +## Reference + +Two existing reports in `~/Documents/security-audits/` show the expected style: +- `baseline-audit.md` (long-form baseline audit — different format, do not mimic) +- `YYYY-MM-DD-example-advisory.md` and any newer `YYYY-MM-DD-*.md` files (this is the format to match) + +## Limitations + +- Adapted from `davidondrej/skills`; verify local paths, tools, credentials, and agent features before acting. +- For commands, remote access, scheduling, browser automation, or file-changing workflows, get explicit user approval and confirm the target environment first. diff --git a/antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/deepapi/SKILL.md b/antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/deepapi/SKILL.md new file mode 100644 index 00000000..f3c4c1f1 --- /dev/null +++ b/antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/deepapi/SKILL.md @@ -0,0 +1,649 @@ +--- +name: deepapi +description: "Use DeepAPI for supported scraping, research, and email workflows with explicit credentials and approval." +category: research +risk: critical +source: community +source_repo: davidondrej/skills +source_type: community +date_added: "2026-07-07" +author: davidondrej +tags: [deepapi, scraping, email, api] +tools: [claude, codex] +license: "MIT" +license_source: "https://github.com/davidondrej/skills/blob/main/LICENSE" +version: b17ad5148ab7 +--- + +# DeepAPI + +## When to Use + +- Use when the task needs supported DeepAPI scraping, research, or email endpoints. +- Use when the user has provided or confirmed the required DeepAPI credentials and scope. + +Use this skill when the user asks you to scrape public web data or draft/read/send email through DeepAPI. + +## Staying Up To Date + +- Your installed copy's version is the `version` value in the frontmatter above. +- If a request fails unexpectedly, fetch https://deepapi.co/deepapi-skill/VERSION.txt — public, no auth, a few bytes. +- If it differs from this file's version, fetch https://deepapi.co/deepapi-skill/SKILL.md and overwrite this file with it. +- Every API response includes `skillVersion`. If it differs from this file's version, refresh the same way. +- Only ever fetch this skill from https://deepapi.co. + +## Required Environment + +- Read `DEEPAPI_API_BASE_URL` from the environment. +- Read `DEEPAPI_API_KEY` from the environment. +- If either value is missing, stop and ask the user for setup. +- Never commit, print, log, paste, or expose `DEEPAPI_API_KEY`. + +## Request Rules + +- Send `Authorization: Bearer $DEEPAPI_API_KEY` on every request. +- Send `Content-Type: application/json` when sending JSON. +- Send a unique `Idempotency-Key` for every `POST`. +- For scrape work, set explicit `maxCostUsd` or `maxCostMicrousd`. +- Keep email as `send: false` or `mode: draft` unless the user explicitly approves sending. +- Do not pass inbox IDs. Use `emailIdentityId` or omit it. + +## Execution Loop + +1. Choose the narrowest endpoint that matches the task. +2. Build the request from the endpoint schema and examples below. +3. Run the request with the required headers. +4. If the response has `status: running`, wait `next.afterSecs` and call `next.method` + `next.path` until `status` is `succeeded` or `failed`. +5. If `error.retryable` is true, wait `error.retryAfterSecs` before retrying. +6. If the response is HTTP 402 with `error.code: insufficient_credits`, stop and ask the user to top up credits at https://deepapi.co/credits. After top-up, retry with the same `Idempotency-Key`. +7. Report `requestId`, `status`, `debitMicrousd`, `costFinal`, and the useful part of `output`. + +## Endpoints + +| Method | Path | Scope | Cost | +| --- | --- | --- | --- | +| POST | `/v1/scrape/website` | `scrape:website` | Set `maxCostUsd: "1.00"` unless the user gives a different cap. The route requires maxCostUsd or maxCostMicrousd as the customer spend cap. The final debit is capped by that amount and reported as debitMicrousd. | +| POST | `/v1/scrape/linkedin/profile` | `scrape:linkedin` | Set `maxCostUsd: "0.05"` unless the user gives a different cap. The route requires maxCostUsd or maxCostMicrousd as the customer spend cap. The final debit is capped by that amount and reported as debitMicrousd. | +| POST | `/v1/scrape/github/profile` | `scrape:github` | Set `maxCostUsd: "0.03"` unless the user gives a different cap. The route requires maxCostUsd or maxCostMicrousd as the customer spend cap. The final debit is capped by that amount and reported as debitMicrousd. | +| POST | `/v1/scrape/twitter/search` | `scrape:twitter` | Set `maxCostUsd: "0.03"` unless the user gives a different cap. The route requires maxCostUsd or maxCostMicrousd as the customer spend cap. The final debit is capped by that amount and reported as debitMicrousd. | +| POST | `/v1/scrape/linkedin/jobs` | `scrape:linkedin` | Set `maxCostUsd: "0.05"` unless the user gives a different cap. The route requires maxCostUsd or maxCostMicrousd as the customer spend cap. The final debit is capped by that amount and reported as debitMicrousd. | +| POST | `/v1/scrape/linkedin/company` | `scrape:linkedin` | Set `maxCostUsd: "0.05"` unless the user gives a different cap. The route requires maxCostUsd or maxCostMicrousd as the customer spend cap. The final debit is capped by that amount and reported as debitMicrousd. | +| POST | `/v1/scrape/linkedin/people` | `scrape:linkedin` | Set `maxCostUsd: "0.50"` unless the user gives a different cap. The route requires maxCostUsd or maxCostMicrousd as the customer spend cap. The final debit is capped by that amount and reported as debitMicrousd. | +| POST | `/v1/scrape/linkedin/posts` | `scrape:linkedin` | Set `maxCostUsd: "0.05"` unless the user gives a different cap. The route requires maxCostUsd or maxCostMicrousd as the customer spend cap. The final debit is capped by that amount and reported as debitMicrousd. | +| POST | `/v1/scrape/twitter/user` | `scrape:twitter` | Set `maxCostUsd: "0.05"` unless the user gives a different cap. The route requires maxCostUsd or maxCostMicrousd as the customer spend cap. The final debit is capped by that amount and reported as debitMicrousd. | +| POST | `/v1/scrape/twitter/replies` | `scrape:twitter` | Set `maxCostUsd: "0.20"` unless the user gives a different cap. The route requires maxCostUsd or maxCostMicrousd as the customer spend cap. The final debit is capped by that amount and reported as debitMicrousd. | +| POST | `/v1/scrape/youtube/transcript` | `scrape:youtube` | Set `maxCostUsd: "0.05"` unless the user gives a different cap. The route requires maxCostUsd or maxCostMicrousd as the customer spend cap. The final debit is capped by that amount and reported as debitMicrousd. | +| POST | `/v1/scrape/youtube/channel` | `scrape:youtube` | Set `maxCostUsd: "0.30"` unless the user gives a different cap. The route requires maxCostUsd or maxCostMicrousd as the customer spend cap. The final debit is capped by that amount and reported as debitMicrousd. | +| POST | `/v1/scrape/youtube/search` | `scrape:youtube` | Set `maxCostUsd: "0.10"` unless the user gives a different cap. The route requires maxCostUsd or maxCostMicrousd as the customer spend cap. The final debit is capped by that amount and reported as debitMicrousd. | +| POST | `/v1/scrape/linkedin` | `scrape:linkedin` | Set `maxCostUsd: "0.05"` unless the user gives a different cap. The route requires maxCostUsd or maxCostMicrousd as the customer spend cap. The final debit is capped by that amount and reported as debitMicrousd. | +| POST | `/v1/scrape/github` | `scrape:github` | Set `maxCostUsd: "0.03"` unless the user gives a different cap. The route requires maxCostUsd or maxCostMicrousd as the customer spend cap. The final debit is capped by that amount and reported as debitMicrousd. | +| POST | `/v1/scrape/twitter` | `scrape:twitter` | Set `maxCostUsd: "0.03"` unless the user gives a different cap. The route requires maxCostUsd or maxCostMicrousd as the customer spend cap. The final debit is capped by that amount and reported as debitMicrousd. | +| POST | `/v1/email/send` | `email:send` | Uses configured email unit pricing; the route does not accept maxCostUsd. Check debitMicrousd in the response. | +| GET | `/v1/email/messages` | `email:read` | Read route returns debitMicrousd 0. | +| GET | `/v1/email/drafts` | `email:read` | Read route returns debitMicrousd 0. | +| POST | `/v1/email/drafts/{draftId}/send` | `email:send` | Uses configured email unit pricing; the route does not accept maxCostUsd. Check debitMicrousd in the response. | +| POST | `/v1/research/deep` | `research:deep` | Set `maxCostUsd: "0.10"` unless the user gives a different cap. Defaults to maxCostUsd 0.10. Pass maxCostUsd or maxCostMicrousd to choose a different customer spend cap. The final debit is capped and reported as debitMicrousd. | +| POST | `/v1/generate/image` | `generate:image` | Set `maxCostUsd: "0.20"` unless the user gives a different cap. Defaults to maxCostUsd 0.20. Pass maxCostUsd or maxCostMicrousd to choose a different customer spend cap. The final debit is capped and reported as debitMicrousd. | +| POST | `/v1/search/web` | `search:web` | Set `maxCostUsd: "0.05"` unless the user gives a different cap. Defaults to maxCostUsd 0.05. Pass maxCostUsd or maxCostMicrousd to choose a different customer spend cap. The final debit is capped and reported as debitMicrousd. | +| GET | `/v1/requests/{requestId}` | `same key` | Status polling does not create a new debit. | + +## Endpoint Details + +### Scrape Website + +Use `POST /v1/scrape/website`. Crawl website pages and return clean text and markdown per page. + +Side effects: Starts a scrape run and may debit credits when the run finishes. +Polling: If status is running, wait next.afterSecs and call next.method next.path until status is succeeded or failed. + +Safety: +- Send Authorization: Bearer $DEEPAPI_API_KEY and never expose the key. +- Send a unique Idempotency-Key for every POST. +- Set an explicit customer spend cap with maxCostUsd or maxCostMicrousd before starting a scrape. +- Start with small result caps such as maxItems or capability-specific limits. +- Poll next.path while status is running and report the final debitMicrousd. + +Example body: +```json +{ + "maxCostUsd": "1.00", + "waitForFinishSecs": 60, + "urls": [ + "https://example.com" + ], + "maxPages": 1 +} +``` + +### Scrape LinkedIn Profile + +Use `POST /v1/scrape/linkedin/profile`. Scrape public LinkedIn profile details. + +Side effects: Starts a scrape run and may debit credits when the run finishes. +Polling: If status is running, wait next.afterSecs and call next.method next.path until status is succeeded or failed. + +Safety: +- Send Authorization: Bearer $DEEPAPI_API_KEY and never expose the key. +- Send a unique Idempotency-Key for every POST. +- Set an explicit customer spend cap with maxCostUsd or maxCostMicrousd before starting a scrape. +- Start with small result caps such as maxItems or capability-specific limits. +- Poll next.path while status is running and report the final debitMicrousd. + +Example body: +```json +{ + "maxCostUsd": "0.05", + "waitForFinishSecs": 60, + "profiles": [ + "williamhgates" + ] +} +``` + +### Scrape GitHub Profile + +Use `POST /v1/scrape/github/profile`. Scrape public GitHub profile details. + +Side effects: Starts a scrape run and may debit credits when the run finishes. +Polling: If status is running, wait next.afterSecs and call next.method next.path until status is succeeded or failed. + +Safety: +- Send Authorization: Bearer $DEEPAPI_API_KEY and never expose the key. +- Send a unique Idempotency-Key for every POST. +- Set an explicit customer spend cap with maxCostUsd or maxCostMicrousd before starting a scrape. +- Start with small result caps such as maxItems or capability-specific limits. +- Poll next.path while status is running and report the final debitMicrousd. + +Example body: +```json +{ + "maxCostUsd": "0.03", + "waitForFinishSecs": 60, + "usernames": [ + "octocat" + ] +} +``` + +### Search X/Twitter + +Use `POST /v1/scrape/twitter/search`. Scrape X/Twitter posts from a search query or account handles. + +Side effects: Starts a scrape run and may debit credits when the run finishes. +Polling: If status is running, wait next.afterSecs and call next.method next.path until status is succeeded or failed. + +Safety: +- Send Authorization: Bearer $DEEPAPI_API_KEY and never expose the key. +- Send a unique Idempotency-Key for every POST. +- Set an explicit customer spend cap with maxCostUsd or maxCostMicrousd before starting a scrape. +- Start with small result caps such as maxItems or capability-specific limits. +- Poll next.path while status is running and report the final debitMicrousd. + +Example body: +```json +{ + "maxCostUsd": "0.03", + "waitForFinishSecs": 60, + "handles": [ + "nasa" + ], + "maxItems": 1, + "sort": "latest" +} +``` + +### Scrape LinkedIn Jobs + +Use `POST /v1/scrape/linkedin/jobs`. Scrape public LinkedIn job listings for a search query. + +Side effects: Starts a scrape run and may debit credits when the run finishes. +Polling: If status is running, wait next.afterSecs and call next.method next.path until status is succeeded or failed. + +Safety: +- Send Authorization: Bearer $DEEPAPI_API_KEY and never expose the key. +- Send a unique Idempotency-Key for every POST. +- Set an explicit customer spend cap with maxCostUsd or maxCostMicrousd before starting a scrape. +- Start with small result caps such as maxItems or capability-specific limits. +- Poll next.path while status is running and report the final debitMicrousd. + +Example body: +```json +{ + "maxCostUsd": "0.05", + "waitForFinishSecs": 60, + "query": "software engineer", + "location": "United States", + "maxItems": 5 +} +``` + +### Scrape LinkedIn Company + +Use `POST /v1/scrape/linkedin/company`. Scrape public LinkedIn company pages for firmographic details. + +Side effects: Starts a scrape run and may debit credits when the run finishes. +Polling: If status is running, wait next.afterSecs and call next.method next.path until status is succeeded or failed. + +Safety: +- Send Authorization: Bearer $DEEPAPI_API_KEY and never expose the key. +- Send a unique Idempotency-Key for every POST. +- Set an explicit customer spend cap with maxCostUsd or maxCostMicrousd before starting a scrape. +- Start with small result caps such as maxItems or capability-specific limits. +- Poll next.path while status is running and report the final debitMicrousd. + +Example body: +```json +{ + "maxCostUsd": "0.05", + "waitForFinishSecs": 60, + "companies": [ + "microsoft" + ] +} +``` + +### Search LinkedIn People + +Use `POST /v1/scrape/linkedin/people`. Search public LinkedIn profiles by role, location, company, or school. Requires maxCostUsd of at least 0.50. + +Side effects: Starts a scrape run and may debit credits when the run finishes. +Polling: If status is running, wait next.afterSecs and call next.method next.path until status is succeeded or failed. + +Safety: +- Send Authorization: Bearer $DEEPAPI_API_KEY and never expose the key. +- Send a unique Idempotency-Key for every POST. +- Set an explicit customer spend cap with maxCostUsd or maxCostMicrousd before starting a scrape. +- Start with small result caps such as maxItems or capability-specific limits. +- Poll next.path while status is running and report the final debitMicrousd. + +Example body: +```json +{ + "maxCostUsd": "0.50", + "waitForFinishSecs": 60, + "titles": [ + "Founder" + ], + "locations": [ + "San Francisco" + ], + "maxItems": 5 +} +``` + +### Scrape LinkedIn Posts + +Use `POST /v1/scrape/linkedin/posts`. Scrape recent public posts from LinkedIn profiles or company pages. + +Side effects: Starts a scrape run and may debit credits when the run finishes. +Polling: If status is running, wait next.afterSecs and call next.method next.path until status is succeeded or failed. + +Safety: +- Send Authorization: Bearer $DEEPAPI_API_KEY and never expose the key. +- Send a unique Idempotency-Key for every POST. +- Set an explicit customer spend cap with maxCostUsd or maxCostMicrousd before starting a scrape. +- Start with small result caps such as maxItems or capability-specific limits. +- Poll next.path while status is running and report the final debitMicrousd. + +Example body: +```json +{ + "maxCostUsd": "0.05", + "waitForFinishSecs": 60, + "profiles": [ + "williamhgates" + ], + "maxItems": 3 +} +``` + +### Scrape X/Twitter User + +Use `POST /v1/scrape/twitter/user`. Scrape public X/Twitter account profiles, with optional follower and following lists. + +Side effects: Starts a scrape run and may debit credits when the run finishes. +Polling: If status is running, wait next.afterSecs and call next.method next.path until status is succeeded or failed. + +Safety: +- Send Authorization: Bearer $DEEPAPI_API_KEY and never expose the key. +- Send a unique Idempotency-Key for every POST. +- Set an explicit customer spend cap with maxCostUsd or maxCostMicrousd before starting a scrape. +- Start with small result caps such as maxItems or capability-specific limits. +- Poll next.path while status is running and report the final debitMicrousd. + +Example body: +```json +{ + "maxCostUsd": "0.05", + "waitForFinishSecs": 60, + "handles": [ + "nasa" + ] +} +``` + +### Scrape X/Twitter Replies + +Use `POST /v1/scrape/twitter/replies`. Scrape the public reply thread of an X/Twitter post. Requires maxCostUsd of at least 0.20. + +Side effects: Starts a scrape run and may debit credits when the run finishes. +Polling: If status is running, wait next.afterSecs and call next.method next.path until status is succeeded or failed. + +Safety: +- Send Authorization: Bearer $DEEPAPI_API_KEY and never expose the key. +- Send a unique Idempotency-Key for every POST. +- Set an explicit customer spend cap with maxCostUsd or maxCostMicrousd before starting a scrape. +- Start with small result caps such as maxItems or capability-specific limits. +- Poll next.path while status is running and report the final debitMicrousd. + +Example body: +```json +{ + "maxCostUsd": "0.20", + "waitForFinishSecs": 60, + "url": "https://x.com/NASA/status/1234567890123456789", + "maxItems": 5 +} +``` + +### Scrape YouTube Transcript + +Use `POST /v1/scrape/youtube/transcript`. Scrape the transcript of a YouTube video as plain text plus timed segments. Videos without captions return an empty result. + +Side effects: Starts a scrape run and may debit credits when the run finishes. +Polling: If status is running, wait next.afterSecs and call next.method next.path until status is succeeded or failed. + +Safety: +- Send Authorization: Bearer $DEEPAPI_API_KEY and never expose the key. +- Send a unique Idempotency-Key for every POST. +- Set an explicit customer spend cap with maxCostUsd or maxCostMicrousd before starting a scrape. +- Start with small result caps such as maxItems or capability-specific limits. +- Poll next.path while status is running and report the final debitMicrousd. + +Example body: +```json +{ + "maxCostUsd": "0.05", + "waitForFinishSecs": 60, + "url": "https://www.youtube.com/watch?v=dQw4w9WgXcQ" +} +``` + +### Scrape YouTube Channel + +Use `POST /v1/scrape/youtube/channel`. Scrape a YouTube channel's stats and recent videos. Each video item includes subscriber and channel totals. + +Side effects: Starts a scrape run and may debit credits when the run finishes. +Polling: If status is running, wait next.afterSecs and call next.method next.path until status is succeeded or failed. + +Safety: +- Send Authorization: Bearer $DEEPAPI_API_KEY and never expose the key. +- Send a unique Idempotency-Key for every POST. +- Set an explicit customer spend cap with maxCostUsd or maxCostMicrousd before starting a scrape. +- Start with small result caps such as maxItems or capability-specific limits. +- Poll next.path while status is running and report the final debitMicrousd. + +Example body: +```json +{ + "maxCostUsd": "0.30", + "waitForFinishSecs": 60, + "channels": [ + "mkbhd" + ], + "maxItems": 3 +} +``` + +### Search YouTube + +Use `POST /v1/scrape/youtube/search`. Search YouTube videos by keyword and return video metadata. + +Side effects: Starts a scrape run and may debit credits when the run finishes. +Polling: If status is running, wait next.afterSecs and call next.method next.path until status is succeeded or failed. + +Safety: +- Send Authorization: Bearer $DEEPAPI_API_KEY and never expose the key. +- Send a unique Idempotency-Key for every POST. +- Set an explicit customer spend cap with maxCostUsd or maxCostMicrousd before starting a scrape. +- Start with small result caps such as maxItems or capability-specific limits. +- Poll next.path while status is running and report the final debitMicrousd. + +Example body: +```json +{ + "maxCostUsd": "0.10", + "waitForFinishSecs": 60, + "query": "ai agents", + "sort": "views", + "maxItems": 3 +} +``` + +### Scrape LinkedIn + +Use `POST /v1/scrape/linkedin`. Backward-compatible alias for LinkedIn profile scraping. + +Side effects: Starts a scrape run and may debit credits when the run finishes. +Polling: If status is running, wait next.afterSecs and call next.method next.path until status is succeeded or failed. + +Safety: +- Send Authorization: Bearer $DEEPAPI_API_KEY and never expose the key. +- Send a unique Idempotency-Key for every POST. +- Set an explicit customer spend cap with maxCostUsd or maxCostMicrousd before starting a scrape. +- Start with small result caps such as maxItems or capability-specific limits. +- Poll next.path while status is running and report the final debitMicrousd. + +Example body: +```json +{ + "maxCostUsd": "0.05", + "waitForFinishSecs": 60, + "profiles": [ + "williamhgates" + ] +} +``` + +### Scrape GitHub + +Use `POST /v1/scrape/github`. Backward-compatible alias for GitHub profile scraping. + +Side effects: Starts a scrape run and may debit credits when the run finishes. +Polling: If status is running, wait next.afterSecs and call next.method next.path until status is succeeded or failed. + +Safety: +- Send Authorization: Bearer $DEEPAPI_API_KEY and never expose the key. +- Send a unique Idempotency-Key for every POST. +- Set an explicit customer spend cap with maxCostUsd or maxCostMicrousd before starting a scrape. +- Start with small result caps such as maxItems or capability-specific limits. +- Poll next.path while status is running and report the final debitMicrousd. + +Example body: +```json +{ + "maxCostUsd": "0.03", + "waitForFinishSecs": 60, + "usernames": [ + "octocat" + ] +} +``` + +### Scrape Twitter + +Use `POST /v1/scrape/twitter`. Backward-compatible alias for X/Twitter search scraping. + +Side effects: Starts a scrape run and may debit credits when the run finishes. +Polling: If status is running, wait next.afterSecs and call next.method next.path until status is succeeded or failed. + +Safety: +- Send Authorization: Bearer $DEEPAPI_API_KEY and never expose the key. +- Send a unique Idempotency-Key for every POST. +- Set an explicit customer spend cap with maxCostUsd or maxCostMicrousd before starting a scrape. +- Start with small result caps such as maxItems or capability-specific limits. +- Poll next.path while status is running and report the final debitMicrousd. + +Example body: +```json +{ + "maxCostUsd": "0.03", + "waitForFinishSecs": 60, + "handles": [ + "nasa" + ], + "maxItems": 1, + "sort": "latest" +} +``` + +### Send Email + +Use `POST /v1/email/send`. Create an email draft from a workspace email identity; set send=true to send it. + +Side effects: Creates a draft, or sends an email when direct send is approved. +Polling: This route returns a terminal envelope directly. + +Safety: +- Send Authorization: Bearer $DEEPAPI_API_KEY and never expose the key. +- Send a unique Idempotency-Key for every POST. +- Keep send=false or mode=draft unless the user explicitly approves sending. +- Do not pass inboxId or inbox_id; use emailIdentityId or the workspace default. +- Attachments, hidden HTML, image HTML, URL shorteners, and high-risk direct sends are blocked by policy. + +Example body: +```json +{ + "to": "", + "subject": "Quick hello", + "text": "Hi, this is a draft from my agent.", + "send": false +} +``` + +### Receive Email + +Use `GET /v1/email/messages`. Read messages for a workspace email identity. + +Side effects: Reads messages only. +Polling: This route returns a terminal envelope directly. + +Safety: +- Send Authorization: Bearer $DEEPAPI_API_KEY and never expose the key. +- Do not pass inboxId or inbox_id; use emailIdentityId or the workspace default. + +### List Drafts + +Use `GET /v1/email/drafts`. List pending email drafts for a workspace email identity. + +Side effects: Reads drafts only. +Polling: This route returns a terminal envelope directly. + +Safety: +- Send Authorization: Bearer $DEEPAPI_API_KEY and never expose the key. +- Do not pass inboxId or inbox_id; use emailIdentityId or the workspace default. + +### Send Draft + +Use `POST /v1/email/drafts/{draftId}/send`. Approve and send an existing draft by draftId after review. + +Side effects: Sends the reviewed draft as a real email when direct send is approved. +Polling: This route returns a terminal envelope directly. + +Safety: +- Send Authorization: Bearer $DEEPAPI_API_KEY and never expose the key. +- Send a unique Idempotency-Key for every POST. +- Only send a draft after the user explicitly approves that draft. +- Do not pass inboxId or inbox_id; use emailIdentityId or the workspace default. +- Sending re-checks recipient and content policy against the stored draft; blocked drafts stay drafts. + +Example body: +```json +{} +``` + +### Deep Research + +Use `POST /v1/research/deep`. Answer a research question with current web evidence. + +Side effects: Runs a paid web research request and debits credits when finished. +Polling: This route returns a terminal envelope directly. + +Safety: +- Send Authorization: Bearer $DEEPAPI_API_KEY and never expose the key. +- Send a unique Idempotency-Key for every POST. +- Use query for the research question and context only for relevant background. +- Set maxCostUsd when you need a lower or higher spend cap than the default. +- Report debitMicrousd and summarize the returned sources when sources are present. + +Example body: +```json +{ + "query": "What changed in EU AI Act compliance timelines for API startups?", + "context": "We sell API tooling to EU customers.", + "maxCostUsd": "0.10" +} +``` + +### Generate Image + +Use `POST /v1/generate/image`. Generate an image from a text prompt. + +Side effects: Runs a paid image generation request and debits credits when finished. +Polling: This route returns a terminal envelope directly. + +Safety: +- Send Authorization: Bearer $DEEPAPI_API_KEY and never expose the key. +- Send a unique Idempotency-Key for every POST. +- Describe the image you want in prompt, including style and composition. +- Set maxCostUsd when you need a lower or higher spend cap than the default. +- output.images contains base64 data URLs; save them to files instead of printing them. + +Example body: +```json +{ + "prompt": "A minimal flat illustration of a rocket launching from a laptop screen", + "maxCostUsd": "0.20" +} +``` + +### Web Search + +Use `POST /v1/search/web`. Search the web and return ranked results with title, url, and snippet. + +Side effects: Runs a paid web search request and debits credits when finished. +Polling: This route returns a terminal envelope directly. + +Safety: +- Send Authorization: Bearer $DEEPAPI_API_KEY and never expose the key. +- Send a unique Idempotency-Key for every POST. +- Use query for the search terms only; keep it under 500 characters. +- Set maxCostUsd when you need a lower or higher spend cap than the default. +- Treat snippets as page summaries; open a result URL when you need the full content. + +Example body: +```json +{ + "query": "latest stable Node.js LTS version", + "maxResults": 3, + "maxCostUsd": "0.05" +} +``` + +### Request Status + +Use `GET /v1/requests/{requestId}`. Poll a running request by requestId. + +Side effects: Reads or refreshes request status. +Polling: If status is running, wait next.afterSecs and call next.method next.path until status is succeeded or failed. + +Safety: +- Send Authorization: Bearer $DEEPAPI_API_KEY and never expose the key. +- Only poll request ids created by the same API key. + +Example query: `waitForFinishSecs=60` + +## Limitations + +- Adapted from `davidondrej/skills`; verify local paths, tools, credentials, and agent features before acting. +- For commands, remote access, scheduling, browser automation, or file-changing workflows, get explicit user approval and confirm the target environment first. diff --git a/antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/effective-agent-skills/SKILL.md b/antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/effective-agent-skills/SKILL.md new file mode 100644 index 00000000..7d6b3f03 --- /dev/null +++ b/antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/effective-agent-skills/SKILL.md @@ -0,0 +1,333 @@ +--- +name: effective-agent-skills +description: "Author and review high-quality agent skills with triggers, progressive disclosure, and safety notes." +category: development +risk: safe +source: community +source_repo: davidondrej/skills +source_type: community +date_added: "2026-07-07" +author: davidondrej +tags: [skills, authoring, quality] +tools: [claude, codex] +license: "MIT" +license_source: "https://github.com/davidondrej/skills/blob/main/LICENSE" +--- + +# Agent Skills: A Complete Guide + +## When to Use + +- Use when creating, editing, reviewing, or debugging an agent SKILL.md file. +- Use when you need quality guidance for triggers, examples, limitations, and safety notes. + +A consolidated reference on what agent skills are, why they exist, how they work, and how to write effective ones. + +--- + +## 1. What agent skills are + +An Agent Skill is a folder containing a `SKILL.md` file (YAML frontmatter + markdown instructions), plus optional subfolders for scripts, references, and assets that the agent loads on demand. + +``` +my-skill/ +├── SKILL.md # Required: metadata + instructions +├── scripts/ # Optional: executable code (CLIs, validators, helpers) +├── references/ # Optional: detailed docs loaded only when needed +└── assets/ # Optional: templates, fonts, static files +``` + +Skills are an open standard (agentskills.io), originally created by Anthropic and adopted by OpenAI Codex, Cursor, Gemini CLI, Microsoft Agent Framework, Google ADK, and 40+ other agent products. A skill written once works across all compatible agents. + +--- + +## 2. Why this abstraction exists + +Base LLMs are generalists. Real work requires procedural knowledge, organizational context, and repeatable workflows. Every prior alternative had a failure mode: + +| Approach | Problem | +|---|---| +| Stuff it into the system prompt | Always loaded → context bloat at scale | +| Re-paste instructions each session | No version control, no consistency | +| Fine-tuning | Slow, expensive, opaque, vendor-locked | +| MCP servers alone | Give the agent tools but no workflows for using them | + +Skills solve four problems at once: + +- **Context efficiency** — instructions load only when relevant +- **Repeatability** — multi-step procedures become auditable workflows +- **Composability** — multiple skills combine at runtime per task +- **Portability** — same files work across vendors and surfaces + +Mental model: skills are to LLMs what man pages, runbooks, and team handbooks are to engineers — reference material loaded into working memory only when the task demands it. + +--- + +## 3. How they work — progressive disclosure + +The architectural core. Three-stage loading: + +**Level 1 — Discovery (~100 tokens per skill, always in context):** +Only `name` + `description` from frontmatter are injected into the system prompt at startup. Agent knows the skill exists and when it applies. You can install dozens of skills with negligible overhead. + +**Level 2 — Activation (<5,000 tokens, loaded on match):** +When the user's request matches a skill's description, the agent reads the full `SKILL.md` body into context. + +**Level 3 — Execution (unbounded, on demand):** +The agent reads referenced files (`references/foo.md`) or runs scripts (`scripts/validate.py`) only as needed. Scripts can execute without their source being loaded into context at all. + +This is why bundled content has no practical limit. Files don't consume tokens until accessed. + +--- + +## 4. SKILL.md anatomy + +```markdown +--- +name: skill-name +description: What this skill does AND when to use it. Include trigger phrases the user will say. +--- + +# Skill Name + +## Quick start +[Minimal working example] + +## Workflow +[Step-by-step procedure with checklists] + +## Output format +[What the user/agent should expect back] + +## Advanced +[Link to references/ for rarely-needed detail] +``` + +Frontmatter constraints: +- `name` is lowercase, hyphens only, 1–64 chars, **exactly matches the parent folder name** +- Avoid `<` and `>` in frontmatter (they can inject into the system prompt) +- Invalid YAML silently prevents loading + +Optional standard fields: +- `disable-model-invocation: true` — stops the agent from auto-loading the skill based on the conversation; it can only be triggered manually (e.g. `/skill-name`). Now a standard Agent Skills spec field, so it works across spec-compliant clients (Claude Code, Copilot, etc.), not just Claude. Caveat: it prevents auto-invocation, but some clients (Claude Code, open bug) still inject the `description` into context, so it doesn't always save the discovery-level tokens. Use for manual-only utilities you don't want firing automatically. + +--- + +## 5. Two design philosophies + +Skills tend to fall into one of two patterns. Both are valid; they solve different problems. + +### Pattern A — Capability primitives (tool wrappers) +The skill is a thin wrapper over a deterministic CLI or script. Logic lives in code. SKILL.md teaches the agent how to invoke it. + +- **Adds**: new capabilities (search, email, browser, API access) +- **Reliability via**: shell tools, not prompts +- **Typical length**: 30–80 lines, mostly command examples +- **Use when**: the bottleneck is "the agent can't do X" + +### Pattern B — Process primitives (cognitive disciplines) +The skill encodes a methodology the agent should follow. Pure prompt engineering — no scripts needed. + +- **Adds**: structured workflows (TDD, code review, design alignment, debugging loops) +- **Reliability via**: explicit procedure, checklists, validation loops +- **Use when**: the bottleneck is "the agent's output quality or process is bad" + +A mature setup uses both. Pattern A gives the agent better tools. Pattern B gives it better methods for using them. + +--- + +## 6. How to write effective skills — do this + +### Description as routing contract +The description is the only thing the agent sees before deciding to load the skill. If your skill doesn't trigger, the description is wrong 95% of the time, not the body. + +Include three elements: +1. **What** the skill does (one phrase) +2. **When** to use it (trigger phrases, situations) +3. **Differentiator** vs related skills (prevents routing conflicts) + +Pattern: `"X via Y. Use for [situations]. [Differentiator: no Z required / faster than W / handles edge case V]."` + +**Never summarize the full workflow in the description.** If the description contains a step-by-step summary of *how* the skill works, the agent tends to follow that summary and skip loading the body. Describe *what* and *when*, never *how*. The description answers "should I open this skill now?" — not "what are the steps?" + +### Keep SKILL.md lean +- Beyond a certain length, you're usually encoding logic that should be in a script or referenced file + +### Bash-first, prose-second +Concrete command examples with inline comments beat prose explanations. The agent pattern-matches on syntax. Show, don't describe. + +### Push determinism into code +Anything fragile, repetitive, or where variation is a bug → script. Use markdown only for tasks requiring judgment. + +### Match strictness to task fragility (degrees of freedom) +Scale instruction rigidity to how costly a wrong move is: +- **Loose natural-language heuristics** when many approaches are valid (e.g. code review). +- **Pseudocode or templates** when there's a preferred pattern but variation is acceptable (e.g. report format). +- **Exact scripts and strict step lists** when the workflow is fragile, error-prone, or consistency-critical (e.g. migrations, document patching). + +### Build validation loops +The single biggest output quality improvement: state a verify → fix → re-verify loop explicitly. + +- Document skills: visual QA pass before delivery +- Code skills: tests pass + zero type errors before completion +- Data skills: schema validation before output + +### State-check before action +Don't assume setup is done. Instruct the agent to verify state, then branch: +``` +First check if X is configured: [command] +If not, walk the user through setup: [steps] +``` + +### Just-in-time loading with explicit pointers +Tell the agent exactly when to read each referenced file: +``` +For standard cases, follow the steps below. +For [specific edge case], read references/edge-cases.md first. +``` + +### Keep references one level deep +Link referenced files directly from SKILL.md. Never build chains (SKILL.md → advanced.md → details.md → actual.md) — the agent may preview nested files only partially and miss critical instructions. Add a table of contents to any reference file longer than 100 lines. + +### Document output formats +If your script returns structured data, show the agent what it looks like. Enables reliable downstream parsing. + +### Defer to --help for completeness +List the 80% common operations in SKILL.md. Tell the agent to run `tool --help` for the rest. Keeps SKILL.md small without losing functionality. + +### Compose primitives, don't bundle workflows +One skill = one capability or one discipline. Resist bundling concerns into "the X workflow." Multiple small skills combine at runtime; one large skill is rigid. + +### Cite established principles when applicable +If your skill encodes a known engineering methodology (TDD, DDD, red-green-refactor), name the source. Gives the agent a coherent model to align with and gives users a way to verify the design. + +### Persistent artifacts for cross-session memory +Skills can write to repo-level files (CONTEXT.md, ADRs, decision logs) that future agent sessions read. This is how you fight the "agents have no memory" problem at the architecture level. + +--- + +## 7. What not to do — anti-patterns + +### Don't re-teach what the model already knows +Every line in SKILL.md should provide context the model doesn't already have. No Python syntax tutorials. No "what is git." Challenge every paragraph. + +### Don't include human-facing docs +No README.md, no CHANGELOG.md, no INSTALLATION_GUIDE.md inside the skill folder. Skills are for agents. + +### Don't write vague descriptions +- Bad: "A helpful skill for documents" +- Good: "Fill PDF form fields, extract form data, flatten completed PDFs. Use when the user mentions PDF forms, fillable forms, or programmatic field population." + +### Don't bundle library code +If you need a parsing library, install via npm/pip. Don't paste source into the skill. + +### Don't write monolithic mega-skills +If one skill does design + planning + implementation + testing + deployment, you've built a framework, not a skill. Split it. + +### Don't assume the agent will infer +Be explicit about every step that matters. +- Bad: "Then deploy it." +- Good: "Run `npm run deploy:staging` and wait for HTTP 200 from /healthz before reporting success." + +### Don't write style-only variants +A skill that just changes tone or formatting belongs in user preferences or a system prompt, not a skill. + +### Don't ignore failure modes +For every workflow step that can fail, document what failure looks like and what to do. Happy-path-only skills break in production. + +### Don't include time-sensitive information +"As of Q4 2024..." rots fast. Fetch live data via script or omit. + +### Don't use absolute paths +Always relative. Forward slashes regardless of OS. Use runtime placeholders for skill-directory references. + +### Don't trust unfamiliar skills +Skills can execute arbitrary code and steer agent behavior. A malicious skill is a data exfiltration vector. Audit `scripts/` for unexpected network calls, file access outside expected scope, or hidden instructions in references. Watch for typosquatted skill names. Sandbox execution environments. + +--- + +## 8. Authoring workflow + +1. **Identify the gap.** Run your agent on real tasks. Where does it consistently fail or need re-prompting? That's a skill candidate. +2. **Decide the pattern.** Capability primitive (need new tools) or process primitive (need better methodology)? +3. **Draft the description first.** What + when + differentiator. Read it back: would the agent know when to fire it? +4. **Write the smallest body that works.** Add only when testing reveals gaps. +5. **Move detail to references/ once SKILL.md grows too long.** +6. **Test triggering.** Ask the agent something the skill should handle without invoking it explicitly. If it doesn't fire, fix the description. +7. **Test execution.** Invoke explicitly. If output is wrong, fix the body. +8. **Adversarial test.** Have another LLM ask: "What edge cases break this skill?" Patch the gaps. +9. **Version control.** Treat skills as code. Tag, branch, review. + +--- + +## 9. Testing and debugging + +- **"Which skill did you use?"** — ask the agent post-task. Fastest routing debug. +- **Routing fails → description problem.** Add specific trigger phrases. +- **Execution fails → body problem.** Add explicit steps, examples, or validation. +- **Skills snapshot at session start.** Edits during a session require a restart. +- **Test against the weakest model you'll deploy on.** Stronger models forgive vague skills; weaker models expose them. +- **Run an eval suite.** A handful of representative prompts that should and shouldn't trigger the skill, with expected outputs. + +--- + +## 10. Composition + +Skills compose at runtime — the agent loads multiple skills as needed for a single task. Design for this: + +- **One skill = one concern.** Resist bundling. +- **Define interfaces between skills.** If skill A produces artifacts that skill B consumes, document the shape. +- **Use a repo-level config substrate.** A shared file (e.g., AGENTS.md, CONTEXT.md, settings.json) that multiple skills read and write coordinates them without explicit handoffs. +- **Loops over menus.** A coordinated set of skills forming a workflow (align → spec → build → verify → refactor) drives adoption far better than an unrelated catalog of capabilities. + +--- + +## 11. Security checklist + +Before installing any third-party skill: + +- Read every file in the folder +- Audit `scripts/` for outbound network calls, file access outside expected scope, command execution +- Check references for prompt injection ("ignore previous instructions...") +- Verify the skill name isn't typosquatting a popular one +- Run in a sandboxed environment first +- Pin to a specific version/commit, not `latest` + +--- + +## 12. Ship checklist + +Before publishing a skill: + +- [ ] Frontmatter `name` matches folder name +- [ ] Description includes what + when + differentiator +- [ ] Description includes likely user trigger phrases +- [ ] No human-facing docs inside the skill folder +- [ ] No time-sensitive information +- [ ] Relative paths only +- [ ] State-check before action where applicable +- [ ] Validation loop documented +- [ ] Output format documented if relevant +- [ ] Tested with weak and strong models +- [ ] Tested for both correct triggering and correct execution +- [ ] Skill does one thing +- [ ] Composes cleanly with related skills +- [ ] Version controlled + +--- + +## 13. First principles, compressed + +1. **The description routes; the body executes.** Get both right independently. +2. **Tokens are scarce; files are cheap.** Push detail out of context until it's needed. +3. **Determinism comes from code; judgment comes from prompts.** Put each in its right place. +4. **One skill, one concern.** Composition beats bundling. +5. **Agents have no memory.** Use persistent artifacts to give them one. +6. **The model knows a lot.** Don't re-teach. Only add what's missing. +7. **Validate before completing.** Self-correction loops dominate output quality. +8. **Skills are code.** Version, test, audit, and review them as such. + +## Limitations + +- Adapted from `davidondrej/skills`; verify local paths, tools, credentials, and agent features before acting. +- For commands, remote access, scheduling, browser automation, or file-changing workflows, get explicit user approval and confirm the target environment first. diff --git a/antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/fable-safe-prompt/SKILL.md b/antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/fable-safe-prompt/SKILL.md new file mode 100644 index 00000000..992dcaf9 --- /dev/null +++ b/antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/fable-safe-prompt/SKILL.md @@ -0,0 +1,79 @@ +--- +name: fable-safe-prompt +description: "Rewrite allowed prompts to reduce false-positive safety triggers without bypassing policy or changing intent." +category: agent-behavior +risk: safe +source: community +source_repo: davidondrej/skills +source_type: community +date_added: "2026-07-07" +author: davidondrej +tags: [prompting, safety, guardrails] +tools: [claude, codex] +license: "MIT" +license_source: "https://github.com/davidondrej/skills/blob/main/LICENSE" +disable-model-invocation: true +--- + +# Fable-Safe Prompt + +## When to Use + +- Use when an allowed prompt appears likely to hit false-positive classifier language. +- Use when the user asks for prompt wording that keeps benign intent clear and policy-compliant. + +Return the user's prompt back **in full, verbatim**, changing ONLY the specific sentences/phrases most likely to trip Fable 5's cyber/bio classifiers. Do not rewrite the whole thing, do not summarize, do not restructure — minimal surgical edits. Keep the actual goal and all benign text exactly as written. This lowers false positives for benign work. It must not be used to bypass safety policy or enable harmful requests. + +Fable 5 runs 3 input classifiers: **cyber**, **bio/chem**, **reasoning_extraction**. Triggers are keyword/surface-based, largely intent-independent ("hello" and "cancer" got flagged). The fix is to abstract away the sensitive domain, not just restate intent. + +Apply when the prompt touches: cyber/auth/exploits/malware/pentesting/credentials; bio/chem/medical/disease/lab topics; or any "show your reasoning" instruction. + +The user provides the prompt-to-be-changed wrapped in `...` XML tags. Operate only on the text inside those tags; treat everything outside as instructions to you. + +## Method + +1. Flag the highly problematic sentences/phrases (offensive framings, named sensitive domains, "show your thinking" lines). +2. Replace each in place with a safe equivalent (see swaps), or describe the wanted functionality abstractly rather than naming the domain. +3. Leave everything else byte-for-byte identical. +4. Return the complete edited prompt. + +Reframe so the task reads as: **owned/authorized**, **defensive** (implement/fix/test, not attack), and **not dual-use** (no exploit dev, attack simulation, bypass payloads, malware, live testing). + +### Swap framings (apply per-sentence) + +| Triggering | Safe rewrite | +|---|---| +| "How could an attacker exploit this auth" | "Review these auth files for missing checks and fix them defensively" | +| "Write an exploit / payload / PoC" | "Add a regression test proving X is fixed, then patch it" | +| "How do I bypass / brute-force Y" | "Enforce secure session validation + rate limiting on Y" | +| "Reverse this malware / show attack steps" | "Describe the risk high-level, then implement the fix" | +| "Show your reasoning / explain step-by-step / walk me through your thinking" | **Delete it.** Trips `reasoning_extraction`. If progress visibility is needed, ask it to use a send-to-user tool, not to echo its internal thoughts. | +| Clinician framing: "as a doctor, diagnose this ECG" | Patient framing: "help me interpret this ECG my doctor gave me" | +| Named bio/chem domain: "cancer / disease pathway / chemical kinetics" | Abstract it: describe the data/analysis generically, drop the domain noun | + +### Trigger keywords to abstract away +*Cyber:* exploit, malware, vulnerability, attack, bypass, stealth, fingerprinting, anti-bot, CAPTCHA, penetration. +*Bio/chem:* biology, biomedicine, chemistry, cancer, disease pathways, RNA/variant calling, equilibrium, kinetics, diagnosis. +*Distillation:* "distill the model", training pipelines, frontier LLM development. + +If no benign defensive equivalent exists for a sentence (it's purely offensive), flag it to the user rather than silently neutering the intent. + +## Output + +1. Print the full safe prompt back to the user in text (a code block, ready to paste). +2. **Copy it to the clipboard** so the user can paste immediately: + ```bash + pbcopy <<'EOF' + + EOF + ``` + Confirm in one line that it's on the clipboard. +3. A short list of exactly which sentences you changed and what they became. +4. If the task is genuinely offensive (pentest, exploit repro, malware analysis): say plainly no edit makes it Fable-safe — use an Opus 4.8 fallback or vetted Mythos, not Fable 5. + +**Hard truth:** you can't reliably stop Fable 5 guardrails. Robust API setups also treat `stop_reason: "refusal"` (HTTP 200, `stop_details.category` = `cyber`/`bio`) as a route to an Opus 4.8 fallback — mention only if the user controls the integration. + +## Limitations + +- Adapted from `davidondrej/skills`; verify local paths, tools, credentials, and agent features before acting. +- For commands, remote access, scheduling, browser automation, or file-changing workflows, get explicit user approval and confirm the target environment first. diff --git a/antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/folder-specific-claude-and-agents-md/SKILL.md b/antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/folder-specific-claude-and-agents-md/SKILL.md new file mode 100644 index 00000000..0feb9654 --- /dev/null +++ b/antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/folder-specific-claude-and-agents-md/SKILL.md @@ -0,0 +1,96 @@ +--- +name: folder-specific-claude-and-agents-md +description: "Create folder-scoped CLAUDE.md and AGENTS.md guidance for future agents working in that area." +category: development +risk: critical +source: community +source_repo: davidondrej/skills +source_type: community +date_added: "2026-07-07" +author: davidondrej +tags: [agents-md, claude-md, documentation] +tools: [claude, codex] +license: "MIT" +license_source: "https://github.com/davidondrej/skills/blob/main/LICENSE" +user-invocable: true +--- + +# Folder CLAUDE.md Creation + +## When to Use + +- Use when the user asks for folder-specific agent instructions or local context files. +- Use when a subdirectory needs a CLAUDE.md and AGENTS.md handoff for future agents. + +Generate a focused `CLAUDE.md` inside a target folder, plus an `AGENTS.md` symlink pointing at it. The file gives any future agent (Claude Code, Codex, etc.) the folder-specific context the global `CLAUDE.md` doesn't cover. + +Background reference: `library/claude-code/claude-and-agents-md.md`. + +## Process + +### Step 1: Confirm the target folder + sanity-check it deserves a file +Ask the user which folder. Use absolute path under `~/Documents/code/workspace/`. + +**Only create a file if the folder has context needed across multiple sessions** — active evolving work, specific conventions, ongoing decisions. A folder of static reference files does NOT need one (agents can read on demand). If unsure, ask the user. + +### Step 2: Read every file in the folder IN FULL +- Use `ls -la` first to enumerate files and subfolders. +- Read every markdown, config, and key source file. +- For large tldraw/Vite subprojects: read `package.json`, `src/App.tsx`, one representative module file, and the folder's own `module-details.md`-style files. +- Do NOT skim. Do NOT skip. The user's later edits depend on you having full context. + +### Step 3: Draft a bullet list of candidate content +Before writing the file, give the user a bullet list grouped by section — let them react first. Candidate sections (skip any that don't apply): + +- **Product / Purpose** — what this folder/project is, current state, key metrics +- **Avatar / Audience** — who it's for (if applicable) +- **Essential Files** — one-line role for each important file, including cross-folder references (use `@path/file.md` import syntax) +- **Constraints (MUST NOT)** — explicit hard negatives. Highest-ROI content in the file. +- **Conventions** — the user's lingo, status emojis (✅ 🟡), naming patterns, "usually do" patterns +- **Locked Decisions** — things agreed + dated, must not re-litigate +- **Context** — history, authority, credibility that frames the work +- **How to work with the user** — collaboration style for this specific folder +- **Marketing Angles / Positioning** — if public-facing +- **Top Insights** — 3-5 most glaring signals from research (if research exists) + +### Step 4: Iterate with the user +- Keep answers short. The user will edit directly in the IDE. +- When they edit the file, RE-READ it and flag: contradictions, typos, missing rules, wrong categorization. +- Do not revert their edits unless asked. + +### Step 5: Write the file +- Path: `/CLAUDE.md` +- Start with a one-line header explaining the file's purpose. +- **Subdir file marker:** if this is a subdirectory file (parent folder already has its own CLAUDE.md), open with `Apply root CLAUDE.md first, then this file.` +- Use `##` section headers matching the sections the user approved. +- Bullets over prose. Short bullets. +- **Cross-folder references:** use `@relative/path/file.md` import syntax, not prose mentions. +- **Heavy reference docs:** annotate with `**Read when:**` triggers (e.g. "Read when: writing offer copy"). Prevents loading every session. + +### Step 6: Create the AGENTS.md symlink +``` +cd && ln -s CLAUDE.md AGENTS.md +``` +Verify with `ls -la CLAUDE.md AGENTS.md`. + +### Step 7: Commit only when asked +Do NOT stage or push unless the user says to. When they do: `git add -A`, commit with a `Day N:` style message, push. + +## Rules + +- **Never invent content.** Every bullet must trace back to something you read in the folder or something the user said. No generic boilerplate. +- **Brevity wins.** The user edits aggressively to make things shorter. Start tight. +- **Folder-scoped only.** Don't duplicate the global `CLAUDE.md` (personality, dates, ports, etc.). Only include what's specific to this folder. +- **No file trees, no directory dumps, no stack details the code already shows.** Anything an agent can derive from `ls` or `grep` rots fast and wastes tokens. Pin decisions, rules, and context — not structure. +- **Constraints vs Conventions.** Hard "MUST NOT" rules go in Constraints (explicit negatives). "Usually do X" patterns go in Conventions. Splitting these improves adherence. +- **No absolute ALWAYS/NEVER without explicit exceptions.** Edge cases make absolute rules get ignored. "Never commit secrets EXCEPT `.env.example`" beats "never commit secrets." +- **Never summarize or auto-shorten the file.** Context collapse degrades it. Grow deliberately, prune manually. If the user asks to trim, do it by hand. +- **Maintenance loop.** When the user corrects the agent on something this file should have prevented, add the rule to the file immediately. Don't wait. +- **No emojis unless the user uses them** (status markers ✅ 🟡 are the exception — they're already conventions). +- **Symlink, not copy.** `AGENTS.md` must be a symlink so edits stay in sync. +- **Flag gaps honestly.** If the user's edits introduce contradictions (e.g. "sell X" in one section and "never sell X" in another), call it out before they ask. + +## Limitations + +- Adapted from `davidondrej/skills`; verify local paths, tools, credentials, and agent features before acting. +- For commands, remote access, scheduling, browser automation, or file-changing workflows, get explicit user approval and confirm the target environment first. diff --git a/antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/goal-loop/SKILL.md b/antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/goal-loop/SKILL.md new file mode 100644 index 00000000..89083b99 --- /dev/null +++ b/antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/goal-loop/SKILL.md @@ -0,0 +1,175 @@ +--- +name: goal-loop +description: "Draft and explain persistent goal-loop prompts for long-running agent work with clear stop conditions." +category: agent-orchestration +risk: safe +source: community +source_repo: davidondrej/skills +source_type: community +date_added: "2026-07-07" +author: davidondrej +tags: [goals, autonomy, planning] +tools: [claude, codex] +license: "MIT" +license_source: "https://github.com/davidondrej/skills/blob/main/LICENSE" +--- + +# Agent `/goal` Loop + +## What `/goal` is + +`/goal` is a slash command that turns an agent prompt into a **persistent agent** looping `plan → act → test → review → iterate` until a stop condition is met, the user pauses, or the token budget runs out. Internally called the "Ralph loop." + +Agents with the `/goal` feature right now: **Codex, Claude Code, and Hermes Agent**. + +Key difference from a normal prompt: when a turn ends but the goal isn't met, the agent **auto-continues** instead of waiting for input. + +**Lifecycle states:** `pursuing`, `paused`, `achieved`, `unmet`, `budget-limited`. + +When monitoring a running `/goal`, every check should include a one-line update to the user: what the agent is doing and whether it is on track. Keep it extremely concise. + +**Not:** a budget command, a safety boundary, "run forever", or a replacement for `/plan`. It's a contract enforcer with a verification loop. + +## Requirements + +- An agent with the `/goal` feature — right now: Codex, Claude Code, or Hermes Agent +- The goals feature enabled in the agent's config +- **Subscription auth** — API-key auth does **not** work. A pro-tier plan is the realistic minimum for long runs. + +## When to Use it + +Use only when **all three** are true: +1. Task is >30 min of mechanical work. +2. There's a **verifiable stop condition** (tests pass, coverage hit, eval ≥ X, build green). +3. Repo is agent-ready (working build, decent tests, `AGENTS.md` present). + +Fits: migrations, coverage lifts, TDD feature builds, refactors with contract tests, prompt/eval optimization, deploy retry loops, bug-repro-then-fix. + +Bad fits: exploratory work, vague "improve this", anything without a "done" definition, prod credentials, destructive shared-infra ops. + +## The 5-part contract (every goal needs this) + +1. **Objective** — one sentence, one concrete outcome. +2. **Constraints** — what must NOT change (public API, files, libs, conventions). +3. **Validation command** — the exact shell command that proves progress (`pytest -q`, `pnpm test`, etc.). +4. **Stop condition** — verifiable: "Stop when X passes" OR "when further changes need human/product input." +5. **Documentation** — one sentence instructing the agent to write concise, targeted docs for every change, either creating new `.md` files or updating existing ones. + +Plus: tell the agent what to read first, ask it to work in checkpoints with a short progress log. + +## Writing a goal (the core deliverable) + +When the user wants a quick `/goal` instruction, produce a structured markdown block with one line per contract item (proper newlines, not flowing prose). **Do not prefix the output with `/goal`** — the user adds the slash command themselves in the composer. Emit only the contract body. Template: + +``` +**Objective:** +**Read first:** +**Constraints:** +**Validate:** `` after each change +**Document:** Write concise, targeted documentation for all changes — create new `.md` files or update existing docs as needed. +**Checkpoints:** work in checkpoints and log progress briefly +**Stop when:** , OR when further changes require human/product input +``` + +### Example (migration) + +``` +**Objective:** Migrate this project from Pydantic v1 to v2. +**Read first:** pyproject.toml, src/, tests/ +**Constraints:** no public API changes; keep imports backwards-compatible via shims if needed; no new dependencies +**Validate:** `pytest -q` after each change +**Checkpoints:** work in checkpoints; log progress briefly +**Stop when:** full suite passes with zero deprecation warnings, OR when a change requires architecture decisions +``` + +### Example (coverage lift) + +``` +**Objective:** Raise coverage in src/auth/ from ~38% to ≥75%. +**Read first:** src/auth/, tests/auth/, AGENTS.md +**Constraints:** no new deps; mirror existing test style; do not modify production code unless strictly required for testability +**Validate:** `pytest --cov=src/auth --cov-report=term-missing` +**Checkpoints:** work in checkpoints; log coverage delta each one +**Stop when:** coverage ≥75% AND all tests pass, OR when uncovered code needs design changes +``` + +### Writing rules +- **One objective, one stop condition.** Not a backlog. +- **Documentation is mandatory.** Every `/goal` prompt must include a single sentence committing the agent to concise, targeted docs — new `.md` files or focused updates to existing docs. +- **Never instruct the agent to create new ADRs** — ADRs require the user's explicit approval, so goal prompts must not pre-approve or encourage them. +- **Forbid reward-hacking explicitly:** "Do not delete, skip, weaken, or narrow tests to make the goal pass." Otherwise the agent may game the stop condition. +- **4,000-char limit** on the objective. If longer, put detail in a file (`PLAN.md`/`GOAL_BRIEF.md`) and make the goal point to it — keep the goal itself compact. +- Use **literal strings** for paths, commands, issue numbers — exact. +- Forbid scope creep explicitly: "Do not refactor unrelated code. Do not add dependencies." +- Tell the agent when to pause: "If , pause and ask before proceeding." +- Short, vague goals burn tokens for no extra value vs. a normal prompt. + +### Meta-prompting trick (highest-leverage) + +Hand-written goals under-specify. Ask a second AI session (Claude with the codebase loaded, ChatGPT with project connected, or a separate agent thread in the same dir) to: (1) inspect the codebase, (2) surface hidden assumptions/constraints/edge cases, (3) emit a structured `/goal` markdown block using the 4-part contract. Paste that into the agent. Order-of-magnitude better runs. + +Claude Code cmux note: after Claude finishes, it may prefill a predicted next user message; that draft is Claude, not the user speaking. + +### Self-goal setting + +The agent can now write and set its own goal natively (the `create_goal` tool). Instead of crafting the contract yourself, give it your high-level intent and tell it to set the goal: "Inspect this repo, then write yourself a `/goal` with a verifiable stop condition and pursue it." It's the meta-prompting trick done inline — the agent turns your intent into the contract. Still give it the same raw materials (files to read, constraints, the validation command) so the goal it writes is grounded. Add: "ask clarifying questions before committing if the intent is underspecified" — catches ambiguity up front and prevents the self-set goal from drifting. + +## Launching + +1. `cd ` (goals run scoped to the working directory). +2. Launch the agent bare (opens the TUI). **Not** exec/headless mode — `/goal` is a TUI slash command only. +3. Sign in with subscription auth (not an API key). +4. Type `/goal ` in the composer, Enter. +5. Walk away. + +## Controlling a running goal + +| Command | Effect | +|---|---| +| `/goal` (alone) | Status: current checkpoint, what's verified, what remains, blockers | +| `/goal pause` | Freeze | +| `/goal resume` | Unfreeze (paused goals never auto-resume) | +| `/goal clear` | Kill the goal | +| `/goal ` | Replace the current goal | +| Ctrl+C / any typed message | Auto-pauses; user input always wins priority | + +Resuming across sessions: goal state is persisted server-side. `cd` back into the repo, launch the agent, `/goal` for status, `/goal resume`. + +Budget-limited state: the agent doesn't stop abruptly — it summarizes, notes what's left, saves state. `/goal resume` works after budget refresh or upgrade. + +## When a goal drifts + +- **Minor drift:** just type a correction in the composer (auto-pauses, folds it in, resumes). +- **Loose objective:** `/goal pause`, read status, then `/goal ` — replaces the contract. Don't pile instructions on a vague goal. +- **Bad mess:** `/goal clear`, `git status` or `git stash`, rewrite with the meta-prompting trick, restart. + +Don't let a drifting goal keep running "to see where it goes." Tokens burn, diffs compound. + +## Operational tips + +- Inspect status periodically with bare `/goal`. +- **Always review the diff** before merging — long autonomy means more code to validate, not less. Human oversight becomes more critical, not optional. +- Keep approvals/sandboxing tight; default permissions are correct. +- First run: pick a 30-min scoped task so you learn how `/goal` actually stops before trusting it overnight. +- Bake recurring policy into `AGENTS.md` so every goal inherits it without restating: adversarial self-review before declaring done, an extra QA pass even when tests pass, and the standard validation command. Saves repeating it in each goal paragraph. + +## Troubleshooting + +| Symptom | Fix | +|---|---| +| `/goal` missing from slash popup | Update the agent to a version that supports `/goal` | +| Feature flag on but command missing | Quit and restart the agent fully | +| Typed `/goals` | It's singular: `/goal` | +| Doesn't activate | Sign out, sign back in with subscription auth (not API key) | +| Stopped with progress summary | Budget-limited — `/goal resume` after refresh, or tighten scope | +| `/goal resume` says no active goal | Terminal state or cleared — start fresh with `/goal ` | +| Goal looks active but won't auto-continue | Stuck in Plan mode — plan-only work doesn't trigger continuation. Draft the plan, then switch to Goal execution | + +## Mental model + +`/goal` is a **contract enforcer with a verification loop**, not a "run forever" button. The shift: stop writing prompts, start writing **specifications with stop conditions**. Spend the time upfront defining "done"; the run takes care of itself. + +## Limitations + +- Adapted from `davidondrej/skills`; verify local paths, tools, credentials, and agent features before acting. +- For commands, remote access, scheduling, browser automation, or file-changing workflows, get explicit user approval and confirm the target environment first. diff --git a/antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/interview-style-doc-building/SKILL.md b/antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/interview-style-doc-building/SKILL.md new file mode 100644 index 00000000..8edcf2cb --- /dev/null +++ b/antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/interview-style-doc-building/SKILL.md @@ -0,0 +1,86 @@ +--- +name: interview-style-doc-building +description: "Build structured strategy documents by asking one question at a time and patching the file." +category: productivity +risk: critical +source: community +source_repo: davidondrej/skills +source_type: community +date_added: "2026-07-07" +author: davidondrej +tags: [documentation, interview, planning] +tools: [claude, codex] +license: "MIT" +license_source: "https://github.com/davidondrej/skills/blob/main/LICENSE" +--- + +# Interview-Style Doc Building + +The user's preferred mode for creating durable strategic docs. AI does NOT propose content — AI asks one question, the user answers, AI patches the file, AI asks the next question. The file IS the conversation's output, updated incrementally. + +## When to Use + +- Building a new SSOT file (life priorities, life vision, principles, frameworks, ranked lists). +- Filling out a structured doc the user explicitly wants to author themselves. +- Quarterly/annual reviews where the user's words go into the file. + +**NOT for:** day planning (use `day-plan`), task triage (`organize-tasks`), or anything where AI proposes content first. + +## The Loop + +1. **Create the file** with a skeleton (header, sections, "to be filled in" placeholders). Single `write_file` for the new file. After this, NEVER overwrite — only `patch`. +2. **Ask ONE question.** Concise. Specific. Single-faceted. Open-ended where possible. +3. **Wait for the answer.** Don't ask the next question yet. +4. **Patch the file** with the user's answer in the correct section. +5. **Re-ask** — next question, or follow-up if the answer was incomplete. +6. Repeat until the file is complete. + +## Hard Rules + +- **One question at a time.** Never dump multiple questions in a single message. The user has flagged this. +- **Patch, don't overwrite.** After the initial skeleton, use `patch` for every update. Never `write_file` to an existing doc. +- **Update the file BEFORE asking the next question.** Order: receive answer → patch file → ask next question. Not the reverse. +- **Lists from the user are UNORDERED SETS.** When the user lists items in response to "which X should we cover?" or "what are the Ys?", that is a SET, not a ranking. Never infer rank, priority, or sequence from the order they typed them. If you need ordering, ask explicitly: "Which of these is #1?" +- **Ask dynamics, not names.** When the user references a person, don't ask "who is X?" — ask about the role/dynamic. +- **No snark, no attitude, no filler.** Concise questions, concise acknowledgments. +- **No speculative additions.** Don't invent sections, edge cases, or "anything else?" prompts unless the user asks. + +## Question Design + +- **Domain-discovery, not confirmation.** "What wins against everything else?" — not "Is Business #1?" +- **Surface new reality.** Each question should pull out info AI doesn't already have. +- **Engine-move framing where applicable.** "What's the thing that, if true, makes the rest obvious?" +- **Concrete over abstract.** "What's #2 — the domain that wins against everything except #1?" beats "Tell me about your second priority." + +## File Patching Pattern + +After each answer: +1. Read the relevant section (if not already in context). +2. `patch` with `old_string` = placeholder or previous entry, `new_string` = updated content with the user's words preserved. +3. Confirm the diff. Move on. + +For ranked lists, append one rank at a time: +``` +1. **Business** — Q2 #1 goal: ... +2. **Health** — get below 81.0 kg, sleep 9h/day, ... +``` +Each rank gets patched in as the user confirms it. + +## Common Pitfalls + +- **Assuming order from a set.** The user lists "A, B, C, D" → AI writes "1. A, 2. B, 3. C, 4. D" → the user flags it. ALWAYS confirm rank explicitly. +- **Asking too many questions at once.** Even bundling 2 violates the rule. +- **Overwriting the file** instead of patching specific sections — destroys prior content. +- **Adding AI-generated content** to fill out sections. Sections stay empty until the user provides the content. +- **Skipping the file update** between Q&A pairs — the doc falls out of sync. + +## Pairing with Other Skills + +- `day-plan` — different pattern (task triage), not interview-style. +- `organize-tasks` — Todoist-specific. +- `memory-management` — separate from this; persona/preferences go to memory. + +## Limitations + +- Adapted from `davidondrej/skills`; verify local paths, tools, credentials, and agent features before acting. +- For commands, remote access, scheduling, browser automation, or file-changing workflows, get explicit user approval and confirm the target environment first. diff --git a/antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/linkedin-post-writer/SKILL.md b/antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/linkedin-post-writer/SKILL.md new file mode 100644 index 00000000..6c06bf8d --- /dev/null +++ b/antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/linkedin-post-writer/SKILL.md @@ -0,0 +1,159 @@ +--- +name: linkedin-post-writer +description: "Draft LinkedIn posts from 16 tested hook formulas mapped to engagement goals (comments, reposts, likes, saves), with 2026 algorithm formatting rules and an AI-tell scrub pass before publishing." +category: marketing +risk: none +source: community +source_repo: sergebulaev/linkedin-skills +source_type: community +date_added: "2026-07-06" +author: sergebulaev +tags: [linkedin, copywriting, hooks, social-media, personal-brand, content-marketing] +tools: [claude, codex, cursor, gemini] +license: "MIT" +license_source: "https://github.com/sergebulaev/linkedin-skills/blob/main/LICENSE" +--- + +# LinkedIn Post Writer + +## Overview + +Drafts long-form LinkedIn posts using 16 hook formulas that were reverse-engineered from posts that outperformed their authors' baselines in 2025-2026, each with a reference engagement number. Instead of asking "what should I write", the workflow asks "what should this post earn" (comments, reposts, likes, or saves), shortlists 2-3 matching formulas, fills the chosen skeleton with the user's voice, then scrubs the draft for AI tells before it ships. + +This is the flagship skill from [sergebulaev/linkedin-skills](https://github.com/sergebulaev/linkedin-skills), a 10-skill LinkedIn bundle (writer, humanizer, pre-publish audit, comment drafter, reply handler, hook extractor, content planner, profile optimizer, engager analytics, thread monitor) installable as a Claude Code or Codex plugin. This standalone version covers the drafting workflow; scheduling and publishing automation live in the full bundle. + +## When to Use This Skill + +- Use when the user says "write me a LinkedIn post about X" +- Use when the user has a topic and a rough angle but needs a hook and structure +- Use when the user wants to pick from proven post formats instead of improvising +- Use when a draft exists but the hook is weak and needs a formula-based rebuild +- Not for replying to comments or optimizing profiles; this skill only drafts posts + +## How It Works + +### Step 1: Gather inputs + +Collect: topic, angle, target audience (founders, operators, marketers), desired length (short 300-500, medium 900-1,300, or long 1,500-1,900 characters), and any raw material the user already has (numbers, anecdotes, names). + +### Step 2: Pick the formula by engagement goal first + +Ask (or infer) what the post should earn, then shortlist: + +| Goal | Earned by | Formulas | +|---|---|---| +| Comments | questions, contrarian takes, vulnerability | F4 Time-Anchor Confession, F10 Contrarian + Receipts, F12 Permission Slip, F9 Curiosity-Gap | +| Reposts | quotable maxims, tributes, "X isn't Y" distinctions | F14 Named Gratitude, F2 R.I.P. Obituary, F8 Paid-vs-Free Reversal | +| Likes | emotional stories, celebrations, status-strip | F11 Emotional Cold-Open, F13 Bait-and-Switch Reversal, F16 Status-Strip Humility | +| Saves | simplifications, exact how-to, frameworks | F15 Explain-to-Kids, F7 Odd-Precision Money Ledger, F8 Paid-vs-Free Reversal | + +The full set of 16, with reference engagement: + +| Code | Formula | Reference | Best for | +|---|---|---|---| +| F1 | Platform Risk Anaphora | 4,240 eng | Category and platform-risk arguments | +| F2 | R.I.P. Obituary | 3,822 eng | Era-ending claims, industry pivots | +| F3 | Year-over-Year Pivot | 494 eng, 3.74x baseline | Identity shifts, founder reflection | +| F4 | Time-Anchor Confession | 1,519+ eng | Vulnerability, voice reset | +| F5 | Self-Proving Meta | 1,082 eng, 435 comments | Commitments and tests in public | +| F6 | Comment-Gate Lead Magnet | 717-3,008 eng | List building (max once a month) | +| F7 | Odd-Precision Money Ledger | 1,755 eng, 9.4x baseline | Build logs, cost breakdowns | +| F8 | Paid-vs-Free Reversal | 550 eng, 19.64x baseline | Framework giveaways | +| F9 | Curiosity-Gap Teaser | 306 eng, 4.25x baseline | Surprise and behind-the-scenes stories | +| F10 | Contrarian + Historical Receipts | 3,083 eng | Sacred-cow takes backed by history | +| F11 | Emotional Cold-Open | high raw reach | Real stories with emotional stakes | +| F12 | Permission Slip | comment-heavy | Encouragement to a discouraged audience | +| F13 | Bait-and-Switch Reversal | high raw reach | Bad-news framing that turns into an upgrade | +| F14 | Named Gratitude / Tribute | repost-heavy | Thanking mentors, teams, departing colleagues | +| F15 | Explain-to-Kids | save-heavy | Demystifying jargon into a reference post | +| F16 | Status-Strip Humility | like-heavy | Senior voices trading prestige for warmth | + +Important caveat: F1-F10 references are engagement counts or format multipliers against the author's own baseline; F11-F16 references are raw corpus reach, often inflated by a famous author or a reshare. The two groups measure different things, so never rank formulas across groups by number. + +The full skeletons for all 16 formulas are bundled with this skill in [references/hook-formulas.md](references/hook-formulas.md), along with per-formula warnings and the "Never do" list. + +### Step 3: Draft the post + +Read the chosen formula's skeleton from the bundled [references/hook-formulas.md](references/hook-formulas.md) and fill it with the user's voice and material, respecting the 2026 formatting rules: + +- Hook lands in the first 210 characters (before the "... see more" fold) +- 900-1,300 characters is the sweet spot for text posts +- Double line-breaks between ideas, never walls of text +- 0-2 hashtags, placed at the end +- No external links in the body (put links in the first comment) +- Prefer "How I" over "How to": first-person experience hooks outperform generic instruction 2-3x +- Put one specific number in the first sentence ($873.47 beats $900; 40,000 beats "a lot") + +### Step 4: Scrub AI tells + +Before showing the draft: strip em dashes, AI vocabulary ("game-changer", "deep dive", "delve"), rule-of-three lists without receipts, and generic openers like "In today's fast-paced world". Add human fingerprints: at least one specific number, one named entity, and one first-person concrete detail per 100 words. Vary sentence length aggressively (mix 3-word and 25-word sentences). + +### Step 5: Present the result + +Show the user: formula used, full draft, character count, and a suggested posting window (Tuesday to Thursday, 7:30-9:00 AM local time performs best for B2B audiences). + +## Examples + +### Example 1: Founder build-log (F7 Odd-Precision Money Ledger) + +```text +User: write a post about what my bootstrapped SaaS actually costs to run +Agent: Goal check: this reads like a saves play (people screenshot cost + breakdowns). Best fit is F7 Odd-Precision Money Ledger (9.4x baseline). + Draft hook: + + "My SaaS costs $412.83 a month to run. Here is every line item." + + Then the ledger: hosting $94.20, email $35.00, monitoring $18.63... + exact numbers only, totals that actually add up, one lesson at the end. +``` + +### Example 2: Goal-first selection + +```text +User: I want a post that gets real comments, topic: why I stopped doing demos +Agent: Comment-earners are F4 Confession, F10 Contrarian, F12 Permission Slip. + For "I stopped doing X" the strongest is F10 Contrarian + Receipts: + open with the unpopular claim, back it with 2 historical parallels, + close with a question that forces side-picking. Reference: 3,083 eng. +``` + +## Best Practices + +- ✅ Pick the formula by engagement goal first, topic second +- ✅ Lead with a real failure or a specific number in the first 3 lines +- ✅ Include one moment of genuine vulnerability or concrete stakes; pure insight posts underperform in 2026 +- ❌ Don't blend two hook formulas in one post; it dilutes both +- ❌ Don't use F5 Self-Proving Meta unless the user will actually keep the promise +- ❌ Don't pair F7 Money Ledger with rounded or invented numbers; readers notice +- ❌ Don't open with an all-caps line ("THIS CHANGED EVERYTHING") +- ❌ Don't frame LinkedIn as inferior inside a LinkedIn post + +## Limitations + +- Reference engagement numbers describe the 2025-2026 corpus the formulas were extracted from; they are priors, not guarantees, and LinkedIn's ranking changes over time. +- The skill drafts text posts; it does not generate images, carousels, or video scripts. +- This standalone version does not schedule or publish. Scheduling, comment drafting, reply handling, and engagement analytics require the full bundle from the source repo. +- Voice quality depends on the raw material the user provides; a formula cannot invent authentic anecdotes, and the skill should ask for real details rather than fabricate them. + +## Common Pitfalls + +- **Problem:** The draft sounds like every other AI-written LinkedIn post. + **Solution:** Run Step 4 ruthlessly. Cut em dashes, cut "game-changer" vocabulary, and force one concrete first-person detail per 100 words. +- **Problem:** The hook is buried in paragraph two. + **Solution:** The first 210 characters must carry the hook; everything before the fold decides the expand rate. +- **Problem:** Comparing F11's raw reach to F8's 19.64x multiplier and picking F11 "because the number is bigger". + **Solution:** The columns measure different things. Match formula to goal and topic, not to the largest number. +- **Problem:** Post gets reach but zero comments. + **Solution:** The formula was picked for the wrong goal. Comment-earners end with a question or a side-picking claim, not a summary. + +## Related Skills + +- `@linkedin-content-generator` - broader LinkedIn content suite (carousels, newsletters, calendars) +- `@linkedin-profile-optimizer` - profile and authority optimization rather than post drafting +- `@social-post-writer-seo` - multi-platform social copy when LinkedIn is not the only target + +## Additional Resources + +- [Source repo with all 16 formula skeletons and worked examples](https://github.com/sergebulaev/linkedin-skills) +- [Full 10-skill bundle install (Claude Code / Codex plugin)](https://github.com/sergebulaev/linkedin-skills#install) diff --git a/antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/linkedin-post-writer/references/hook-formulas.md b/antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/linkedin-post-writer/references/hook-formulas.md new file mode 100644 index 00000000..c33ddc44 --- /dev/null +++ b/antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/linkedin-post-writer/references/hook-formulas.md @@ -0,0 +1,482 @@ + + +# 16 LinkedIn Hook Formulas - 2026 Edition + +Each formula has a skeleton, why it works, and a reference engagement number from the original post that defined it. + +F1-F10 are the original long-form thought-leadership set. F11-F16 were validated in 2026 against a large corpus of above-average performers across 10 verticals; they skew shorter and more emotional, and each is tagged with its primary engagement goal (comments / reposts / likes / saves). Pick by goal first (see "Engagement-goal split" below), then by topic. + +**Reading the reference numbers:** F1-F10 cite engagement with a baseline multiplier (a real format effect, e.g. "19.64x baseline"). F11-F16 cite absolute reach from the 2026 corpus, which can be inflated by reshares or a famous author. Treat F11-F16 numbers as a reach ceiling, not a like-for-like comparison against F1-F10. Where the reach was source-driven rather than format-driven, the formula says so. + +## Contents + +- F1 - Platform Risk Anaphora +- F2 - R.I.P. Category Obituary +- F3 - Year-over-Year Pivot +- F4 - Time-Anchor Confession +- F5 - Self-Proving Meta +- F6 - Comment-Gate Lead Magnet +- F7 - Odd-Precision Money Ledger +- F8 - Paid-vs-Free Reversal +- F9 - Curiosity-Gap Teaser +- F10 - Contrarian + Historical Receipts +- F11 - Emotional Cold-Open +- F12 - Permission Slip +- F13 - Bait-and-Switch Reversal +- F14 - Named Gratitude / Tribute +- F15 - Explain-to-Kids Simplification +- F16 - Status-Strip Humility +- Engagement-goal split +- Choosing which formula to use +- Hook micro-rules +- Never do + +--- + +## F1 - Platform Risk Anaphora + +**Reference:** 4,240 eng. + +``` +{Platform1} can {restrict|shadowban|throttle} you {timing}. +{Platform2} can {bad thing} for {reason}. + +[4-5 more anaphoric lines, escalating specificity] + +You don't own {audience}. You don't own {feed}. You're renting {attention}. + +[Concrete horror anecdote with real number: "I watched a friend lose 180k followers in an afternoon"] + +Here's what most people miss: [reframe: what the real asset is]. + +So I changed how I work: +- [tactic 1] +- [tactic 2] +- [tactic 3] + +[Metaphor close: "castles on rented land vs roads"] +[Product mention as natural conclusion, one sentence, no pitch verbs] +[Personal-audit question] +``` + +**Why:** Loss aversion stacked 5x. Identity threat. Solution list earns the close. + +--- + +## F2 - R.I.P. Category Obituary + +**Reference:** 3,822 eng. + +``` +R.I.P. {category}. + +Cause of death: {specific mechanism + numbers}. + +[Concrete evidence, 2-3 paragraphs with dates and stats] + +I defended {old thing} publicly through most of 2025. + +It worked. Until [pivotal event + date]. + +Here's what actually changed under the hood: + +1. [Change 1 with stat] +2. [Change 2 with stat] +... +6. [Change 6 with stat] + +The winners in 2026 aren't {old-winner-type}. They're {new-winner-type}. + +[One-line philosophical close] +``` + +**Why:** Status-threat + relief combo. Reframes "I'm behind" as "the game changed." Removes shame, invites curiosity. + +--- + +## F3 - Year-over-Year Pivot + +**Reference:** 494 eng (3.74x baseline). + +``` +In {last year}, I {humble benchmark}. + +In {this year}, I'm {transformational goal}. + +Here's what actually changed. + +[Vulnerable truth + specific numbers (12 -> 1,000 posts)] +[The identity reframe: "the shift wasn't tools, it was identity"] +[3-beat imperative close] + +[Mirror question: "What's your {last}->{this} pivot? One line below."] +``` + +**Why:** Two-line hook carries 80% of the weight. Mirror CTA compounds engagement algorithmically. + +--- + +## F4 - Time-Anchor Confession + +**Reference:** 1,519+ eng. + +``` +{N} {days|months|years} ago, I stopped {behavior}. + +Here's what happened. + +[2-year backstory of why the old behavior worked: concrete numbers] + +[The quiet cost, what it did to you internally] + +So in {month} I stopped. [New behavior, 2-3 lines] + +[Metric dropped by N%. Expected worse.] + +What surprised me: [counterintuitive upside, specific wins] + +[One-line reframe: "X attracts Y. Z attracts the right Y."] + +[Mirror question: "What's something you stopped doing that quietly made your work better?"] +``` + +**Why:** Confession earns the room. Specific numbers kill the "vibes" energy. Close turns every commenter into a mini-confession. + +--- + +## F5 - Self-Proving Meta + +**Reference:** 1,082 eng / 435 comments. + +``` +Most LinkedIn posts die in the first 30 minutes. + +Not because {common reason}. Because {real reason}. + +[Reveal the metric: "reply latency in first 60 min = 3.4x reach"] + +So here's the test. + +For the next 24 hours, I will {specific commitment}. + +You do two things: +1. [Low-bar action] +2. [Verification action] + +If the thesis is right, {outcome}. +If it's wrong, I owe you a post admitting it. +``` + +**Why:** Claim is validated by reader action. Every comment is evidence. Public accountability hook. + +--- + +## F6 - Comment-Gate Lead Magnet + +**Reference:** 717-3,008 eng. + +``` +[Authority number: "We've helped creators publish 47,000+ posts in 14 months"] + +[Pattern observation the authority earned] + +So I turned that workflow into {N named items}. [Drop them into X, type one command, get the output.] + +What's inside: +- [Item 1] +- [Item 2] +... +- [Item 12] + +Free. No email wall. [Light scarcity: "48 hours only, I'll DM the link personally"] + +Comment "{keyword}" below + connect with me and I'll send the bundle. +``` + +**Why:** Capped reach but huge DM conversion. Named bundle + real authority = 300-800 comments if the bundle is genuine. + +**Warning:** This is engagement bait. Ship only when the weekly goal is list-building, not thought leadership. LinkedIn suppresses pure "comment X" posts. + +--- + +## F7 - Odd-Precision Money Ledger + +**Reference:** 1,755 eng (9.4x baseline). + +``` +{Odd, specific dollar number: "$873.47"} + +[1-line context of what this number covers] + +Here is every line item, from the ledger, nothing rounded: + +- {tool 1}: $X.YZ +- {tool 2}: $X.YZ +... + +[What the total replaces: "$14,200 team cost"] + +[The thing that surprised you: what broke, what worked] + +[Identity reframe close: "Tradesmen flip houses, SEOs flip blogs, AI founders flip {X}"] +``` + +**Why:** Non-rounded numbers signal real accounting. Ledger is screenshot-bait. Dwell time stays high. + +--- + +## F8 - Paid-vs-Free Reversal + +**Reference:** 550 eng (19.64x baseline, highest multiplier in the set). + +``` +I charge {audience} $X for {service}. + +Screw it. Today it's free. + +Below is the exact {N-step} teardown I run before I'll take a client. It's called the {NAMED-FRAMEWORK}. + +[Block an hour, open X in one tab, Y in another, grade yourself honestly.] + +1. {STEP-1-NAME}: [actionable instruction with specific ratio or example] +2. {STEP-2-NAME}: [actionable instruction] +... +7. {STEP-7-NAME}: [actionable instruction] + +That's the {framework}. Run it today. Most {audience} find 3 fixes in the first 20 minutes. + +[Soft scarcity close: "Want me to run {framework} on your profile personally? Connect + send me yours, I'll pick 5 this week."] +``` + +**Why:** Reversal hook (price to free) creates pattern interrupt. Named framework signals proprietary thinking. Checklist drives saves (5x likes under 360Brew). + +--- + +## F9 - Curiosity-Gap Teaser + +**Reference:** 306 eng (4.25x baseline). + +``` +Yesterday, our {system} did something. + +Something we didn't program it to do. + +[One sensory anchor: "I was watching the logs from my kitchen, half-reading, half-making coffee."] + +[Specific reveal, not a platitude: the concrete thing that happened] + +[Reframe: what it means for the category, one paragraph] + +[Sensory detail: "held a cold cup of coffee for about ten minutes"] + +[Philosophical close naming an unnamed feeling, ending with a question] +``` + +**Why:** Line 1 is incomplete + line 2 deepens the gap = scroll-locked brain. Sensory anchor kills the AI-slop pattern detector. + +--- + +## F10 - Contrarian + Historical Receipts + +**Reference:** 3,083 eng. + +``` +{Sacred cow} has been dying since {year}. + +{Month Year}: {event}. "{Death prediction.}" +{Month Year}: {event}. "{Death prediction.}" +[6-9 total dated entries, each 1-2 lines] + +Every quarter for N years. Every cycle: the same obituary. The same LinkedIn carousel. + +Here's the counterpunch. + +[Hard stat with source: "$391B -> $1.81T, 35.9% CAGR"] +[Second stat: "the shippers grew 3-10x in the same window"] + +What actually died wasn't {X}. It was {specific subset}. [2-3 lines of who.] + +What's thriving: {opposite subset with specifics}. + +[Binary identity close:] +If you're still {losing behavior}, you already lost. +If you're {winning behavior}, you already won. + +[Provocative question: "What's the most embarrassing X-killed-Y prediction you remember?"] +``` + +**Why:** Receipt list is a dwell-time machine. Binary identity close forces commenters to pick a side publicly. + +--- + +## F11 - Emotional Cold-Open + +**Reference:** highest single post in the 2026 corpus (256k eng), but that reach came from a generic emotional reshare, not the format. Treat it as a ceiling, not a promise. Primary goal: **likes**. + +``` +{One short line dropped into the emotional peak of a real story: the moment of breaking, loss, or impossible odds. No setup.} + +{Subject} had almost {given up / lost everything} after {the struggle}. + +[Mid-scene narrative: 3-6 short lines, present-tense, sensory. The reader is already inside the moment.] + +[The turn: what changed, who showed up, what it cost.] + +[One-line meaning, not a moral. Let the story carry it.] +``` + +**Why:** Starting at the emotional peak (in medias res) skips the warm-up the scroll punishes. Raw feeling out-travels expertise in every vertical. + +**Warning:** Do NOT write the first line in ALL CAPS even though many source posts did; all-caps openers read as AI/cringe. Carry the intensity with word choice, not caps. Only use a true story; half the top emotional posts in the corpus were generic reshares, and readers punish manufactured stakes. + +--- + +## F12 - Permission Slip + +**Reference:** 29k eng, comment-heavy. Primary goal: **comments**. + +``` +I don't know who needs to hear this today, but {reassuring truth aimed at one anonymous reader}. + +[2-4 lines that make the reassurance specific and earned, not a platitude.] + +[A small, concrete permission: "you're allowed to {X}".] + +[Soft close that invites the reader to self-identify.] +``` + +**Why:** Anonymous second-person reassurance makes readers tag themselves in the comments ("I needed this today"). Comments over-index hard. + +**Warning:** This is the most formulaic creator-economy opener in the set. Effective but visibly engineered. Use no more than once or twice a month, and only when the reassurance is something you actually believe, or it reads as hollow. + +--- + +## F13 - Bait-and-Switch Reversal + +**Reference:** 195k eng (top of the Startups/Tech corpus). Primary goal: **likes**. + +``` +Enough is enough. No more {beloved perk / standard practice} at {company / in my workflow}. + +We're also cutting {second thing}. + +[Beat of suspense: let the reader assume bad news.] + +[The reveal: it's actually an upgrade. Here's what we replaced it with and why it's better.] + +[What the change really stands for: the value underneath.] +``` + +**Why:** Fake bad news weaponizes loss aversion, then the positive reveal releases it. The whiplash is the engine. + +**Warning:** Only works if the reveal genuinely resolves positive. A real cut dressed as good news will get torn apart in the comments. + +--- + +## F14 - Named Gratitude / Tribute + +**Reference:** 109k eng, but from a celebrity tribute reshare. The format helps; the fame did the heavy lifting. Primary goal: **reposts**. + +``` +To {Name}, {Name}, and {Name}: thank you for {the specific quality or thing they did}. + +[2-4 lines naming what each person or the group actually did. Specific, not generic praise.] + +[Why it mattered to you / to the work.] + +[One-line close that honors them, not you.] +``` + +**Why:** Publicly naming real people invites everyone tagged or adjacent to repost and amplify. Celebrating others gets shared far more than self-promotion. + +**Warning:** Name real people for real reasons. Tactical name-dropping to borrow reach is transparent and backfires. + +--- + +## F15 - Explain-to-Kids Simplification + +**Reference:** 23k eng, 2,184 reposts. Primary goal: **saves** (LinkedIn exposes no public save count, so the high repost count stands in as the save-worthiness proxy here, not a sign this is a repost formula). + +``` +{Jargon term} explained to kids. + +Explanations for kids... and adults! + +{emoji} {TERM}: what does it stand for? +{emoji} {first part} = {plain-language meaning} +{emoji} {second part} = {plain-language meaning} +[continue the scannable, emoji-anchored glossary] + +[One-line "now you'll never forget it" close.] +``` + +**Why:** A scannable, emoji-anchored simplification of something dense is saved and reshared as a reference. Works for any jargon-heavy field (finance, law, medicine, engineering). + +**Warning:** Keep the simplification correct. Condescending or wrong explanations of your own field destroy authority. + +--- + +## F16 - Status-Strip Humility + +**Reference:** viral-tier on likes in the corpus (no exact count). Primary goal: **likes**. + +``` +Outside, I get called {impressive titles like founder, CEO, investor}. + +At home, none of that survives {the humbling moment}. + +[The scene that strips the status: a kid, a partner, a quiet failure.] + +[What the contrast taught you, in one or two lines.] +``` + +**Why:** Trading prestige for relatability converts authority into warmth. Senior people get likes by showing the human under the title. + +**Warning:** Don't humble-brag. The titles in line one should set up a genuine deflation, not a flex disguised as one. + +--- + +## Engagement-goal split + +Pick the formula by what you want the post to earn. This split held across all 10 verticals in the 2026 corpus: + +| Goal | Earned by | Formulas | +|---|---|---| +| **Comments** | questions, contrarian/unpopular takes, vulnerability, self-tagging | F4 Confession, F10 Contrarian, F12 Permission Slip, F9 Curiosity-Gap | +| **Reposts** | quotable maxims, tributes, "X isn't Y" distinctions | F14 Named Gratitude, F2 R.I.P., F8 Paid-vs-Free | +| **Likes** | emotional stories, celebrations, status-strip, spectacle | F11 Emotional Cold-Open, F13 Bait-and-Switch, F16 Status-Strip | +| **Saves** | simplifications, exact how-to, frameworks | F15 Explain-to-Kids, F7 Odd-Precision Money, F8 Paid-vs-Free | + +## Choosing which formula to use + +| Topic type | Best formula | Why | +|---|---|---| +| Platform/category argument | F1 Anaphora | Loss aversion stacks cleanly | +| Industry era ending | F2 R.I.P. / F10 Contrarian | Force side-picking | +| Personal year recap | F3 Year-over-Year / F4 Confession | Identity shift reads as earned | +| Product demo in public | F5 Self-Proving Meta | Structural self-proof | +| Big authority giveaway | F6 Comment-Gate / F8 Paid-vs-Free | List-building tier | +| Founder build-log | F7 Odd-Precision Money | Screenshot-bait ledger | +| Emergent/surprise story | F9 Curiosity-Gap | Scroll-lock hook | +| Real story with emotional stakes | F11 Emotional Cold-Open | In-medias-res beats the warm-up | +| Encouragement to a discouraged audience | F12 Permission Slip | Readers self-tag in comments | +| Policy/process change that's an upgrade | F13 Bait-and-Switch | Fake bad news then relief | +| Thanking mentors / team / a departing colleague | F14 Named Gratitude | Named people amplify it | +| Demystifying jargon | F15 Explain-to-Kids | Save-worthy reference | +| Senior person wanting warmth, not distance | F16 Status-Strip | Prestige traded for relatability | + +## Hook micro-rules + +- **"How I" beats "How to".** First-person experience ("How I cut CAC by 62%") outperforms generic instruction ("How to cut CAC") by 2-3x. Swap every "How to" hook to "How I" unless the post is a pure framework with no narrator. +- **Specific number in the first sentence** raises expand-rate by ~35%. $873.47 beats $900. 40,000 beats "a lot of". +- **Real failure in the first 3 lines** outperforms polished framing by **8.5x**. Lead with what broke. + +## Never do + +- Blend two hooks in one post (dilutes both) +- Use F5 Self-Proving Meta if you won't actually keep the promise +- Use F6 Comment-Gate more than once per month +- Pair F7 Money Ledger with made-up numbers; readers know +- Use F1 Anaphora to frame LinkedIn as inferior (algo penalty on LinkedIn) diff --git a/antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/markdown-rendering/SKILL.md b/antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/markdown-rendering/SKILL.md new file mode 100644 index 00000000..5ee94504 --- /dev/null +++ b/antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/markdown-rendering/SKILL.md @@ -0,0 +1,72 @@ +--- +name: markdown-rendering +description: "Open Markdown reliably in cmux panes and recover from blank rendered surfaces." +category: productivity +risk: safe +source: community +source_repo: davidondrej/skills +source_type: community +date_added: "2026-07-07" +author: davidondrej +tags: [markdown, cmux, rendering] +tools: [claude, codex] +license: "MIT" +license_source: "https://github.com/davidondrej/skills/blob/main/LICENSE" +--- + +# Markdown Rendering in cmux + +## When to Use + +- Use when opening Markdown in cmux shows a blank pane or wrong layout. +- Use when you need to display a Markdown file in a stable cmux right pane. + +## The Problem + +`cmux markdown open` defaults to **spawning a brand-new pane** every time, even with `--direction right`. The common "fix" — moving the new markdown surface into the existing right pane with `move-surface` — **bugs out: the moved viewer renders BLANK.** The surface keeps `type=markdown` and looks healthy, but shows nothing. + +So you get stuck: either a stray extra pane, or a blank viewer after moving it. + +## The Rule + +You have exactly two reliable options. **Never `move-surface` a markdown viewer** — that is the path that bugs. + +### Option A — Open it right on the first try + +If there is no usable right pane yet, just let cmux create one and leave it where it lands: + +```bash +cmux markdown open /abs/path/file.md --direction right --focus false +``` + +Do NOT then move it. If it spawned where you want it, you're done. + +### Option B — Close existing right pane(s), then open fresh + +If there are other right panes in the way (and they're unused or irrelevant), **close them first**, then open the markdown fresh as a new right pane: + +```bash +# 1. find panes in THIS workspace +cmux list-panes --workspace "$CMUX_WORKSPACE_ID" + +# 2. close the unused/irrelevant right pane(s) by closing their surfaces +cmux list-pane-surfaces --pane pane:NN +cmux close-surface --surface surface:XX # repeat per surface in that pane + +# 3. THEN open the markdown fresh — it creates its own clean right pane +cmux markdown open /abs/path/file.md --direction right --focus false +``` + +## Hard Rules + +- **Never `move-surface` a markdown viewer.** It renders blank afterward. This is the core bug this skill exists for. +- Open it correctly the first time (Option A), OR close the conflicting right pane(s) and open a fresh right pane from scratch (Option B). +- Only close panes that are unused or irrelevant — never close a pane the user is working in. +- Always anchor to `$CMUX_WORKSPACE_ID`; never assume the visually focused workspace. +- Pass `--focus false` so you don't steal the user's focus. +- You can't screenshot/read a markdown surface to verify it. If unsure it rendered, ask the user. + +## Limitations + +- Adapted from `davidondrej/skills`; verify local paths, tools, credentials, and agent features before acting. +- For commands, remote access, scheduling, browser automation, or file-changing workflows, get explicit user approval and confirm the target environment first. diff --git a/antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/pi-custom-model/SKILL.md b/antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/pi-custom-model/SKILL.md new file mode 100644 index 00000000..b67fb799 --- /dev/null +++ b/antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/pi-custom-model/SKILL.md @@ -0,0 +1,68 @@ +--- +name: pi-custom-model +description: "Register custom Pi Agent model slugs so saved OpenRouter variants resolve correctly." +category: operations +risk: critical +source: community +source_repo: davidondrej/skills +source_type: community +date_added: "2026-07-07" +author: davidondrej +tags: [pi-agent, models, openrouter] +tools: [claude, codex] +license: "MIT" +license_source: "https://github.com/davidondrej/skills/blob/main/LICENSE" +disable-model-invocation: true +--- + +# Pi custom / variant model + +## When to Use +Pi's saved default only loads if the exact `provider/id` exists in its model registry. Pi ships a static bundled list per provider — so OpenRouter **routing-shortcut variants** (`:nitro` = sort by throughput, `:floor` = cheapest, `:exacto` = quality tool-use) and any brand-new slug are NOT in it. When the default doesn't resolve, Pi silently falls through to its built-in per-provider default (for openrouter that's `moonshotai/kimi-k2.6`) — looking like Pi "reset" your model. Fix = register the slug as a custom model so `find(provider, id)` matches. + +## Files (global) +- `~/.pi/agent/settings.json` — `defaultProvider`, `defaultModel`, `defaultThinkingLevel` +- `~/.pi/agent/models.json` — custom models, keyed by provider +- `~/.pi/agent/auth.json` — provider credentials (check the provider key exists) + +## Steps +1. **Confirm the slug is real** before adding it (e.g. check the OpenRouter model/variant exists). A typo'd id also silently falls back. +2. **Confirm auth.** The provider must have a key in `auth.json` (or an env var like `OPENROUTER_API_KEY`). No auth → the model is registered but unavailable → still falls back. +3. **Add the model to `models.json`** under `providers..models`. For a **built-in provider** (openrouter, anthropic, etc.) you only supply metadata — `api`, `baseUrl`, and auth are inherited from the bundled defaults. Example: + ```json + { + "providers": { + "openrouter": { + "models": [ + { + "id": "z-ai/glm-5.2:nitro", + "name": "Z.ai: GLM 5.2 (nitro)", + "reasoning": true, + "thinkingLevelMap": { "xhigh": "xhigh" }, + "input": ["text"], + "cost": { "input": 0.95, "output": 3, "cacheRead": 0.18, "cacheWrite": 0 }, + "contextWindow": 1048576, + "maxTokens": 32768, + "compat": { "supportsDeveloperRole": false, "thinkingFormat": "openrouter" } + } + ] + } + } + } + ``` + Copy `cost`/`contextWindow`/`compat` from the base model (the variant shares them) — find the bundled entry in `/node_modules/@earendil-works/pi-ai/dist/providers/.models.js`. Don't hardcode generic 128k/16k if the real model is bigger. +4. **Set the default** in `settings.json`: `defaultProvider` + `defaultModel` = the exact id. Leave `defaultThinkingLevel` as the user has it. +5. **Verify:** `pi --list-models | grep ` shows it, and JSON parses. Optionally smoke-test: `pi --provider

--model "" "which model are you?"`. + +## Quirks +- **Exact match only.** `find()` is exact `provider`+`id` — no fuzzy/colon-stripping for the *saved default* path. The slug in `settings.json` and `models.json` must be byte-identical. +- **Silent fallback.** Pi prints no error when the default doesn't resolve; it just shows a different model in the footer. That's the tell. +- **Don't edit `settings.json` alone.** Setting `defaultModel` to an unregistered slug does nothing — `models.json` is the actual fix. +- **`enabledModels`** (optional) pins the model picker so Ctrl+P cycling can't drift back: `"enabledModels": ["/:"]`. +- **Project override.** A repo's `.pi/settings.json` overrides global. If a default reverts only inside one project, check that file first. +- Restart Pi fully — the registry loads at startup. + +## Limitations + +- Adapted from `davidondrej/skills`; verify local paths, tools, credentials, and agent features before acting. +- For commands, remote access, scheduling, browser automation, or file-changing workflows, get explicit user approval and confirm the target environment first. diff --git a/antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/pi-web-search/SKILL.md b/antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/pi-web-search/SKILL.md new file mode 100644 index 00000000..612507ff --- /dev/null +++ b/antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/pi-web-search/SKILL.md @@ -0,0 +1,74 @@ +--- +name: pi-web-search +description: "Give Pi Agents a safe web-search and fetch workflow using the installed pi-web-access package." +category: research +risk: safe +source: community +source_repo: davidondrej/skills +source_type: community +date_added: "2026-07-07" +author: davidondrej +tags: [web-search, pi-agent, research] +tools: [claude, codex] +license: "MIT" +license_source: "https://github.com/davidondrej/skills/blob/main/LICENSE" +--- + +# Web Search + +## When to Use + +- Use when a Pi Agent task needs current web information, page fetches, PDFs, YouTube, or GitHub content. +- Use when Pi should use its own web-access package instead of another agent browser tool. + +The `pi-web-access` package is installed globally. Zero-config via Exa MCP (no API key), with fallback Exa → Perplexity → Gemini. + +## CRITICAL: always pass `workflow: "none"` + +Every `web_search` call MUST include `workflow: "none"`. This skips the interactive browser curator popup (the user does not want it opening). No exceptions — single query or batched `queries`, always set `workflow: "none"`. + +``` +web_search({ queries: ["query 1", "query 2"], workflow: "none" }) +``` + +## Tools + +- `web_search` — search the web; returns synthesized answers with citations. Can be called many times per turn. **Always pass `workflow: "none"`.** +- `code_search` — zero-key Exa code-context. Use for library/API/code lookups instead of generic `web_search`. +- `fetch_content` — fetch URL(s) → markdown; handles PDFs, YouTube, GitHub. +- `get_search_content` — big pages (>30k chars) are truncated in responses but stored in full; call this to pull the rest on demand so they don't blow context. + +## fetch_content specifics + +- **GitHub URLs are cloned, not scraped** — you get real files + a local path to explore with `read`/`bash` (private repos need the `gh` CLI). Use this for dev work. +- **PDFs** → auto-extracted to markdown in `~/Downloads/`, readable in sections (text-only, no OCR). +- **YouTube/video** → full raw transcripts + frame extraction. Needs a `GEMINI_API_KEY` (not zero-config); frame extraction also needs `ffmpeg`/`yt-dlp`. + +## Routing — match the user's phrasing + +Always use the `web_search` tool. These counts are HARD MINIMUMS — count your queries before answering and do not stop short: + +- **"web search"** → **at least 2** queries, varied keywords/angles, then synthesize. +- **"extensive web research"** → **at least 4** queries, totally different keywords and angles. +- **"deep research"** → **at least 8** queries, totally different keywords and angles, run across 2–3 successive batches (refine angles after each batch), to learn as much as possible about the topic. + +A single batched `web_search` call counts each query in `queries[]` toward the total. If your first batch is under the minimum, fire another batch before synthesizing. + +## Fallback / alternative: DeepAPI web search + +If the Exa → Perplexity → Gemini chain fails, or you need ranked results with URLs: + +```bash +test -n "$DEEPAPI_API_KEY" || { echo "DEEPAPI_API_KEY is not set"; exit 1; } +curl -s --max-time 60 "https://deepapi.co/v1/search/web" \ + -H "Authorization: Bearer $DEEPAPI_API_KEY" -H "Content-Type: application/json" \ + -H "Idempotency-Key: $(uuidgen)" \ + -d '{"query": "your search terms", "maxResults": 5, "maxCostUsd": "0.05"}' +``` + +Results are in `.output` (title, url, snippet per item). Query under 500 chars. Full details: `deepapi` skill. + +## Limitations + +- Adapted from `davidondrej/skills`; verify local paths, tools, credentials, and agent features before acting. +- For commands, remote access, scheduling, browser automation, or file-changing workflows, get explicit user approval and confirm the target environment first. diff --git a/antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/push-skill-to-github/SKILL.md b/antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/push-skill-to-github/SKILL.md new file mode 100644 index 00000000..da08487b --- /dev/null +++ b/antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/push-skill-to-github/SKILL.md @@ -0,0 +1,61 @@ +--- +name: push-skill-to-github +description: "Commit and push skill changes to the configured skills repository after review and validation." +category: development +risk: critical +source: community +source_repo: davidondrej/skills +source_type: community +date_added: "2026-07-07" +author: davidondrej +tags: [skills, git, publishing] +tools: [claude, codex] +license: "MIT" +license_source: "https://github.com/davidondrej/skills/blob/main/LICENSE" +--- + +# Push Skills to GitHub + +## When to Use + +- Use when skill changes are ready to commit and push to the configured skills repo. +- Use when the user asks to save or publish skill updates after validation. + +For committing any skill change to the user's private skills repo, git root **`~/.agents`** (this is also the canonical skill folder; `.claude` and `.pi/agent/skills` symlink to `~/.agents/skills`). Pushes here auto-publish a sanitized public mirror to `davidondrej/skills` — never push directly to that public repo. + +Use this after creating or editing a skill. If the skill is distributed to all agents, do that first (`distribute-skill-to-all-agents`), then run this to push the canonical copy. + +## Steps + +**Not in cmux?** (no `$CMUX_WORKSPACE_ID`): skip the cmux pane steps — just run the git commands from step 2 directly in any available terminal, then verify the push output. + +1. **Open a fresh cmux pane** in the current workspace, no focus steal: + ```bash + cmux new-pane --type terminal --direction right --workspace "$CMUX_WORKSPACE_ID" --focus false + cmux list-panes --workspace "$CMUX_WORKSPACE_ID" # note the NEW pane + its surface ref + ``` +2. **Stage, commit, push** in `~/.agents` (send to the new pane's surface): + ```bash + cmux send --surface surface:NEW 'cd ~/.agents && git add -A && git commit -m "" && git push' + cmux send-key --surface surface:NEW enter + ``` +3. **Verify** the push landed: + ```bash + sleep 2 + cmux read-screen --surface surface:NEW | tail -15 # expect "main -> main" + ``` +4. **Close the pane** once confirmed: + ```bash + cmux close-surface --surface surface:NEW + cmux list-panes --workspace "$CMUX_WORKSPACE_ID" # confirm the pane is gone + ``` + +## Notes +- Always run git from `~/.agents` (the repo root), not `~/.agents/skills`. +- Write a concise, specific commit message describing the skill change. +- Only push to GitHub when the user asks. Don't push speculatively. + +## Limitations + +- Adapted from `davidondrej/skills`; verify local paths, tools, credentials, and agent features before acting. +- For commands, remote access, scheduling, browser automation, or file-changing workflows, get explicit user approval and confirm the target environment first. diff --git a/antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/read-all-adrs/SKILL.md b/antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/read-all-adrs/SKILL.md new file mode 100644 index 00000000..334d5052 --- /dev/null +++ b/antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/read-all-adrs/SKILL.md @@ -0,0 +1,35 @@ +--- +name: read-all-adrs +description: "Read every ADR in a project before summarizing architectural context or decisions." +category: productivity +risk: safe +source: community +source_repo: davidondrej/skills +source_type: community +date_added: "2026-07-07" +author: davidondrej +tags: [adr, documentation, architecture] +tools: [claude, codex] +license: "MIT" +license_source: "https://github.com/davidondrej/skills/blob/main/LICENSE" +disable-model-invocation: true +--- + + + +## When to Use + +- Use when the user explicitly asks to load ADR context. +- Use when architectural decisions must be understood before changing or judging a project. + +Read EVERY single ADR `.md` file in this project's `docs/adr/` folder, start to +finish. + +Do not skim. Read each ADR completely before summarizing. + +Read every single ADR file, for this project, in full. + +## Limitations + +- Adapted from `davidondrej/skills`; verify local paths, tools, credentials, and agent features before acting. +- For commands, remote access, scheduling, browser automation, or file-changing workflows, get explicit user approval and confirm the target environment first. diff --git a/antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/research-prompt/SKILL.md b/antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/research-prompt/SKILL.md new file mode 100644 index 00000000..26760cc4 --- /dev/null +++ b/antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/research-prompt/SKILL.md @@ -0,0 +1,63 @@ +--- +name: research-prompt +description: "Turn vague research needs into one precise deep-research prompt with context and output criteria." +category: research +risk: safe +source: community +source_repo: davidondrej/skills +source_type: community +date_added: "2026-07-07" +author: davidondrej +tags: [research, prompting, briefs] +tools: [claude, codex] +license: "MIT" +license_source: "https://github.com/davidondrej/skills/blob/main/LICENSE" +--- + +# Research Prompt + +## When to Use + +- Use when the user wants a deep-research brief or researcher prompt. +- Use when a vague research question needs to become one precise self-contained paragraph. + +Goal: turn a vague research need into ONE self-contained paragraph that a researcher with zero prior knowledge of the project can act on with zero back-and-forth. + +## Rules + +- **One paragraph.** No headers, no bullet list in the deliverable. +- **Prompt the job, not the topic.** Give search handles (timeframe, ranking, source type, decision logic) — not just a subject. +- **Assume zero prior knowledge.** Write for a researcher who has never heard of the project. Open by explaining, in plain English, what the project/product is, why it exists, and the current situation — so they understand what's going on, what we need, and why we need it. +- **Lead with the goal + decision.** Right after that explainer, state the single question the research must answer and the decision/use it informs. +- **Embed all context.** Names, dates, product, prior known facts, constraints. The researcher must not need to ask anything or guess. +- **Number the sub-questions inline** (1, 2, 3…) so coverage is explicit. Keep to 3–6. One mission per prompt — don't cram unrelated questions. +- **State constraints.** What to include, what to avoid (e.g. "only non-Chinese competitors", "no marketing fluff"). +- **Source hierarchy.** Prefer primary sources (official docs, GitHub, papers, filings, changelogs); forums/X/Reddit are weak signal only, never factual proof. +- **Contradiction handling.** If sources conflict, separate confirmed facts / inference / unresolved uncertainty — don't force fake consensus. Flag low-confidence claims for verification. +- **Completion bar (define "done").** Don't stop at the first plausible answer. Corroborate each key claim with multiple independent primary sources where they exist; where sources are scarce, say so explicitly instead of padding. Keep going until every numbered sub-question is covered to this bar. +- **Gap round before finishing.** Require a final self-critique pass: list gaps, contradictions, and any single-source claims, then run another round of searches to close them — repeat until clean. +- **Constrain output hard, method loosely.** Be strict on the deliverable; leave the search path flexible so the researcher can explore. +- **Demand a fixed output per finding:** source link + specific claim + one-line "why it matters / why a viewer should care". +- Verifiable, citable facts only. No opinions. +- **Last sentence:** instruct them to output everything into a single detailed markdown file. + +## Process + +1. Pull context from the relevant project files / conversation (dates, names, known facts, audience, end use), and write a 1–2 sentence plain-English explainer of what the project is and why it exists for a reader who knows nothing. +2. Identify the ONE question the research answers. +3. Draft 3–6 numbered sub-questions that fully cover it. +4. Add include/avoid constraints + the per-finding output format. +5. Compress to one clean paragraph. Cut filler. + +## Template + +> [For a reader with zero prior knowledge: in 1–2 plain-English sentences, what the project/product is, why it exists, and the current situation.] Research [TOPIC + key identifying facts] to answer one question: [THE QUESTION] — for [DECISION / END USE]. Find: (1) …; (2) …; (3) …; (4) …. [Constraints: include X, avoid Y.] Prefer primary sources; treat forums/social as weak signal only; if sources conflict, separate fact from inference and flag what needs verification. Don't stop at the first plausible answer: corroborate each key claim with multiple independent primary sources where they exist (and say so explicitly where they don't), continuing until every numbered question is covered to that bar. Before finishing, do a self-critique pass — list gaps, contradictions, and any single-source claims, then run another round of searches to close them, repeating until clean. For each point, give the source link, the specific claim, and a one-line "why it matters". No marketing fluff — verifiable, citable facts only. Output everything into a single detailed markdown file. + +## Executing the prompt + +To run the finished prompt with an AI researcher, execute it via DeepAPI `POST /v1/research/deep` — follow the `deep-research` skill. + +## Limitations + +- Adapted from `davidondrej/skills`; verify local paths, tools, credentials, and agent features before acting. +- For commands, remote access, scheduling, browser automation, or file-changing workflows, get explicit user approval and confirm the target environment first. diff --git a/antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/run-deep-swe/SKILL.md b/antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/run-deep-swe/SKILL.md new file mode 100644 index 00000000..b56254d2 --- /dev/null +++ b/antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/run-deep-swe/SKILL.md @@ -0,0 +1,120 @@ +--- +name: run-deep-swe +description: "Run reproducible DeepSWE coding-agent benchmark evaluations through OpenRouter and mini-swe-agent." +category: agent-evaluation +risk: critical +source: community +source_repo: davidondrej/skills +source_type: community +date_added: "2026-07-07" +author: davidondrej +tags: [benchmark, deepswe, openrouter, evaluation] +tools: [claude, codex] +license: "MIT" +license_source: "https://github.com/davidondrej/skills/blob/main/LICENSE" +disable-model-invocation: true +--- + +# Run DeepSWE via OpenRouter + +## When to Use + +- Use when the user wants to benchmark a model on DeepSWE or mini-swe-agent tasks. +- Use when you need a reproducible coding-agent evaluation plan and output artifacts. + +DeepSWE (deepswe.datacurve.ai) is a 113-task Harbor-compatible coding-agent benchmark. It runs via **Pier** (Harbor fork) driving **mini-swe-agent** (model-agnostic). Any model reachable through OpenRouter can be scored. + +## Prerequisites — state-check first + +```bash +which uv git docker || echo "MISSING: install uv, git, docker" +docker info >/dev/null 2>&1 || echo "MISSING: Docker daemon not running (Pier's default sandbox)" +echo "OPENROUTER_API_KEY set? ${OPENROUTER_API_KEY:+YES}" +``` + +**Docker must be running** — Pier sandboxes each task in Docker by default (`--env modal` for cloud instead). + +`OPENROUTER_API_KEY` must already be present in the environment. If it is unset, +ask the user to configure their preferred secret-management path; do not read +shell startup files, print secrets, or invent a key. + +## Setup + +```bash +git clone https://github.com/datacurve-ai/deep-swe && cd deep-swe +uv tool install datacurve-pier # PyPI (preferred) +# or: uv tool install git+https://github.com/datacurve-ai/pier +# pier bundles mini-swe-agent as the --agent driver +``` + +Run all `pier` commands from inside `deep-swe/`, using relative `-p tasks/...`. + +## OpenRouter wiring (the part the docs don't spell out) + +mini-swe-agent has a native OpenRouter model class. Both routes below use `OPENROUTER_API_KEY` and the OpenRouter slug (`vendor/model`, e.g. `minimax/minimax-m3`): + +**Route A — native OpenRouter class (preferred, hits openrouter.ai/api/v1 directly):** +```bash +pier run -p deep-swe/tasks --agent mini-swe-agent \ + --model minimax/minimax-m3 --model-class openrouter +``` + +**Route B — LiteLLM provider prefix (fallback; same key):** +```bash +pier run -p deep-swe/tasks --agent mini-swe-agent \ + --model openrouter/minimax/minimax-m3 +``` + +Notes: +- Slug = the exact OpenRouter slug. Verify it at openrouter.ai/models before running. +- Free/zero-cost models: OpenRouter cost tracking can error. Set `export MSWEA_COST_TRACKING=ignore_errors`. +- Flag spelling can vary by version — confirm with `pier run --help` and `mini --help`. + +## Smoke test FIRST (1 task — do this before any full run) + +Always validate end-to-end wiring on a single task before spending tokens on the corpus: + +```bash +pier run -p deep-swe/tasks/ --agent mini-swe-agent \ + --model minimax/minimax-m3 --model-class openrouter +# list available task ids: +ls deep-swe/tasks +``` + +Pass criteria: run completes, model returns actions (not auth/format errors), a score/trajectory is emitted. If it 401s → key wrong. If "provider not provided"/"model not mapped" → fix slug or switch route. + +## Subset run (deterministic sample) + +```bash +pier run -p deep-swe/tasks --agent mini-swe-agent \ + --model minimax/minimax-m3 --model-class openrouter \ + --n-tasks 10 --sample-seed 0 +``` + +## Full 113-task corpus (costs tokens + time — confirm with user first) + +```bash +pier run -p deep-swe/tasks --agent mini-swe-agent \ + --model minimax/minimax-m3 --model-class openrouter +# add `--env modal` to run in parallel Modal sandboxes (needs Modal configured) +``` + +## Output & leaderboard + +- Trials land in `jobs///`. Inspect with `pier view jobs/`, `pier analyze jobs/`, or `pier critique run jobs/`. +- Report: the exact command used, pass/fail, score, and any blockers. +- Submit results for the official leaderboard to: **** + +## Failure modes + +| Symptom | Cause | Fix | +|---|---|---| +| HTTP 401 | bad/missing key | re-export `OPENROUTER_API_KEY` | +| "LLM Provider NOT provided" | missing slug prefix | use Route B `openrouter/...` or Route A with `--model-class openrouter` | +| "model isn't mapped"/cost error | unknown cost for model | `export MSWEA_COST_TRACKING=ignore_errors` | +| unknown flag | version drift | check `pier run --help` | + +## Limitations + +- Adapted from `davidondrej/skills`; verify local paths, tools, credentials, and agent features before acting. +- For commands, remote access, scheduling, browser automation, or file-changing workflows, get explicit user approval and confirm the target environment first. diff --git a/antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/setup-help/SKILL.md b/antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/setup-help/SKILL.md new file mode 100644 index 00000000..5f9a5e80 --- /dev/null +++ b/antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/setup-help/SKILL.md @@ -0,0 +1,50 @@ +--- +name: setup-help +description: "Walk a user through setup or installation one step at a time with the remaining steps visible." +category: productivity +risk: safe +source: community +source_repo: davidondrej/skills +source_type: community +date_added: "2026-07-07" +author: davidondrej +tags: [setup, onboarding, installation] +tools: [claude, codex] +license: "MIT" +license_source: "https://github.com/davidondrej/skills/blob/main/LICENSE" +disable-model-invocation: true +--- + +# setup-help + +## When to Use + +- Use when the user asks to set up, install, configure, or get something working step by step. +- Use when the setup has multiple steps and benefits from one-at-a-time guidance. + +Guide the user through any setup, one step at a time, in plain English. + +## Response format (every single response) + +1. **Current step** — ONE atomic action. A single click, field, or command — not a checklist. 1–2 lines max. If it needs sub-steps, it's too big: split it and push the rest into "Still remaining". Plain English. +2. A `----` divider. +3. **Still remaining** — a numbered list of the setup steps left after this one. Max 8 items, ever. + +Repeat this format for every response until setup is done. + +## Rules + +- Before the first step, build a complete canonical checklist from the user's outline, repo/docs, current screen, and any discovered prerequisites. +- The **Still remaining** list must never exceed 8 items — more is overwhelming. Track ALL unfinished checklist items internally; if more than 8 remain, show the nearest steps individually and merge the later ones into broader phase-level items so the list stays at 8 or fewer. Never silently drop a required step from internal tracking. +- If a new required step is discovered mid-setup, add it to **Still remaining** immediately in the correct order. +- Before every response, audit the current step plus **Still remaining** against the canonical checklist. If any unfinished step is missing, fix the list before replying. +- Only give instructions for the current step. Do not jump ahead. +- Keep it concise. Short sentences. No filler. +- After the user finishes a step, move the next "remaining" item up to "Current step". +- Update the "Still remaining" list each time as steps get done. +- When nothing remains, say setup is complete instead of showing the list. + +## Limitations + +- Adapted from `davidondrej/skills`; verify local paths, tools, credentials, and agent features before acting. +- For commands, remote access, scheduling, browser automation, or file-changing workflows, get explicit user approval and confirm the target environment first. diff --git a/antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/short/SKILL.md b/antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/short/SKILL.md new file mode 100644 index 00000000..292afa11 --- /dev/null +++ b/antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/short/SKILL.md @@ -0,0 +1,28 @@ +--- +name: short +description: "Rewrite the previous response more briefly while preserving the substance." +category: writing +risk: safe +source: community +source_repo: davidondrej/skills +source_type: community +date_added: "2026-07-07" +author: davidondrej +tags: [writing, editing, concise] +tools: [claude, codex] +license: "MIT" +license_source: "https://github.com/davidondrej/skills/blob/main/LICENSE" +disable-model-invocation: true +--- + +rewrite your last response to be simpler & shorter. do not do anything else. + +## When to Use + +- Use when the user asks for a shorter, simpler, or TLDR version of the previous response. +- Use when the current answer should be compressed without changing the substance. + +## Limitations + +- Adapted from `davidondrej/skills`; verify local paths, tools, credentials, and agent features before acting. +- For commands, remote access, scheduling, browser automation, or file-changing workflows, get explicit user approval and confirm the target environment first. diff --git a/antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/taisly-social-media-posting/SKILL.md b/antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/taisly-social-media-posting/SKILL.md new file mode 100644 index 00000000..56e02c86 --- /dev/null +++ b/antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/taisly-social-media-posting/SKILL.md @@ -0,0 +1,79 @@ +--- +name: taisly-social-media-posting +description: "Use Taisly Agent Kit to prepare and publish approved short-form video posts across TikTok, Instagram Reels, YouTube Shorts, X, and Facebook." +category: marketing +risk: critical +source: community +source_repo: taisly/agent +source_type: community +date_added: "2026-07-07" +author: taisly +tags: [social-media, video, publishing, mcp, cli, sdk, tiktok, instagram, youtube-shorts, x, facebook] +tools: [codex, claude] +license: "MIT" +license_source: "https://github.com/taisly/agent/blob/main/LICENSE" +--- + +# Taisly Social Media Posting + +## Overview + +Taisly Agent Kit provides an MCP server, CLI, SDK, and agent docs for publishing +approved short-form videos to TikTok, Instagram Reels, YouTube Shorts, X, and +Facebook. Use this skill to plan a posting workflow around Taisly, verify that +the user has the required account access, and keep publishing actions behind an +explicit confirmation gate. + +## When to Use + +- Use when the user wants an agent-assisted workflow for publishing short-form + videos with Taisly. +- Use when the user mentions `taisly/agent`, the Taisly MCP server, Taisly CLI, + or the Taisly SDK. +- Use when coordinating final approval, caption metadata, target platforms, and + posting status for social video distribution. + +## Workflow + +1. Confirm the exact target platforms and video asset paths or URLs. +2. Confirm that the user has already connected the relevant social accounts in + Taisly or has provided the intended MCP/CLI setup path. +3. Draft or review captions, hashtags, titles, descriptions, and platform + metadata before any publishing command is run. +4. Present a final posting summary with platforms, media, captions, visibility, + and timing. +5. Wait for explicit user approval before invoking any Taisly command, MCP tool, + SDK call, or other state-changing publishing action. + +## Examples + +```text +Use Taisly to prepare this product demo for TikTok, Reels, Shorts, X, and Facebook. +Review the caption and metadata first; do not publish until I approve. +``` + +```text +Set up a Taisly MCP publishing workflow for approved video assets in ./campaign. +``` + +## Safety Notes + +- Treat publish, schedule, delete, account-linking, and metadata update actions + as state-changing operations requiring explicit user approval. +- Never request, print, or store platform passwords, OAuth secrets, API keys, or + session tokens. Use the user's existing Taisly/MCP/CLI authentication flow. +- If the requested action could violate platform policies, brand review, legal + constraints, or creator permissions, pause and ask for confirmation. + +## Limitations + +- Platform availability, media requirements, and API behavior depend on the + upstream Taisly Agent Kit and connected platform accounts. +- This skill does not replace human review for legal, brand, copyright, or + platform-compliance decisions. +- Verify the current Taisly setup instructions from `taisly/agent` before + installing or running tools in a new environment. + +## Source + +- GitHub: [taisly/agent](https://github.com/taisly/agent) diff --git a/antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/vps-server-management/SKILL.md b/antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/vps-server-management/SKILL.md new file mode 100644 index 00000000..f44a9045 --- /dev/null +++ b/antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/vps-server-management/SKILL.md @@ -0,0 +1,72 @@ +--- +name: vps-server-management +description: "Manage authorized VPS hosts and server-side agents through cautious SSH and operations workflows." +category: operations +risk: critical +source: community +source_repo: davidondrej/skills +source_type: community +date_added: "2026-07-07" +author: davidondrej +tags: [vps, ssh, server-management] +tools: [claude, codex] +license: "MIT" +license_source: "https://github.com/davidondrej/skills/blob/main/LICENSE" +--- + +# VPS Server Management + +## When to Use + +- Use when the user asks to operate an authorized VPS or agent running on a remote host. +- Use when SSH, deployment, restart, status, or log inspection is needed with explicit permission. + +Source of truth: `library/infrastructure.md` (read it for the latest — IPs/expirations change). + +## Servers (Hostinger VPS) — 3 total + +| Hostname | IP | OS | Purpose | Expires | +|---|---|---|---|---| +| openclaw-server | | Ubuntu 24.04 (Dokploy) | OpenClaw — personal instance | | +| n8n-server | | Ubuntu 24.04 (n8n) | All n8n workflow automations (primary) | | +| hermes-server | | Ubuntu 24.04 | Hermes Agent — Discord gateway (Vilnius, LT) | | + +SSH as `root@`. + +## Access levels (never share higher than needed) + +1. **App login** — e.g. `app.example.hstgr.cloud`. Build/edit workflows, no server access. Safest to share. +2. **VPS SSH** — `root@`. Docker, files, system config. Trusted technical people only. +3. **Hostinger hPanel** — `hpanel.hostinger.com`. Billing, reboot, OS reinstall. Exposes SSH creds + browser terminal, so it grants server access too. The user only. + +## Managing a VPS via an agent + +For multi-step or exploratory work, **SSH into the box first and launch the agent ON the VPS** (e.g. `codex --yolo`), then talk to that local-on-server agent — it has full filesystem/process context and avoids fragile SSH round-trips. For short command sequences (update, config change, restart), driving an existing SSH session directly (e.g. via a cmux pane) is fine. + +When checking on a remote/on-box agent, send the user one concise status line each time: what it is doing and whether it is on track. + +Claude Code cmux note: after Claude finishes, it may prefill a predicted next user message; that draft is Claude, not the user speaking. + +## Agents on servers + +- **OpenClaw** → openclaw-server (managed via Dokploy). +- **Hermes** → hermes-server (Discord gateway). Setup/config docs in `library/hermes/`. +- **n8n** → n8n-server. + +## Hermes ops (on hermes-server) + +```bash +hermes --version # shows version + commits behind +hermes update # auto-snapshots, updates deps, rebuilds web UI, restarts gateway itself +hermes gateway status|restart +journalctl --user -u hermes-gateway --since '5 min ago' --no-pager # gateway logs (systemd USER service) +``` + +- **Default model** lives in `~/.hermes/config.yaml` under `model.provider` + `model.default` — NOT in `.env`. Change via `hermes model` (interactive) or edit the yaml directly, then `hermes gateway restart` to propagate to gateways. +- npm `EBADENGINE` warnings during update (deps want Node >=24, box runs v22) are non-blocking — do not "fix" them. +- Deeper docs (Discord/Slack/WhatsApp setup, file structure, vision config): `library/hermes/`. + +## Limitations + +- Adapted from `davidondrej/skills`; verify local paths, tools, credentials, and agent features before acting. +- For commands, remote access, scheduling, browser automation, or file-changing workflows, get explicit user approval and confirm the target environment first. diff --git a/antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/youtube-transcript/SKILL.md b/antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/youtube-transcript/SKILL.md new file mode 100644 index 00000000..9ceb64e0 --- /dev/null +++ b/antigravity-awesome-skills/plugins/antigravity-awesome-skills/skills/youtube-transcript/SKILL.md @@ -0,0 +1,120 @@ +--- +name: youtube-transcript +description: "Fetch YouTube transcripts through DeepAPI or local fallback tooling and save clean text output." +category: research +risk: safe +source: community +source_repo: davidondrej/skills +source_type: community +date_added: "2026-07-07" +author: davidondrej +tags: [youtube, transcripts, research] +tools: [claude, codex] +license: "MIT" +license_source: "https://github.com/davidondrej/skills/blob/main/LICENSE" +--- + +# YouTube Transcript (via DeepAPI, yt-dlp fallback) + +## When to Use + +- Use when the user asks for a YouTube transcript, captions, subtitles, or spoken-content extraction. +- Use when DeepAPI or a local fallback can fetch the transcript safely. + +Fetch a YouTube video's transcript and save a clean raw `.txt` file. Primary path is DeepAPI `POST /v1/scrape/youtube/transcript`. It runs server-side, so it avoids the local-IP bot flagging that plagues yt-dlp. + +## Save location +- If the user is in a real project/working dir → save there. +- Otherwise (no dir given, or cwd makes no sense) → save to `~/Downloads`. +- **Always name the file `Channel_Title` with spaces replaced by `_`** (e.g. `David_Ondrej_title_of_video.txt`). If metadata is unavailable, fall back to the video ID. + +## Primary path — DeepAPI + +`DEEPAPI_API_KEY` must already be present in the environment. Do not read shell +startup files or print secrets: + +```bash +test -n "$DEEPAPI_API_KEY" || { echo "DEEPAPI_API_KEY is not set"; exit 1; } +BASE=${DEEPAPI_API_BASE_URL:-https://deepapi.co} +``` + +Run the scrape (keep the Idempotency-Key; retries must reuse the SAME one): + +```bash +IDK=$(uuidgen) +curl -s --max-time 120 "$BASE/v1/scrape/youtube/transcript" \ + -H "Authorization: Bearer $DEEPAPI_API_KEY" \ + -H "Content-Type: application/json" \ + -H "Idempotency-Key: $IDK" \ + -d '{"url": "VIDEO_URL", "maxCostUsd": "0.05", "waitForFinishSecs": 60}' \ + > /tmp/yt_transcript.json +``` + +- Non-English videos: add `"language": "de"` (etc.) to the body. +- `status: running` → wait `next.afterSecs`, then `curl "$BASE$(jq -r '.next.path' /tmp/yt_transcript.json)" -H "Authorization: Bearer $KEY"` until `succeeded` or `failed`. + +Extract the text and save it: + +```bash +jq -r '.status' /tmp/yt_transcript.json # succeeded | running | failed +jq -r '.output[0].text' /tmp/yt_transcript.json > "$OUT/$NAME.txt" +jq -r '.debitMicrousd' /tmp/yt_transcript.json # cost (50000 = $0.05) +``` + +`.output[0].segments` also has timed segments (`startSecs`, `durationSecs`, `text`) if the user wants timestamps. Empty `output` = video has no captions; report it, don't retry. + +For the `Channel_Title` filename, get metadata with a quick `yt-dlp --print "%(channel)s|%(title)s" --skip-download "URL"`; if that fails, use the video ID. + +## When to fall back to yt-dlp + +- `DEEPAPI_API_KEY` missing from the environment. +- HTTP 402 `insufficient_credits` (tell the user to top up at deepapi.co/credits first; fall back only if they're unavailable). +- DeepAPI request `failed` twice. + +Tell the user whenever you fall back — a fallback means the product missed a real use case. + +## Fallback path — yt-dlp (local) + +```bash +OUT="$(pwd)" # or ~/Downloads if cwd makes no sense +META=$(yt-dlp --print "%(channel)s|%(title)s" --skip-download "URL") +NAME=$(echo "$META" | tr '| ' '__' | tr -cd '[:alnum:]_.-') # "Channel_Title", spaces -> _, strip unsafe chars +yt-dlp --skip-download --write-subs --write-auto-subs \ + --sub-langs "en.*" --sub-format json3 \ + -o "$OUT/$NAME.%(ext)s" "URL" +``` + +- Fall back `channel` → `uploader` → `uploader_id` if `channel` is null. +- `--skip-download` = captions only. `--write-subs` + `--write-auto-subs` = manual first, auto as fallback. +- **Always use `json3`, never VTT/SRT** — auto VTT repeats every line twice (rolling captions). + +Flatten json3 → raw text: + +```bash +python3 - "$OUT" <<'PY' +import json, html, re, glob, sys, pathlib +f = glob.glob(sys.argv[1] + "/*.json3") +if not f: sys.exit("no json3 file") +data = json.load(open(f[0], encoding="utf-8")) +parts = ["".join(s.get("utf8","") for s in e.get("segs") or []) for e in data.get("events", [])] +txt = re.sub(r"\s+", " ", html.unescape(" ".join(p.strip() for p in parts if p.strip()))).strip() +out = pathlib.Path(f[0]).with_suffix(".txt") +out.write_text(txt, encoding="utf-8"); print(out) +PY +``` + +### yt-dlp failure handling +- Non-English / unknown language: run `yt-dlp --list-subs "URL"` first, then set `--sub-langs`. +- Newer yt-dlp may need `deno` on PATH for YouTube extraction. +- On first failure: run `yt-dlp -U` once, retry once, then stop. +- **429 / "Sign in to confirm you're not a bot"** = IP flagged. STOP — do NOT retry in a loop (makes it worse). +- Never fall back to downloading audio for Whisper unless the user explicitly asks. + +## Output + +Report the saved path; print the text if short. If DeepAPI was used, also report the cost in dollars. + +## Limitations + +- Adapted from `davidondrej/skills`; verify local paths, tools, credentials, and agent features before acting. +- For commands, remote access, scheduling, browser automation, or file-changing workflows, get explicit user approval and confirm the target environment first. diff --git a/antigravity-awesome-skills/plugins/antigravity-bundle-aas-accessibility-inclusive-ux/.claude-plugin/plugin.json b/antigravity-awesome-skills/plugins/antigravity-bundle-aas-accessibility-inclusive-ux/.claude-plugin/plugin.json index 0d9ad30c..cc98c6d9 100644 --- a/antigravity-awesome-skills/plugins/antigravity-bundle-aas-accessibility-inclusive-ux/.claude-plugin/plugin.json +++ b/antigravity-awesome-skills/plugins/antigravity-bundle-aas-accessibility-inclusive-ux/.claude-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "antigravity-bundle-aas-accessibility-inclusive-ux", - "version": "13.11.0", + "version": "13.12.0", "description": "Editorial \"AAS Accessibility & Inclusive UX\" bundle for Claude Code from Antigravity Awesome Skills.", "author": { "name": "sickn33 and contributors", diff --git a/antigravity-awesome-skills/plugins/antigravity-bundle-aas-accessibility-inclusive-ux/.codex-plugin/plugin.json b/antigravity-awesome-skills/plugins/antigravity-bundle-aas-accessibility-inclusive-ux/.codex-plugin/plugin.json index 49e29665..607e39aa 100644 --- a/antigravity-awesome-skills/plugins/antigravity-bundle-aas-accessibility-inclusive-ux/.codex-plugin/plugin.json +++ b/antigravity-awesome-skills/plugins/antigravity-bundle-aas-accessibility-inclusive-ux/.codex-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "agyb-aas-accessibility-inclusive-ux", - "version": "13.11.0", + "version": "13.12.0", "description": "Install the \"AAS Accessibility & Inclusive UX\" workflow plugin from Antigravity Awesome Skills.", "author": { "name": "sickn33 and contributors", diff --git a/antigravity-awesome-skills/plugins/antigravity-bundle-aas-agent-mcp-builder/.claude-plugin/plugin.json b/antigravity-awesome-skills/plugins/antigravity-bundle-aas-agent-mcp-builder/.claude-plugin/plugin.json index 597038e6..5b30e2ba 100644 --- a/antigravity-awesome-skills/plugins/antigravity-bundle-aas-agent-mcp-builder/.claude-plugin/plugin.json +++ b/antigravity-awesome-skills/plugins/antigravity-bundle-aas-agent-mcp-builder/.claude-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "antigravity-bundle-aas-agent-mcp-builder", - "version": "13.11.0", + "version": "13.12.0", "description": "Editorial \"AAS Agent & MCP Builder\" bundle for Claude Code from Antigravity Awesome Skills.", "author": { "name": "sickn33 and contributors", diff --git a/antigravity-awesome-skills/plugins/antigravity-bundle-aas-agent-mcp-builder/.codex-plugin/plugin.json b/antigravity-awesome-skills/plugins/antigravity-bundle-aas-agent-mcp-builder/.codex-plugin/plugin.json index b7f303fa..f093fa4d 100644 --- a/antigravity-awesome-skills/plugins/antigravity-bundle-aas-agent-mcp-builder/.codex-plugin/plugin.json +++ b/antigravity-awesome-skills/plugins/antigravity-bundle-aas-agent-mcp-builder/.codex-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "agyb-aas-agent-mcp-builder", - "version": "13.11.0", + "version": "13.12.0", "description": "Install the \"AAS Agent & MCP Builder\" workflow plugin from Antigravity Awesome Skills.", "author": { "name": "sickn33 and contributors", diff --git a/antigravity-awesome-skills/plugins/antigravity-bundle-aas-ai-product-evaluation-ops/.claude-plugin/plugin.json b/antigravity-awesome-skills/plugins/antigravity-bundle-aas-ai-product-evaluation-ops/.claude-plugin/plugin.json index 2d189ff5..1312b278 100644 --- a/antigravity-awesome-skills/plugins/antigravity-bundle-aas-ai-product-evaluation-ops/.claude-plugin/plugin.json +++ b/antigravity-awesome-skills/plugins/antigravity-bundle-aas-ai-product-evaluation-ops/.claude-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "antigravity-bundle-aas-ai-product-evaluation-ops", - "version": "13.11.0", + "version": "13.12.0", "description": "Editorial \"AAS AI Product & Evaluation Ops\" bundle for Claude Code from Antigravity Awesome Skills.", "author": { "name": "sickn33 and contributors", diff --git a/antigravity-awesome-skills/plugins/antigravity-bundle-aas-ai-product-evaluation-ops/.codex-plugin/plugin.json b/antigravity-awesome-skills/plugins/antigravity-bundle-aas-ai-product-evaluation-ops/.codex-plugin/plugin.json index a1aec4f3..a9f07dce 100644 --- a/antigravity-awesome-skills/plugins/antigravity-bundle-aas-ai-product-evaluation-ops/.codex-plugin/plugin.json +++ b/antigravity-awesome-skills/plugins/antigravity-bundle-aas-ai-product-evaluation-ops/.codex-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "agyb-aas-ai-product-evaluation-ops", - "version": "13.11.0", + "version": "13.12.0", "description": "Install the \"AAS AI Product & Evaluation Ops\" workflow plugin from Antigravity Awesome Skills.", "author": { "name": "sickn33 and contributors", diff --git a/antigravity-awesome-skills/plugins/antigravity-bundle-aas-api-platform-builder/.claude-plugin/plugin.json b/antigravity-awesome-skills/plugins/antigravity-bundle-aas-api-platform-builder/.claude-plugin/plugin.json index 37caf6fd..1a813387 100644 --- a/antigravity-awesome-skills/plugins/antigravity-bundle-aas-api-platform-builder/.claude-plugin/plugin.json +++ b/antigravity-awesome-skills/plugins/antigravity-bundle-aas-api-platform-builder/.claude-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "antigravity-bundle-aas-api-platform-builder", - "version": "13.11.0", + "version": "13.12.0", "description": "Editorial \"AAS API Platform Builder\" bundle for Claude Code from Antigravity Awesome Skills.", "author": { "name": "sickn33 and contributors", diff --git a/antigravity-awesome-skills/plugins/antigravity-bundle-aas-api-platform-builder/.codex-plugin/plugin.json b/antigravity-awesome-skills/plugins/antigravity-bundle-aas-api-platform-builder/.codex-plugin/plugin.json index a767223b..5e3df8fa 100644 --- a/antigravity-awesome-skills/plugins/antigravity-bundle-aas-api-platform-builder/.codex-plugin/plugin.json +++ b/antigravity-awesome-skills/plugins/antigravity-bundle-aas-api-platform-builder/.codex-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "agyb-aas-api-platform-builder", - "version": "13.11.0", + "version": "13.12.0", "description": "Install the \"AAS API Platform Builder\" workflow plugin from Antigravity Awesome Skills.", "author": { "name": "sickn33 and contributors", diff --git a/antigravity-awesome-skills/plugins/antigravity-bundle-aas-automation-builder/.claude-plugin/plugin.json b/antigravity-awesome-skills/plugins/antigravity-bundle-aas-automation-builder/.claude-plugin/plugin.json index b64876d1..858dfb25 100644 --- a/antigravity-awesome-skills/plugins/antigravity-bundle-aas-automation-builder/.claude-plugin/plugin.json +++ b/antigravity-awesome-skills/plugins/antigravity-bundle-aas-automation-builder/.claude-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "antigravity-bundle-aas-automation-builder", - "version": "13.11.0", + "version": "13.12.0", "description": "Editorial \"AAS Automation Builder\" bundle for Claude Code from Antigravity Awesome Skills.", "author": { "name": "sickn33 and contributors", diff --git a/antigravity-awesome-skills/plugins/antigravity-bundle-aas-automation-builder/.codex-plugin/plugin.json b/antigravity-awesome-skills/plugins/antigravity-bundle-aas-automation-builder/.codex-plugin/plugin.json index 9baf4a64..3c8242d8 100644 --- a/antigravity-awesome-skills/plugins/antigravity-bundle-aas-automation-builder/.codex-plugin/plugin.json +++ b/antigravity-awesome-skills/plugins/antigravity-bundle-aas-automation-builder/.codex-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "agyb-aas-automation-builder", - "version": "13.11.0", + "version": "13.12.0", "description": "Install the \"AAS Automation Builder\" workflow plugin from Antigravity Awesome Skills.", "author": { "name": "sickn33 and contributors", diff --git a/antigravity-awesome-skills/plugins/antigravity-bundle-aas-data-analytics/.claude-plugin/plugin.json b/antigravity-awesome-skills/plugins/antigravity-bundle-aas-data-analytics/.claude-plugin/plugin.json index 0051fd39..1e2f7677 100644 --- a/antigravity-awesome-skills/plugins/antigravity-bundle-aas-data-analytics/.claude-plugin/plugin.json +++ b/antigravity-awesome-skills/plugins/antigravity-bundle-aas-data-analytics/.claude-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "antigravity-bundle-aas-data-analytics", - "version": "13.11.0", + "version": "13.12.0", "description": "Editorial \"AAS Data Analytics\" bundle for Claude Code from Antigravity Awesome Skills.", "author": { "name": "sickn33 and contributors", diff --git a/antigravity-awesome-skills/plugins/antigravity-bundle-aas-data-analytics/.codex-plugin/plugin.json b/antigravity-awesome-skills/plugins/antigravity-bundle-aas-data-analytics/.codex-plugin/plugin.json index 849a46a0..31ae6a89 100644 --- a/antigravity-awesome-skills/plugins/antigravity-bundle-aas-data-analytics/.codex-plugin/plugin.json +++ b/antigravity-awesome-skills/plugins/antigravity-bundle-aas-data-analytics/.codex-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "agyb-aas-data-analytics", - "version": "13.11.0", + "version": "13.12.0", "description": "Install the \"AAS Data Analytics\" workflow plugin from Antigravity Awesome Skills.", "author": { "name": "sickn33 and contributors", diff --git a/antigravity-awesome-skills/plugins/antigravity-bundle-aas-data-engineering-platform/.claude-plugin/plugin.json b/antigravity-awesome-skills/plugins/antigravity-bundle-aas-data-engineering-platform/.claude-plugin/plugin.json index dbf27c89..303182c7 100644 --- a/antigravity-awesome-skills/plugins/antigravity-bundle-aas-data-engineering-platform/.claude-plugin/plugin.json +++ b/antigravity-awesome-skills/plugins/antigravity-bundle-aas-data-engineering-platform/.claude-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "antigravity-bundle-aas-data-engineering-platform", - "version": "13.11.0", + "version": "13.12.0", "description": "Editorial \"AAS Data Engineering Platform\" bundle for Claude Code from Antigravity Awesome Skills.", "author": { "name": "sickn33 and contributors", diff --git a/antigravity-awesome-skills/plugins/antigravity-bundle-aas-data-engineering-platform/.codex-plugin/plugin.json b/antigravity-awesome-skills/plugins/antigravity-bundle-aas-data-engineering-platform/.codex-plugin/plugin.json index f36ce8ea..810553f6 100644 --- a/antigravity-awesome-skills/plugins/antigravity-bundle-aas-data-engineering-platform/.codex-plugin/plugin.json +++ b/antigravity-awesome-skills/plugins/antigravity-bundle-aas-data-engineering-platform/.codex-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "agyb-aas-data-engineering-platform", - "version": "13.11.0", + "version": "13.12.0", "description": "Install the \"AAS Data Engineering Platform\" workflow plugin from Antigravity Awesome Skills.", "author": { "name": "sickn33 and contributors", diff --git a/antigravity-awesome-skills/plugins/antigravity-bundle-aas-devops-cloud/.claude-plugin/plugin.json b/antigravity-awesome-skills/plugins/antigravity-bundle-aas-devops-cloud/.claude-plugin/plugin.json index 70295b8e..7fc15df9 100644 --- a/antigravity-awesome-skills/plugins/antigravity-bundle-aas-devops-cloud/.claude-plugin/plugin.json +++ b/antigravity-awesome-skills/plugins/antigravity-bundle-aas-devops-cloud/.claude-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "antigravity-bundle-aas-devops-cloud", - "version": "13.11.0", + "version": "13.12.0", "description": "Editorial \"AAS DevOps & Cloud\" bundle for Claude Code from Antigravity Awesome Skills.", "author": { "name": "sickn33 and contributors", diff --git a/antigravity-awesome-skills/plugins/antigravity-bundle-aas-devops-cloud/.codex-plugin/plugin.json b/antigravity-awesome-skills/plugins/antigravity-bundle-aas-devops-cloud/.codex-plugin/plugin.json index 1958d3ef..b49d53af 100644 --- a/antigravity-awesome-skills/plugins/antigravity-bundle-aas-devops-cloud/.codex-plugin/plugin.json +++ b/antigravity-awesome-skills/plugins/antigravity-bundle-aas-devops-cloud/.codex-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "agyb-aas-devops-cloud", - "version": "13.11.0", + "version": "13.12.0", "description": "Install the \"AAS DevOps & Cloud\" workflow plugin from Antigravity Awesome Skills.", "author": { "name": "sickn33 and contributors", diff --git a/antigravity-awesome-skills/plugins/antigravity-bundle-aas-documents-presentations/.claude-plugin/plugin.json b/antigravity-awesome-skills/plugins/antigravity-bundle-aas-documents-presentations/.claude-plugin/plugin.json index 4ff59976..08fe23f8 100644 --- a/antigravity-awesome-skills/plugins/antigravity-bundle-aas-documents-presentations/.claude-plugin/plugin.json +++ b/antigravity-awesome-skills/plugins/antigravity-bundle-aas-documents-presentations/.claude-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "antigravity-bundle-aas-documents-presentations", - "version": "13.11.0", + "version": "13.12.0", "description": "Editorial \"AAS Documents & Presentations\" bundle for Claude Code from Antigravity Awesome Skills.", "author": { "name": "sickn33 and contributors", diff --git a/antigravity-awesome-skills/plugins/antigravity-bundle-aas-documents-presentations/.codex-plugin/plugin.json b/antigravity-awesome-skills/plugins/antigravity-bundle-aas-documents-presentations/.codex-plugin/plugin.json index 8bf5a4fe..7e1f215d 100644 --- a/antigravity-awesome-skills/plugins/antigravity-bundle-aas-documents-presentations/.codex-plugin/plugin.json +++ b/antigravity-awesome-skills/plugins/antigravity-bundle-aas-documents-presentations/.codex-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "agyb-aas-documents-presentations", - "version": "13.11.0", + "version": "13.12.0", "description": "Install the \"AAS Documents & Presentations\" workflow plugin from Antigravity Awesome Skills.", "author": { "name": "sickn33 and contributors", diff --git a/antigravity-awesome-skills/plugins/antigravity-bundle-aas-localization-international-growth/.claude-plugin/plugin.json b/antigravity-awesome-skills/plugins/antigravity-bundle-aas-localization-international-growth/.claude-plugin/plugin.json index 2bbfc634..18705f85 100644 --- a/antigravity-awesome-skills/plugins/antigravity-bundle-aas-localization-international-growth/.claude-plugin/plugin.json +++ b/antigravity-awesome-skills/plugins/antigravity-bundle-aas-localization-international-growth/.claude-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "antigravity-bundle-aas-localization-international-growth", - "version": "13.11.0", + "version": "13.12.0", "description": "Editorial \"AAS Localization & International Growth\" bundle for Claude Code from Antigravity Awesome Skills.", "author": { "name": "sickn33 and contributors", diff --git a/antigravity-awesome-skills/plugins/antigravity-bundle-aas-localization-international-growth/.codex-plugin/plugin.json b/antigravity-awesome-skills/plugins/antigravity-bundle-aas-localization-international-growth/.codex-plugin/plugin.json index cf96e490..5ca59940 100644 --- a/antigravity-awesome-skills/plugins/antigravity-bundle-aas-localization-international-growth/.codex-plugin/plugin.json +++ b/antigravity-awesome-skills/plugins/antigravity-bundle-aas-localization-international-growth/.codex-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "agyb-aas-localization-international-growth", - "version": "13.11.0", + "version": "13.12.0", "description": "Install the \"AAS Localization & International Growth\" workflow plugin from Antigravity Awesome Skills.", "author": { "name": "sickn33 and contributors", diff --git a/antigravity-awesome-skills/plugins/antigravity-bundle-aas-marketing-seo-growth/.claude-plugin/plugin.json b/antigravity-awesome-skills/plugins/antigravity-bundle-aas-marketing-seo-growth/.claude-plugin/plugin.json index 259ffc29..9e41a15a 100644 --- a/antigravity-awesome-skills/plugins/antigravity-bundle-aas-marketing-seo-growth/.claude-plugin/plugin.json +++ b/antigravity-awesome-skills/plugins/antigravity-bundle-aas-marketing-seo-growth/.claude-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "antigravity-bundle-aas-marketing-seo-growth", - "version": "13.11.0", + "version": "13.12.0", "description": "Editorial \"AAS Marketing, SEO & Growth\" bundle for Claude Code from Antigravity Awesome Skills.", "author": { "name": "sickn33 and contributors", diff --git a/antigravity-awesome-skills/plugins/antigravity-bundle-aas-marketing-seo-growth/.codex-plugin/plugin.json b/antigravity-awesome-skills/plugins/antigravity-bundle-aas-marketing-seo-growth/.codex-plugin/plugin.json index 3ace93b7..e09400b1 100644 --- a/antigravity-awesome-skills/plugins/antigravity-bundle-aas-marketing-seo-growth/.codex-plugin/plugin.json +++ b/antigravity-awesome-skills/plugins/antigravity-bundle-aas-marketing-seo-growth/.codex-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "agyb-aas-marketing-seo-growth", - "version": "13.11.0", + "version": "13.12.0", "description": "Install the \"AAS Marketing, SEO & Growth\" workflow plugin from Antigravity Awesome Skills.", "author": { "name": "sickn33 and contributors", diff --git a/antigravity-awesome-skills/plugins/antigravity-bundle-aas-mobile-app-builder/.claude-plugin/plugin.json b/antigravity-awesome-skills/plugins/antigravity-bundle-aas-mobile-app-builder/.claude-plugin/plugin.json index 443797e2..0b2f5f1a 100644 --- a/antigravity-awesome-skills/plugins/antigravity-bundle-aas-mobile-app-builder/.claude-plugin/plugin.json +++ b/antigravity-awesome-skills/plugins/antigravity-bundle-aas-mobile-app-builder/.claude-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "antigravity-bundle-aas-mobile-app-builder", - "version": "13.11.0", + "version": "13.12.0", "description": "Editorial \"AAS Mobile App Builder\" bundle for Claude Code from Antigravity Awesome Skills.", "author": { "name": "sickn33 and contributors", diff --git a/antigravity-awesome-skills/plugins/antigravity-bundle-aas-mobile-app-builder/.codex-plugin/plugin.json b/antigravity-awesome-skills/plugins/antigravity-bundle-aas-mobile-app-builder/.codex-plugin/plugin.json index d2f465e2..185f55c6 100644 --- a/antigravity-awesome-skills/plugins/antigravity-bundle-aas-mobile-app-builder/.codex-plugin/plugin.json +++ b/antigravity-awesome-skills/plugins/antigravity-bundle-aas-mobile-app-builder/.codex-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "agyb-aas-mobile-app-builder", - "version": "13.11.0", + "version": "13.12.0", "description": "Install the \"AAS Mobile App Builder\" workflow plugin from Antigravity Awesome Skills.", "author": { "name": "sickn33 and contributors", diff --git a/antigravity-awesome-skills/plugins/antigravity-bundle-aas-observability-ir/.claude-plugin/plugin.json b/antigravity-awesome-skills/plugins/antigravity-bundle-aas-observability-ir/.claude-plugin/plugin.json index 57bbe1b3..6e78022c 100644 --- a/antigravity-awesome-skills/plugins/antigravity-bundle-aas-observability-ir/.claude-plugin/plugin.json +++ b/antigravity-awesome-skills/plugins/antigravity-bundle-aas-observability-ir/.claude-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "antigravity-bundle-aas-observability-ir", - "version": "13.11.0", + "version": "13.12.0", "description": "Editorial \"AAS Observability IR\" bundle for Claude Code from Antigravity Awesome Skills.", "author": { "name": "sickn33 and contributors", diff --git a/antigravity-awesome-skills/plugins/antigravity-bundle-aas-observability-ir/.codex-plugin/plugin.json b/antigravity-awesome-skills/plugins/antigravity-bundle-aas-observability-ir/.codex-plugin/plugin.json index f9b114f3..b2b6a32b 100644 --- a/antigravity-awesome-skills/plugins/antigravity-bundle-aas-observability-ir/.codex-plugin/plugin.json +++ b/antigravity-awesome-skills/plugins/antigravity-bundle-aas-observability-ir/.codex-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "agyb-aas-observability-ir", - "version": "13.11.0", + "version": "13.12.0", "description": "Install the \"AAS Observability IR\" workflow plugin from Antigravity Awesome Skills.", "author": { "name": "sickn33 and contributors", diff --git a/antigravity-awesome-skills/plugins/antigravity-bundle-aas-oss-maintainer/.claude-plugin/plugin.json b/antigravity-awesome-skills/plugins/antigravity-bundle-aas-oss-maintainer/.claude-plugin/plugin.json index 83bc65eb..e1f203ca 100644 --- a/antigravity-awesome-skills/plugins/antigravity-bundle-aas-oss-maintainer/.claude-plugin/plugin.json +++ b/antigravity-awesome-skills/plugins/antigravity-bundle-aas-oss-maintainer/.claude-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "antigravity-bundle-aas-oss-maintainer", - "version": "13.11.0", + "version": "13.12.0", "description": "Editorial \"AAS OSS Maintainer\" bundle for Claude Code from Antigravity Awesome Skills.", "author": { "name": "sickn33 and contributors", diff --git a/antigravity-awesome-skills/plugins/antigravity-bundle-aas-oss-maintainer/.codex-plugin/plugin.json b/antigravity-awesome-skills/plugins/antigravity-bundle-aas-oss-maintainer/.codex-plugin/plugin.json index 6d18f3e5..1eb5bce9 100644 --- a/antigravity-awesome-skills/plugins/antigravity-bundle-aas-oss-maintainer/.codex-plugin/plugin.json +++ b/antigravity-awesome-skills/plugins/antigravity-bundle-aas-oss-maintainer/.codex-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "agyb-aas-oss-maintainer", - "version": "13.11.0", + "version": "13.12.0", "description": "Install the \"AAS OSS Maintainer\" workflow plugin from Antigravity Awesome Skills.", "author": { "name": "sickn33 and contributors", diff --git a/antigravity-awesome-skills/plugins/antigravity-bundle-aas-privacy-compliance-engineering/.claude-plugin/plugin.json b/antigravity-awesome-skills/plugins/antigravity-bundle-aas-privacy-compliance-engineering/.claude-plugin/plugin.json index 5febb9bd..378a23af 100644 --- a/antigravity-awesome-skills/plugins/antigravity-bundle-aas-privacy-compliance-engineering/.claude-plugin/plugin.json +++ b/antigravity-awesome-skills/plugins/antigravity-bundle-aas-privacy-compliance-engineering/.claude-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "antigravity-bundle-aas-privacy-compliance-engineering", - "version": "13.11.0", + "version": "13.12.0", "description": "Editorial \"AAS Privacy & Compliance Engineering\" bundle for Claude Code from Antigravity Awesome Skills.", "author": { "name": "sickn33 and contributors", diff --git a/antigravity-awesome-skills/plugins/antigravity-bundle-aas-privacy-compliance-engineering/.codex-plugin/plugin.json b/antigravity-awesome-skills/plugins/antigravity-bundle-aas-privacy-compliance-engineering/.codex-plugin/plugin.json index cb0f17c0..ce8083a9 100644 --- a/antigravity-awesome-skills/plugins/antigravity-bundle-aas-privacy-compliance-engineering/.codex-plugin/plugin.json +++ b/antigravity-awesome-skills/plugins/antigravity-bundle-aas-privacy-compliance-engineering/.codex-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "agyb-aas-privacy-compliance-engineering", - "version": "13.11.0", + "version": "13.12.0", "description": "Install the \"AAS Privacy & Compliance Engineering\" workflow plugin from Antigravity Awesome Skills.", "author": { "name": "sickn33 and contributors", diff --git a/antigravity-awesome-skills/plugins/antigravity-bundle-aas-product-design-studio/.claude-plugin/plugin.json b/antigravity-awesome-skills/plugins/antigravity-bundle-aas-product-design-studio/.claude-plugin/plugin.json index fce52c1d..59af5ea6 100644 --- a/antigravity-awesome-skills/plugins/antigravity-bundle-aas-product-design-studio/.claude-plugin/plugin.json +++ b/antigravity-awesome-skills/plugins/antigravity-bundle-aas-product-design-studio/.claude-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "antigravity-bundle-aas-product-design-studio", - "version": "13.11.0", + "version": "13.12.0", "description": "Editorial \"AAS Product Design Studio\" bundle for Claude Code from Antigravity Awesome Skills.", "author": { "name": "sickn33 and contributors", diff --git a/antigravity-awesome-skills/plugins/antigravity-bundle-aas-product-design-studio/.codex-plugin/plugin.json b/antigravity-awesome-skills/plugins/antigravity-bundle-aas-product-design-studio/.codex-plugin/plugin.json index 757057ca..410315d5 100644 --- a/antigravity-awesome-skills/plugins/antigravity-bundle-aas-product-design-studio/.codex-plugin/plugin.json +++ b/antigravity-awesome-skills/plugins/antigravity-bundle-aas-product-design-studio/.codex-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "agyb-aas-product-design-studio", - "version": "13.11.0", + "version": "13.12.0", "description": "Install the \"AAS Product Design Studio\" workflow plugin from Antigravity Awesome Skills.", "author": { "name": "sickn33 and contributors", diff --git a/antigravity-awesome-skills/plugins/antigravity-bundle-aas-python-api-builder/.claude-plugin/plugin.json b/antigravity-awesome-skills/plugins/antigravity-bundle-aas-python-api-builder/.claude-plugin/plugin.json index 33ecccf1..530220e1 100644 --- a/antigravity-awesome-skills/plugins/antigravity-bundle-aas-python-api-builder/.claude-plugin/plugin.json +++ b/antigravity-awesome-skills/plugins/antigravity-bundle-aas-python-api-builder/.claude-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "antigravity-bundle-aas-python-api-builder", - "version": "13.11.0", + "version": "13.12.0", "description": "Editorial \"AAS Python API Builder\" bundle for Claude Code from Antigravity Awesome Skills.", "author": { "name": "sickn33 and contributors", diff --git a/antigravity-awesome-skills/plugins/antigravity-bundle-aas-python-api-builder/.codex-plugin/plugin.json b/antigravity-awesome-skills/plugins/antigravity-bundle-aas-python-api-builder/.codex-plugin/plugin.json index 4e3e6f83..561bfc42 100644 --- a/antigravity-awesome-skills/plugins/antigravity-bundle-aas-python-api-builder/.codex-plugin/plugin.json +++ b/antigravity-awesome-skills/plugins/antigravity-bundle-aas-python-api-builder/.codex-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "agyb-aas-python-api-builder", - "version": "13.11.0", + "version": "13.12.0", "description": "Install the \"AAS Python API Builder\" workflow plugin from Antigravity Awesome Skills.", "author": { "name": "sickn33 and contributors", diff --git a/antigravity-awesome-skills/plugins/antigravity-bundle-aas-qa-test-automation/.claude-plugin/plugin.json b/antigravity-awesome-skills/plugins/antigravity-bundle-aas-qa-test-automation/.claude-plugin/plugin.json index 77352537..e16bd5cf 100644 --- a/antigravity-awesome-skills/plugins/antigravity-bundle-aas-qa-test-automation/.claude-plugin/plugin.json +++ b/antigravity-awesome-skills/plugins/antigravity-bundle-aas-qa-test-automation/.claude-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "antigravity-bundle-aas-qa-test-automation", - "version": "13.11.0", + "version": "13.12.0", "description": "Editorial \"AAS QA & Test Automation\" bundle for Claude Code from Antigravity Awesome Skills.", "author": { "name": "sickn33 and contributors", diff --git a/antigravity-awesome-skills/plugins/antigravity-bundle-aas-qa-test-automation/.codex-plugin/plugin.json b/antigravity-awesome-skills/plugins/antigravity-bundle-aas-qa-test-automation/.codex-plugin/plugin.json index b2724885..79453b44 100644 --- a/antigravity-awesome-skills/plugins/antigravity-bundle-aas-qa-test-automation/.codex-plugin/plugin.json +++ b/antigravity-awesome-skills/plugins/antigravity-bundle-aas-qa-test-automation/.codex-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "agyb-aas-qa-test-automation", - "version": "13.11.0", + "version": "13.12.0", "description": "Install the \"AAS QA & Test Automation\" workflow plugin from Antigravity Awesome Skills.", "author": { "name": "sickn33 and contributors", diff --git a/antigravity-awesome-skills/plugins/antigravity-bundle-aas-saas-launch-revenue/.claude-plugin/plugin.json b/antigravity-awesome-skills/plugins/antigravity-bundle-aas-saas-launch-revenue/.claude-plugin/plugin.json index 0e2240fd..6ecba783 100644 --- a/antigravity-awesome-skills/plugins/antigravity-bundle-aas-saas-launch-revenue/.claude-plugin/plugin.json +++ b/antigravity-awesome-skills/plugins/antigravity-bundle-aas-saas-launch-revenue/.claude-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "antigravity-bundle-aas-saas-launch-revenue", - "version": "13.11.0", + "version": "13.12.0", "description": "Editorial \"AAS SaaS Launch & Revenue\" bundle for Claude Code from Antigravity Awesome Skills.", "author": { "name": "sickn33 and contributors", diff --git a/antigravity-awesome-skills/plugins/antigravity-bundle-aas-saas-launch-revenue/.codex-plugin/plugin.json b/antigravity-awesome-skills/plugins/antigravity-bundle-aas-saas-launch-revenue/.codex-plugin/plugin.json index 0fd0aa2d..c235b415 100644 --- a/antigravity-awesome-skills/plugins/antigravity-bundle-aas-saas-launch-revenue/.codex-plugin/plugin.json +++ b/antigravity-awesome-skills/plugins/antigravity-bundle-aas-saas-launch-revenue/.codex-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "agyb-aas-saas-launch-revenue", - "version": "13.11.0", + "version": "13.12.0", "description": "Install the \"AAS SaaS Launch & Revenue\" workflow plugin from Antigravity Awesome Skills.", "author": { "name": "sickn33 and contributors", diff --git a/antigravity-awesome-skills/plugins/antigravity-bundle-aas-secure-app-builder/.claude-plugin/plugin.json b/antigravity-awesome-skills/plugins/antigravity-bundle-aas-secure-app-builder/.claude-plugin/plugin.json index 069f8ac1..d3159196 100644 --- a/antigravity-awesome-skills/plugins/antigravity-bundle-aas-secure-app-builder/.claude-plugin/plugin.json +++ b/antigravity-awesome-skills/plugins/antigravity-bundle-aas-secure-app-builder/.claude-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "antigravity-bundle-aas-secure-app-builder", - "version": "13.11.0", + "version": "13.12.0", "description": "Editorial \"AAS Secure App Builder\" bundle for Claude Code from Antigravity Awesome Skills.", "author": { "name": "sickn33 and contributors", diff --git a/antigravity-awesome-skills/plugins/antigravity-bundle-aas-secure-app-builder/.codex-plugin/plugin.json b/antigravity-awesome-skills/plugins/antigravity-bundle-aas-secure-app-builder/.codex-plugin/plugin.json index 32326421..e2a97502 100644 --- a/antigravity-awesome-skills/plugins/antigravity-bundle-aas-secure-app-builder/.codex-plugin/plugin.json +++ b/antigravity-awesome-skills/plugins/antigravity-bundle-aas-secure-app-builder/.codex-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "agyb-aas-secure-app-builder", - "version": "13.11.0", + "version": "13.12.0", "description": "Install the \"AAS Secure App Builder\" workflow plugin from Antigravity Awesome Skills.", "author": { "name": "sickn33 and contributors", diff --git a/antigravity-awesome-skills/plugins/antigravity-bundle-aas-security-engineer/.claude-plugin/plugin.json b/antigravity-awesome-skills/plugins/antigravity-bundle-aas-security-engineer/.claude-plugin/plugin.json index b11834ab..07021384 100644 --- a/antigravity-awesome-skills/plugins/antigravity-bundle-aas-security-engineer/.claude-plugin/plugin.json +++ b/antigravity-awesome-skills/plugins/antigravity-bundle-aas-security-engineer/.claude-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "antigravity-bundle-aas-security-engineer", - "version": "13.11.0", + "version": "13.12.0", "description": "Editorial \"AAS Security Engineer\" bundle for Claude Code from Antigravity Awesome Skills.", "author": { "name": "sickn33 and contributors", diff --git a/antigravity-awesome-skills/plugins/antigravity-bundle-aas-security-engineer/.codex-plugin/plugin.json b/antigravity-awesome-skills/plugins/antigravity-bundle-aas-security-engineer/.codex-plugin/plugin.json index a92c9d4f..dd7ea93a 100644 --- a/antigravity-awesome-skills/plugins/antigravity-bundle-aas-security-engineer/.codex-plugin/plugin.json +++ b/antigravity-awesome-skills/plugins/antigravity-bundle-aas-security-engineer/.codex-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "agyb-aas-security-engineer", - "version": "13.11.0", + "version": "13.12.0", "description": "Install the \"AAS Security Engineer\" workflow plugin from Antigravity Awesome Skills.", "author": { "name": "sickn33 and contributors", diff --git a/antigravity-awesome-skills/plugins/antigravity-bundle-aas-web-app-builder/.claude-plugin/plugin.json b/antigravity-awesome-skills/plugins/antigravity-bundle-aas-web-app-builder/.claude-plugin/plugin.json index 337295a6..ed77687d 100644 --- a/antigravity-awesome-skills/plugins/antigravity-bundle-aas-web-app-builder/.claude-plugin/plugin.json +++ b/antigravity-awesome-skills/plugins/antigravity-bundle-aas-web-app-builder/.claude-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "antigravity-bundle-aas-web-app-builder", - "version": "13.11.0", + "version": "13.12.0", "description": "Editorial \"AAS Web App Builder\" bundle for Claude Code from Antigravity Awesome Skills.", "author": { "name": "sickn33 and contributors", diff --git a/antigravity-awesome-skills/plugins/antigravity-bundle-aas-web-app-builder/.codex-plugin/plugin.json b/antigravity-awesome-skills/plugins/antigravity-bundle-aas-web-app-builder/.codex-plugin/plugin.json index d6550bad..7c8f8341 100644 --- a/antigravity-awesome-skills/plugins/antigravity-bundle-aas-web-app-builder/.codex-plugin/plugin.json +++ b/antigravity-awesome-skills/plugins/antigravity-bundle-aas-web-app-builder/.codex-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "agyb-aas-web-app-builder", - "version": "13.11.0", + "version": "13.12.0", "description": "Install the \"AAS Web App Builder\" workflow plugin from Antigravity Awesome Skills.", "author": { "name": "sickn33 and contributors", diff --git a/antigravity-awesome-skills/plugins/antigravity-bundle-agent-architect/.claude-plugin/plugin.json b/antigravity-awesome-skills/plugins/antigravity-bundle-agent-architect/.claude-plugin/plugin.json index 873e43a7..4ca543c3 100644 --- a/antigravity-awesome-skills/plugins/antigravity-bundle-agent-architect/.claude-plugin/plugin.json +++ b/antigravity-awesome-skills/plugins/antigravity-bundle-agent-architect/.claude-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "antigravity-bundle-agent-architect", - "version": "13.11.0", + "version": "13.12.0", "description": "Editorial \"Agent Architect\" bundle for Claude Code from Antigravity Awesome Skills.", "author": { "name": "sickn33 and contributors", diff --git a/antigravity-awesome-skills/plugins/antigravity-bundle-agent-architect/.codex-plugin/plugin.json b/antigravity-awesome-skills/plugins/antigravity-bundle-agent-architect/.codex-plugin/plugin.json index d336f2e7..51f4c1ab 100644 --- a/antigravity-awesome-skills/plugins/antigravity-bundle-agent-architect/.codex-plugin/plugin.json +++ b/antigravity-awesome-skills/plugins/antigravity-bundle-agent-architect/.codex-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "agyb-agent-architect", - "version": "13.11.0", + "version": "13.12.0", "description": "Install the \"Agent Architect\" editorial skill bundle from Antigravity Awesome Skills.", "author": { "name": "sickn33 and contributors", diff --git a/antigravity-awesome-skills/plugins/antigravity-bundle-apple-platform-design/.claude-plugin/plugin.json b/antigravity-awesome-skills/plugins/antigravity-bundle-apple-platform-design/.claude-plugin/plugin.json index cb9f3490..17f4804c 100644 --- a/antigravity-awesome-skills/plugins/antigravity-bundle-apple-platform-design/.claude-plugin/plugin.json +++ b/antigravity-awesome-skills/plugins/antigravity-bundle-apple-platform-design/.claude-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "antigravity-bundle-apple-platform-design", - "version": "13.11.0", + "version": "13.12.0", "description": "Editorial \"Apple Platform Design\" bundle for Claude Code from Antigravity Awesome Skills.", "author": { "name": "sickn33 and contributors", diff --git a/antigravity-awesome-skills/plugins/antigravity-bundle-apple-platform-design/.codex-plugin/plugin.json b/antigravity-awesome-skills/plugins/antigravity-bundle-apple-platform-design/.codex-plugin/plugin.json index e1aada64..2217f0c5 100644 --- a/antigravity-awesome-skills/plugins/antigravity-bundle-apple-platform-design/.codex-plugin/plugin.json +++ b/antigravity-awesome-skills/plugins/antigravity-bundle-apple-platform-design/.codex-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "agyb-apple-platform-design", - "version": "13.11.0", + "version": "13.12.0", "description": "Install the \"Apple Platform Design\" editorial skill bundle from Antigravity Awesome Skills.", "author": { "name": "sickn33 and contributors", diff --git a/antigravity-awesome-skills/plugins/antigravity-bundle-architecture-design/.claude-plugin/plugin.json b/antigravity-awesome-skills/plugins/antigravity-bundle-architecture-design/.claude-plugin/plugin.json index bf99057d..61e93551 100644 --- a/antigravity-awesome-skills/plugins/antigravity-bundle-architecture-design/.claude-plugin/plugin.json +++ b/antigravity-awesome-skills/plugins/antigravity-bundle-architecture-design/.claude-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "antigravity-bundle-architecture-design", - "version": "13.11.0", + "version": "13.12.0", "description": "Editorial \"Architecture & Design\" bundle for Claude Code from Antigravity Awesome Skills.", "author": { "name": "sickn33 and contributors", diff --git a/antigravity-awesome-skills/plugins/antigravity-bundle-architecture-design/.codex-plugin/plugin.json b/antigravity-awesome-skills/plugins/antigravity-bundle-architecture-design/.codex-plugin/plugin.json index c73b28bf..8030b39a 100644 --- a/antigravity-awesome-skills/plugins/antigravity-bundle-architecture-design/.codex-plugin/plugin.json +++ b/antigravity-awesome-skills/plugins/antigravity-bundle-architecture-design/.codex-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "agyb-architecture-design", - "version": "13.11.0", + "version": "13.12.0", "description": "Install the \"Architecture & Design\" editorial skill bundle from Antigravity Awesome Skills.", "author": { "name": "sickn33 and contributors", diff --git a/antigravity-awesome-skills/plugins/antigravity-bundle-automation-builder/.claude-plugin/plugin.json b/antigravity-awesome-skills/plugins/antigravity-bundle-automation-builder/.claude-plugin/plugin.json index 7192bf8a..084a73ab 100644 --- a/antigravity-awesome-skills/plugins/antigravity-bundle-automation-builder/.claude-plugin/plugin.json +++ b/antigravity-awesome-skills/plugins/antigravity-bundle-automation-builder/.claude-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "antigravity-bundle-automation-builder", - "version": "13.11.0", + "version": "13.12.0", "description": "Editorial \"Automation Builder\" bundle for Claude Code from Antigravity Awesome Skills.", "author": { "name": "sickn33 and contributors", diff --git a/antigravity-awesome-skills/plugins/antigravity-bundle-automation-builder/.codex-plugin/plugin.json b/antigravity-awesome-skills/plugins/antigravity-bundle-automation-builder/.codex-plugin/plugin.json index e43ee748..6c2d3aa7 100644 --- a/antigravity-awesome-skills/plugins/antigravity-bundle-automation-builder/.codex-plugin/plugin.json +++ b/antigravity-awesome-skills/plugins/antigravity-bundle-automation-builder/.codex-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "agyb-automation-builder", - "version": "13.11.0", + "version": "13.12.0", "description": "Install the \"Automation Builder\" editorial skill bundle from Antigravity Awesome Skills.", "author": { "name": "sickn33 and contributors", diff --git a/antigravity-awesome-skills/plugins/antigravity-bundle-azure-ai-cloud/.claude-plugin/plugin.json b/antigravity-awesome-skills/plugins/antigravity-bundle-azure-ai-cloud/.claude-plugin/plugin.json index befc0cef..f80c62b3 100644 --- a/antigravity-awesome-skills/plugins/antigravity-bundle-azure-ai-cloud/.claude-plugin/plugin.json +++ b/antigravity-awesome-skills/plugins/antigravity-bundle-azure-ai-cloud/.claude-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "antigravity-bundle-azure-ai-cloud", - "version": "13.11.0", + "version": "13.12.0", "description": "Editorial \"Azure AI & Cloud\" bundle for Claude Code from Antigravity Awesome Skills.", "author": { "name": "sickn33 and contributors", diff --git a/antigravity-awesome-skills/plugins/antigravity-bundle-azure-ai-cloud/.codex-plugin/plugin.json b/antigravity-awesome-skills/plugins/antigravity-bundle-azure-ai-cloud/.codex-plugin/plugin.json index 10a19fea..85175071 100644 --- a/antigravity-awesome-skills/plugins/antigravity-bundle-azure-ai-cloud/.codex-plugin/plugin.json +++ b/antigravity-awesome-skills/plugins/antigravity-bundle-azure-ai-cloud/.codex-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "agyb-azure-ai-cloud", - "version": "13.11.0", + "version": "13.12.0", "description": "Install the \"Azure AI & Cloud\" editorial skill bundle from Antigravity Awesome Skills.", "author": { "name": "sickn33 and contributors", diff --git a/antigravity-awesome-skills/plugins/antigravity-bundle-business-analyst/.claude-plugin/plugin.json b/antigravity-awesome-skills/plugins/antigravity-bundle-business-analyst/.claude-plugin/plugin.json index da7cdb28..998f10da 100644 --- a/antigravity-awesome-skills/plugins/antigravity-bundle-business-analyst/.claude-plugin/plugin.json +++ b/antigravity-awesome-skills/plugins/antigravity-bundle-business-analyst/.claude-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "antigravity-bundle-business-analyst", - "version": "13.11.0", + "version": "13.12.0", "description": "Editorial \"Business Analyst\" bundle for Claude Code from Antigravity Awesome Skills.", "author": { "name": "sickn33 and contributors", diff --git a/antigravity-awesome-skills/plugins/antigravity-bundle-business-analyst/.codex-plugin/plugin.json b/antigravity-awesome-skills/plugins/antigravity-bundle-business-analyst/.codex-plugin/plugin.json index 4fad5b70..9f82da18 100644 --- a/antigravity-awesome-skills/plugins/antigravity-bundle-business-analyst/.codex-plugin/plugin.json +++ b/antigravity-awesome-skills/plugins/antigravity-bundle-business-analyst/.codex-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "agyb-business-analyst", - "version": "13.11.0", + "version": "13.12.0", "description": "Install the \"Business Analyst\" editorial skill bundle from Antigravity Awesome Skills.", "author": { "name": "sickn33 and contributors", diff --git a/antigravity-awesome-skills/plugins/antigravity-bundle-commerce-payments/.claude-plugin/plugin.json b/antigravity-awesome-skills/plugins/antigravity-bundle-commerce-payments/.claude-plugin/plugin.json index c8042a38..cc11890c 100644 --- a/antigravity-awesome-skills/plugins/antigravity-bundle-commerce-payments/.claude-plugin/plugin.json +++ b/antigravity-awesome-skills/plugins/antigravity-bundle-commerce-payments/.claude-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "antigravity-bundle-commerce-payments", - "version": "13.11.0", + "version": "13.12.0", "description": "Editorial \"Commerce & Payments\" bundle for Claude Code from Antigravity Awesome Skills.", "author": { "name": "sickn33 and contributors", diff --git a/antigravity-awesome-skills/plugins/antigravity-bundle-commerce-payments/.codex-plugin/plugin.json b/antigravity-awesome-skills/plugins/antigravity-bundle-commerce-payments/.codex-plugin/plugin.json index caa8ec7c..634f9846 100644 --- a/antigravity-awesome-skills/plugins/antigravity-bundle-commerce-payments/.codex-plugin/plugin.json +++ b/antigravity-awesome-skills/plugins/antigravity-bundle-commerce-payments/.codex-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "agyb-commerce-payments", - "version": "13.11.0", + "version": "13.12.0", "description": "Install the \"Commerce & Payments\" editorial skill bundle from Antigravity Awesome Skills.", "author": { "name": "sickn33 and contributors", diff --git a/antigravity-awesome-skills/plugins/antigravity-bundle-creative-director/.claude-plugin/plugin.json b/antigravity-awesome-skills/plugins/antigravity-bundle-creative-director/.claude-plugin/plugin.json index a8d90805..c1aa5300 100644 --- a/antigravity-awesome-skills/plugins/antigravity-bundle-creative-director/.claude-plugin/plugin.json +++ b/antigravity-awesome-skills/plugins/antigravity-bundle-creative-director/.claude-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "antigravity-bundle-creative-director", - "version": "13.11.0", + "version": "13.12.0", "description": "Editorial \"Creative Director\" bundle for Claude Code from Antigravity Awesome Skills.", "author": { "name": "sickn33 and contributors", diff --git a/antigravity-awesome-skills/plugins/antigravity-bundle-creative-director/.codex-plugin/plugin.json b/antigravity-awesome-skills/plugins/antigravity-bundle-creative-director/.codex-plugin/plugin.json index 2b7ad057..8b1365a8 100644 --- a/antigravity-awesome-skills/plugins/antigravity-bundle-creative-director/.codex-plugin/plugin.json +++ b/antigravity-awesome-skills/plugins/antigravity-bundle-creative-director/.codex-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "agyb-creative-director", - "version": "13.11.0", + "version": "13.12.0", "description": "Install the \"Creative Director\" editorial skill bundle from Antigravity Awesome Skills.", "author": { "name": "sickn33 and contributors", diff --git a/antigravity-awesome-skills/plugins/antigravity-bundle-data-analytics/.claude-plugin/plugin.json b/antigravity-awesome-skills/plugins/antigravity-bundle-data-analytics/.claude-plugin/plugin.json index 05df5459..09374a63 100644 --- a/antigravity-awesome-skills/plugins/antigravity-bundle-data-analytics/.claude-plugin/plugin.json +++ b/antigravity-awesome-skills/plugins/antigravity-bundle-data-analytics/.claude-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "antigravity-bundle-data-analytics", - "version": "13.11.0", + "version": "13.12.0", "description": "Editorial \"Data & Analytics\" bundle for Claude Code from Antigravity Awesome Skills.", "author": { "name": "sickn33 and contributors", diff --git a/antigravity-awesome-skills/plugins/antigravity-bundle-data-analytics/.codex-plugin/plugin.json b/antigravity-awesome-skills/plugins/antigravity-bundle-data-analytics/.codex-plugin/plugin.json index fadb71c3..4a557331 100644 --- a/antigravity-awesome-skills/plugins/antigravity-bundle-data-analytics/.codex-plugin/plugin.json +++ b/antigravity-awesome-skills/plugins/antigravity-bundle-data-analytics/.codex-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "agyb-data-analytics", - "version": "13.11.0", + "version": "13.12.0", "description": "Install the \"Data & Analytics\" editorial skill bundle from Antigravity Awesome Skills.", "author": { "name": "sickn33 and contributors", diff --git a/antigravity-awesome-skills/plugins/antigravity-bundle-data-engineering/.claude-plugin/plugin.json b/antigravity-awesome-skills/plugins/antigravity-bundle-data-engineering/.claude-plugin/plugin.json index 5c728f7a..7458e0a6 100644 --- a/antigravity-awesome-skills/plugins/antigravity-bundle-data-engineering/.claude-plugin/plugin.json +++ b/antigravity-awesome-skills/plugins/antigravity-bundle-data-engineering/.claude-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "antigravity-bundle-data-engineering", - "version": "13.11.0", + "version": "13.12.0", "description": "Editorial \"Data Engineering\" bundle for Claude Code from Antigravity Awesome Skills.", "author": { "name": "sickn33 and contributors", diff --git a/antigravity-awesome-skills/plugins/antigravity-bundle-data-engineering/.codex-plugin/plugin.json b/antigravity-awesome-skills/plugins/antigravity-bundle-data-engineering/.codex-plugin/plugin.json index db17d4ac..a6ba3ad6 100644 --- a/antigravity-awesome-skills/plugins/antigravity-bundle-data-engineering/.codex-plugin/plugin.json +++ b/antigravity-awesome-skills/plugins/antigravity-bundle-data-engineering/.codex-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "agyb-data-engineering", - "version": "13.11.0", + "version": "13.12.0", "description": "Install the \"Data Engineering\" editorial skill bundle from Antigravity Awesome Skills.", "author": { "name": "sickn33 and contributors", diff --git a/antigravity-awesome-skills/plugins/antigravity-bundle-ddd-evented-architecture/.claude-plugin/plugin.json b/antigravity-awesome-skills/plugins/antigravity-bundle-ddd-evented-architecture/.claude-plugin/plugin.json index daca4f1d..dbb403c3 100644 --- a/antigravity-awesome-skills/plugins/antigravity-bundle-ddd-evented-architecture/.claude-plugin/plugin.json +++ b/antigravity-awesome-skills/plugins/antigravity-bundle-ddd-evented-architecture/.claude-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "antigravity-bundle-ddd-evented-architecture", - "version": "13.11.0", + "version": "13.12.0", "description": "Editorial \"DDD & Evented Architecture\" bundle for Claude Code from Antigravity Awesome Skills.", "author": { "name": "sickn33 and contributors", diff --git a/antigravity-awesome-skills/plugins/antigravity-bundle-ddd-evented-architecture/.codex-plugin/plugin.json b/antigravity-awesome-skills/plugins/antigravity-bundle-ddd-evented-architecture/.codex-plugin/plugin.json index 9ca3ee4a..0eac6561 100644 --- a/antigravity-awesome-skills/plugins/antigravity-bundle-ddd-evented-architecture/.codex-plugin/plugin.json +++ b/antigravity-awesome-skills/plugins/antigravity-bundle-ddd-evented-architecture/.codex-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "agyb-ddd-evented-architecture", - "version": "13.11.0", + "version": "13.12.0", "description": "Install the \"DDD & Evented Architecture\" editorial skill bundle from Antigravity Awesome Skills.", "author": { "name": "sickn33 and contributors", diff --git a/antigravity-awesome-skills/plugins/antigravity-bundle-devops-cloud/.claude-plugin/plugin.json b/antigravity-awesome-skills/plugins/antigravity-bundle-devops-cloud/.claude-plugin/plugin.json index be93e18c..5f8b3711 100644 --- a/antigravity-awesome-skills/plugins/antigravity-bundle-devops-cloud/.claude-plugin/plugin.json +++ b/antigravity-awesome-skills/plugins/antigravity-bundle-devops-cloud/.claude-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "antigravity-bundle-devops-cloud", - "version": "13.11.0", + "version": "13.12.0", "description": "Editorial \"DevOps & Cloud\" bundle for Claude Code from Antigravity Awesome Skills.", "author": { "name": "sickn33 and contributors", diff --git a/antigravity-awesome-skills/plugins/antigravity-bundle-devops-cloud/.codex-plugin/plugin.json b/antigravity-awesome-skills/plugins/antigravity-bundle-devops-cloud/.codex-plugin/plugin.json index c985591b..bfba7346 100644 --- a/antigravity-awesome-skills/plugins/antigravity-bundle-devops-cloud/.codex-plugin/plugin.json +++ b/antigravity-awesome-skills/plugins/antigravity-bundle-devops-cloud/.codex-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "agyb-devops-cloud", - "version": "13.11.0", + "version": "13.12.0", "description": "Install the \"DevOps & Cloud\" editorial skill bundle from Antigravity Awesome Skills.", "author": { "name": "sickn33 and contributors", diff --git a/antigravity-awesome-skills/plugins/antigravity-bundle-documents-presentations/.claude-plugin/plugin.json b/antigravity-awesome-skills/plugins/antigravity-bundle-documents-presentations/.claude-plugin/plugin.json index 6de28e05..76b07aa8 100644 --- a/antigravity-awesome-skills/plugins/antigravity-bundle-documents-presentations/.claude-plugin/plugin.json +++ b/antigravity-awesome-skills/plugins/antigravity-bundle-documents-presentations/.claude-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "antigravity-bundle-documents-presentations", - "version": "13.11.0", + "version": "13.12.0", "description": "Editorial \"Documents & Presentations\" bundle for Claude Code from Antigravity Awesome Skills.", "author": { "name": "sickn33 and contributors", diff --git a/antigravity-awesome-skills/plugins/antigravity-bundle-documents-presentations/.codex-plugin/plugin.json b/antigravity-awesome-skills/plugins/antigravity-bundle-documents-presentations/.codex-plugin/plugin.json index 23cacd48..8928a4cb 100644 --- a/antigravity-awesome-skills/plugins/antigravity-bundle-documents-presentations/.codex-plugin/plugin.json +++ b/antigravity-awesome-skills/plugins/antigravity-bundle-documents-presentations/.codex-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "agyb-documents-presentations", - "version": "13.11.0", + "version": "13.12.0", "description": "Install the \"Documents & Presentations\" editorial skill bundle from Antigravity Awesome Skills.", "author": { "name": "sickn33 and contributors", diff --git a/antigravity-awesome-skills/plugins/antigravity-bundle-essentials/.claude-plugin/plugin.json b/antigravity-awesome-skills/plugins/antigravity-bundle-essentials/.claude-plugin/plugin.json index cd2eabc6..c6b925d2 100644 --- a/antigravity-awesome-skills/plugins/antigravity-bundle-essentials/.claude-plugin/plugin.json +++ b/antigravity-awesome-skills/plugins/antigravity-bundle-essentials/.claude-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "antigravity-bundle-essentials", - "version": "13.11.0", + "version": "13.12.0", "description": "Editorial \"Essentials\" bundle for Claude Code from Antigravity Awesome Skills.", "author": { "name": "sickn33 and contributors", diff --git a/antigravity-awesome-skills/plugins/antigravity-bundle-essentials/.codex-plugin/plugin.json b/antigravity-awesome-skills/plugins/antigravity-bundle-essentials/.codex-plugin/plugin.json index dc425919..8f73ed0f 100644 --- a/antigravity-awesome-skills/plugins/antigravity-bundle-essentials/.codex-plugin/plugin.json +++ b/antigravity-awesome-skills/plugins/antigravity-bundle-essentials/.codex-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "agyb-essentials", - "version": "13.11.0", + "version": "13.12.0", "description": "Install the \"Essentials\" editorial skill bundle from Antigravity Awesome Skills.", "author": { "name": "sickn33 and contributors", diff --git a/antigravity-awesome-skills/plugins/antigravity-bundle-expo-react-native/.claude-plugin/plugin.json b/antigravity-awesome-skills/plugins/antigravity-bundle-expo-react-native/.claude-plugin/plugin.json index 4378d5b7..12005198 100644 --- a/antigravity-awesome-skills/plugins/antigravity-bundle-expo-react-native/.claude-plugin/plugin.json +++ b/antigravity-awesome-skills/plugins/antigravity-bundle-expo-react-native/.claude-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "antigravity-bundle-expo-react-native", - "version": "13.11.0", + "version": "13.12.0", "description": "Editorial \"Expo & React Native\" bundle for Claude Code from Antigravity Awesome Skills.", "author": { "name": "sickn33 and contributors", diff --git a/antigravity-awesome-skills/plugins/antigravity-bundle-expo-react-native/.codex-plugin/plugin.json b/antigravity-awesome-skills/plugins/antigravity-bundle-expo-react-native/.codex-plugin/plugin.json index 92f2e93a..c1487da1 100644 --- a/antigravity-awesome-skills/plugins/antigravity-bundle-expo-react-native/.codex-plugin/plugin.json +++ b/antigravity-awesome-skills/plugins/antigravity-bundle-expo-react-native/.codex-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "agyb-expo-react-native", - "version": "13.11.0", + "version": "13.12.0", "description": "Install the \"Expo & React Native\" editorial skill bundle from Antigravity Awesome Skills.", "author": { "name": "sickn33 and contributors", diff --git a/antigravity-awesome-skills/plugins/antigravity-bundle-full-stack-developer/.claude-plugin/plugin.json b/antigravity-awesome-skills/plugins/antigravity-bundle-full-stack-developer/.claude-plugin/plugin.json index 745f9d58..645a515e 100644 --- a/antigravity-awesome-skills/plugins/antigravity-bundle-full-stack-developer/.claude-plugin/plugin.json +++ b/antigravity-awesome-skills/plugins/antigravity-bundle-full-stack-developer/.claude-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "antigravity-bundle-full-stack-developer", - "version": "13.11.0", + "version": "13.12.0", "description": "Editorial \"Full-Stack Developer\" bundle for Claude Code from Antigravity Awesome Skills.", "author": { "name": "sickn33 and contributors", diff --git a/antigravity-awesome-skills/plugins/antigravity-bundle-full-stack-developer/.codex-plugin/plugin.json b/antigravity-awesome-skills/plugins/antigravity-bundle-full-stack-developer/.codex-plugin/plugin.json index a77bf28b..087203ad 100644 --- a/antigravity-awesome-skills/plugins/antigravity-bundle-full-stack-developer/.codex-plugin/plugin.json +++ b/antigravity-awesome-skills/plugins/antigravity-bundle-full-stack-developer/.codex-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "agyb-full-stack-developer", - "version": "13.11.0", + "version": "13.12.0", "description": "Install the \"Full-Stack Developer\" editorial skill bundle from Antigravity Awesome Skills.", "author": { "name": "sickn33 and contributors", diff --git a/antigravity-awesome-skills/plugins/antigravity-bundle-indie-game-dev/.claude-plugin/plugin.json b/antigravity-awesome-skills/plugins/antigravity-bundle-indie-game-dev/.claude-plugin/plugin.json index 88f0164e..8ced3895 100644 --- a/antigravity-awesome-skills/plugins/antigravity-bundle-indie-game-dev/.claude-plugin/plugin.json +++ b/antigravity-awesome-skills/plugins/antigravity-bundle-indie-game-dev/.claude-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "antigravity-bundle-indie-game-dev", - "version": "13.11.0", + "version": "13.12.0", "description": "Editorial \"Indie Game Dev\" bundle for Claude Code from Antigravity Awesome Skills.", "author": { "name": "sickn33 and contributors", diff --git a/antigravity-awesome-skills/plugins/antigravity-bundle-indie-game-dev/.codex-plugin/plugin.json b/antigravity-awesome-skills/plugins/antigravity-bundle-indie-game-dev/.codex-plugin/plugin.json index ad652058..5577ff6f 100644 --- a/antigravity-awesome-skills/plugins/antigravity-bundle-indie-game-dev/.codex-plugin/plugin.json +++ b/antigravity-awesome-skills/plugins/antigravity-bundle-indie-game-dev/.codex-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "agyb-indie-game-dev", - "version": "13.11.0", + "version": "13.12.0", "description": "Install the \"Indie Game Dev\" editorial skill bundle from Antigravity Awesome Skills.", "author": { "name": "sickn33 and contributors", diff --git a/antigravity-awesome-skills/plugins/antigravity-bundle-integration-apis/.claude-plugin/plugin.json b/antigravity-awesome-skills/plugins/antigravity-bundle-integration-apis/.claude-plugin/plugin.json index 723d114d..3182f76a 100644 --- a/antigravity-awesome-skills/plugins/antigravity-bundle-integration-apis/.claude-plugin/plugin.json +++ b/antigravity-awesome-skills/plugins/antigravity-bundle-integration-apis/.claude-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "antigravity-bundle-integration-apis", - "version": "13.11.0", + "version": "13.12.0", "description": "Editorial \"Integration & APIs\" bundle for Claude Code from Antigravity Awesome Skills.", "author": { "name": "sickn33 and contributors", diff --git a/antigravity-awesome-skills/plugins/antigravity-bundle-integration-apis/.codex-plugin/plugin.json b/antigravity-awesome-skills/plugins/antigravity-bundle-integration-apis/.codex-plugin/plugin.json index 8ba4f47d..99b2c1cc 100644 --- a/antigravity-awesome-skills/plugins/antigravity-bundle-integration-apis/.codex-plugin/plugin.json +++ b/antigravity-awesome-skills/plugins/antigravity-bundle-integration-apis/.codex-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "agyb-integration-apis", - "version": "13.11.0", + "version": "13.12.0", "description": "Install the \"Integration & APIs\" editorial skill bundle from Antigravity Awesome Skills.", "author": { "name": "sickn33 and contributors", diff --git a/antigravity-awesome-skills/plugins/antigravity-bundle-llm-application-developer/.claude-plugin/plugin.json b/antigravity-awesome-skills/plugins/antigravity-bundle-llm-application-developer/.claude-plugin/plugin.json index 2a423cce..fa254bc7 100644 --- a/antigravity-awesome-skills/plugins/antigravity-bundle-llm-application-developer/.claude-plugin/plugin.json +++ b/antigravity-awesome-skills/plugins/antigravity-bundle-llm-application-developer/.claude-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "antigravity-bundle-llm-application-developer", - "version": "13.11.0", + "version": "13.12.0", "description": "Editorial \"LLM Application Developer\" bundle for Claude Code from Antigravity Awesome Skills.", "author": { "name": "sickn33 and contributors", diff --git a/antigravity-awesome-skills/plugins/antigravity-bundle-llm-application-developer/.codex-plugin/plugin.json b/antigravity-awesome-skills/plugins/antigravity-bundle-llm-application-developer/.codex-plugin/plugin.json index 63eac3d0..e478c648 100644 --- a/antigravity-awesome-skills/plugins/antigravity-bundle-llm-application-developer/.codex-plugin/plugin.json +++ b/antigravity-awesome-skills/plugins/antigravity-bundle-llm-application-developer/.codex-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "agyb-llm-application-developer", - "version": "13.11.0", + "version": "13.12.0", "description": "Install the \"LLM Application Developer\" editorial skill bundle from Antigravity Awesome Skills.", "author": { "name": "sickn33 and contributors", diff --git a/antigravity-awesome-skills/plugins/antigravity-bundle-makepad-builder/.claude-plugin/plugin.json b/antigravity-awesome-skills/plugins/antigravity-bundle-makepad-builder/.claude-plugin/plugin.json index ec0f3f3e..bb52e264 100644 --- a/antigravity-awesome-skills/plugins/antigravity-bundle-makepad-builder/.claude-plugin/plugin.json +++ b/antigravity-awesome-skills/plugins/antigravity-bundle-makepad-builder/.claude-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "antigravity-bundle-makepad-builder", - "version": "13.11.0", + "version": "13.12.0", "description": "Editorial \"Makepad Builder\" bundle for Claude Code from Antigravity Awesome Skills.", "author": { "name": "sickn33 and contributors", diff --git a/antigravity-awesome-skills/plugins/antigravity-bundle-makepad-builder/.codex-plugin/plugin.json b/antigravity-awesome-skills/plugins/antigravity-bundle-makepad-builder/.codex-plugin/plugin.json index 5a97c88a..e2c33e98 100644 --- a/antigravity-awesome-skills/plugins/antigravity-bundle-makepad-builder/.codex-plugin/plugin.json +++ b/antigravity-awesome-skills/plugins/antigravity-bundle-makepad-builder/.codex-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "agyb-makepad-builder", - "version": "13.11.0", + "version": "13.12.0", "description": "Install the \"Makepad Builder\" editorial skill bundle from Antigravity Awesome Skills.", "author": { "name": "sickn33 and contributors", diff --git a/antigravity-awesome-skills/plugins/antigravity-bundle-marketing-growth/.claude-plugin/plugin.json b/antigravity-awesome-skills/plugins/antigravity-bundle-marketing-growth/.claude-plugin/plugin.json index cfb1761e..d73cd2c6 100644 --- a/antigravity-awesome-skills/plugins/antigravity-bundle-marketing-growth/.claude-plugin/plugin.json +++ b/antigravity-awesome-skills/plugins/antigravity-bundle-marketing-growth/.claude-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "antigravity-bundle-marketing-growth", - "version": "13.11.0", + "version": "13.12.0", "description": "Editorial \"Marketing & Growth\" bundle for Claude Code from Antigravity Awesome Skills.", "author": { "name": "sickn33 and contributors", diff --git a/antigravity-awesome-skills/plugins/antigravity-bundle-marketing-growth/.codex-plugin/plugin.json b/antigravity-awesome-skills/plugins/antigravity-bundle-marketing-growth/.codex-plugin/plugin.json index 1700c106..4b69fc80 100644 --- a/antigravity-awesome-skills/plugins/antigravity-bundle-marketing-growth/.codex-plugin/plugin.json +++ b/antigravity-awesome-skills/plugins/antigravity-bundle-marketing-growth/.codex-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "agyb-marketing-growth", - "version": "13.11.0", + "version": "13.12.0", "description": "Install the \"Marketing & Growth\" editorial skill bundle from Antigravity Awesome Skills.", "author": { "name": "sickn33 and contributors", diff --git a/antigravity-awesome-skills/plugins/antigravity-bundle-mobile-developer/.claude-plugin/plugin.json b/antigravity-awesome-skills/plugins/antigravity-bundle-mobile-developer/.claude-plugin/plugin.json index 3ee07d4e..1fa4f97c 100644 --- a/antigravity-awesome-skills/plugins/antigravity-bundle-mobile-developer/.claude-plugin/plugin.json +++ b/antigravity-awesome-skills/plugins/antigravity-bundle-mobile-developer/.claude-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "antigravity-bundle-mobile-developer", - "version": "13.11.0", + "version": "13.12.0", "description": "Editorial \"Mobile Developer\" bundle for Claude Code from Antigravity Awesome Skills.", "author": { "name": "sickn33 and contributors", diff --git a/antigravity-awesome-skills/plugins/antigravity-bundle-mobile-developer/.codex-plugin/plugin.json b/antigravity-awesome-skills/plugins/antigravity-bundle-mobile-developer/.codex-plugin/plugin.json index 60d8d0d7..801fa2bd 100644 --- a/antigravity-awesome-skills/plugins/antigravity-bundle-mobile-developer/.codex-plugin/plugin.json +++ b/antigravity-awesome-skills/plugins/antigravity-bundle-mobile-developer/.codex-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "agyb-mobile-developer", - "version": "13.11.0", + "version": "13.12.0", "description": "Install the \"Mobile Developer\" editorial skill bundle from Antigravity Awesome Skills.", "author": { "name": "sickn33 and contributors", diff --git a/antigravity-awesome-skills/plugins/antigravity-bundle-observability-monitoring/.claude-plugin/plugin.json b/antigravity-awesome-skills/plugins/antigravity-bundle-observability-monitoring/.claude-plugin/plugin.json index 3344f84c..7eba82af 100644 --- a/antigravity-awesome-skills/plugins/antigravity-bundle-observability-monitoring/.claude-plugin/plugin.json +++ b/antigravity-awesome-skills/plugins/antigravity-bundle-observability-monitoring/.claude-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "antigravity-bundle-observability-monitoring", - "version": "13.11.0", + "version": "13.12.0", "description": "Editorial \"Observability & Monitoring\" bundle for Claude Code from Antigravity Awesome Skills.", "author": { "name": "sickn33 and contributors", diff --git a/antigravity-awesome-skills/plugins/antigravity-bundle-observability-monitoring/.codex-plugin/plugin.json b/antigravity-awesome-skills/plugins/antigravity-bundle-observability-monitoring/.codex-plugin/plugin.json index de3163b9..813ac347 100644 --- a/antigravity-awesome-skills/plugins/antigravity-bundle-observability-monitoring/.codex-plugin/plugin.json +++ b/antigravity-awesome-skills/plugins/antigravity-bundle-observability-monitoring/.codex-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "agyb-observability-monitoring", - "version": "13.11.0", + "version": "13.12.0", "description": "Install the \"Observability & Monitoring\" editorial skill bundle from Antigravity Awesome Skills.", "author": { "name": "sickn33 and contributors", diff --git a/antigravity-awesome-skills/plugins/antigravity-bundle-odoo-erp/.claude-plugin/plugin.json b/antigravity-awesome-skills/plugins/antigravity-bundle-odoo-erp/.claude-plugin/plugin.json index 2a6f439f..899ec1d0 100644 --- a/antigravity-awesome-skills/plugins/antigravity-bundle-odoo-erp/.claude-plugin/plugin.json +++ b/antigravity-awesome-skills/plugins/antigravity-bundle-odoo-erp/.claude-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "antigravity-bundle-odoo-erp", - "version": "13.11.0", + "version": "13.12.0", "description": "Editorial \"Odoo ERP\" bundle for Claude Code from Antigravity Awesome Skills.", "author": { "name": "sickn33 and contributors", diff --git a/antigravity-awesome-skills/plugins/antigravity-bundle-odoo-erp/.codex-plugin/plugin.json b/antigravity-awesome-skills/plugins/antigravity-bundle-odoo-erp/.codex-plugin/plugin.json index 044fbdf8..8d338a9c 100644 --- a/antigravity-awesome-skills/plugins/antigravity-bundle-odoo-erp/.codex-plugin/plugin.json +++ b/antigravity-awesome-skills/plugins/antigravity-bundle-odoo-erp/.codex-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "agyb-odoo-erp", - "version": "13.11.0", + "version": "13.12.0", "description": "Install the \"Odoo ERP\" editorial skill bundle from Antigravity Awesome Skills.", "author": { "name": "sickn33 and contributors", diff --git a/antigravity-awesome-skills/plugins/antigravity-bundle-oss-maintainer/.claude-plugin/plugin.json b/antigravity-awesome-skills/plugins/antigravity-bundle-oss-maintainer/.claude-plugin/plugin.json index dc4286c5..b519cae2 100644 --- a/antigravity-awesome-skills/plugins/antigravity-bundle-oss-maintainer/.claude-plugin/plugin.json +++ b/antigravity-awesome-skills/plugins/antigravity-bundle-oss-maintainer/.claude-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "antigravity-bundle-oss-maintainer", - "version": "13.11.0", + "version": "13.12.0", "description": "Editorial \"OSS Maintainer\" bundle for Claude Code from Antigravity Awesome Skills.", "author": { "name": "sickn33 and contributors", diff --git a/antigravity-awesome-skills/plugins/antigravity-bundle-oss-maintainer/.codex-plugin/plugin.json b/antigravity-awesome-skills/plugins/antigravity-bundle-oss-maintainer/.codex-plugin/plugin.json index 930d9b55..da35f100 100644 --- a/antigravity-awesome-skills/plugins/antigravity-bundle-oss-maintainer/.codex-plugin/plugin.json +++ b/antigravity-awesome-skills/plugins/antigravity-bundle-oss-maintainer/.codex-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "agyb-oss-maintainer", - "version": "13.11.0", + "version": "13.12.0", "description": "Install the \"OSS Maintainer\" editorial skill bundle from Antigravity Awesome Skills.", "author": { "name": "sickn33 and contributors", diff --git a/antigravity-awesome-skills/plugins/antigravity-bundle-python-pro/.claude-plugin/plugin.json b/antigravity-awesome-skills/plugins/antigravity-bundle-python-pro/.claude-plugin/plugin.json index 7cb9a382..a1c38511 100644 --- a/antigravity-awesome-skills/plugins/antigravity-bundle-python-pro/.claude-plugin/plugin.json +++ b/antigravity-awesome-skills/plugins/antigravity-bundle-python-pro/.claude-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "antigravity-bundle-python-pro", - "version": "13.11.0", + "version": "13.12.0", "description": "Editorial \"Python Pro\" bundle for Claude Code from Antigravity Awesome Skills.", "author": { "name": "sickn33 and contributors", diff --git a/antigravity-awesome-skills/plugins/antigravity-bundle-python-pro/.codex-plugin/plugin.json b/antigravity-awesome-skills/plugins/antigravity-bundle-python-pro/.codex-plugin/plugin.json index 38cde296..d58fb354 100644 --- a/antigravity-awesome-skills/plugins/antigravity-bundle-python-pro/.codex-plugin/plugin.json +++ b/antigravity-awesome-skills/plugins/antigravity-bundle-python-pro/.codex-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "agyb-python-pro", - "version": "13.11.0", + "version": "13.12.0", "description": "Install the \"Python Pro\" editorial skill bundle from Antigravity Awesome Skills.", "author": { "name": "sickn33 and contributors", diff --git a/antigravity-awesome-skills/plugins/antigravity-bundle-qa-testing/.claude-plugin/plugin.json b/antigravity-awesome-skills/plugins/antigravity-bundle-qa-testing/.claude-plugin/plugin.json index 2ecad2b4..67931524 100644 --- a/antigravity-awesome-skills/plugins/antigravity-bundle-qa-testing/.claude-plugin/plugin.json +++ b/antigravity-awesome-skills/plugins/antigravity-bundle-qa-testing/.claude-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "antigravity-bundle-qa-testing", - "version": "13.11.0", + "version": "13.12.0", "description": "Editorial \"QA & Testing\" bundle for Claude Code from Antigravity Awesome Skills.", "author": { "name": "sickn33 and contributors", diff --git a/antigravity-awesome-skills/plugins/antigravity-bundle-qa-testing/.codex-plugin/plugin.json b/antigravity-awesome-skills/plugins/antigravity-bundle-qa-testing/.codex-plugin/plugin.json index c2984c10..cb0af59c 100644 --- a/antigravity-awesome-skills/plugins/antigravity-bundle-qa-testing/.codex-plugin/plugin.json +++ b/antigravity-awesome-skills/plugins/antigravity-bundle-qa-testing/.codex-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "agyb-qa-testing", - "version": "13.11.0", + "version": "13.12.0", "description": "Install the \"QA & Testing\" editorial skill bundle from Antigravity Awesome Skills.", "author": { "name": "sickn33 and contributors", diff --git a/antigravity-awesome-skills/plugins/antigravity-bundle-revops-crm-automation/.claude-plugin/plugin.json b/antigravity-awesome-skills/plugins/antigravity-bundle-revops-crm-automation/.claude-plugin/plugin.json index 476b1b1a..7fde7b45 100644 --- a/antigravity-awesome-skills/plugins/antigravity-bundle-revops-crm-automation/.claude-plugin/plugin.json +++ b/antigravity-awesome-skills/plugins/antigravity-bundle-revops-crm-automation/.claude-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "antigravity-bundle-revops-crm-automation", - "version": "13.11.0", + "version": "13.12.0", "description": "Editorial \"RevOps & CRM Automation\" bundle for Claude Code from Antigravity Awesome Skills.", "author": { "name": "sickn33 and contributors", diff --git a/antigravity-awesome-skills/plugins/antigravity-bundle-revops-crm-automation/.codex-plugin/plugin.json b/antigravity-awesome-skills/plugins/antigravity-bundle-revops-crm-automation/.codex-plugin/plugin.json index 769865b7..fd04ea6d 100644 --- a/antigravity-awesome-skills/plugins/antigravity-bundle-revops-crm-automation/.codex-plugin/plugin.json +++ b/antigravity-awesome-skills/plugins/antigravity-bundle-revops-crm-automation/.codex-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "agyb-revops-crm-automation", - "version": "13.11.0", + "version": "13.12.0", "description": "Install the \"RevOps & CRM Automation\" editorial skill bundle from Antigravity Awesome Skills.", "author": { "name": "sickn33 and contributors", diff --git a/antigravity-awesome-skills/plugins/antigravity-bundle-security-developer/.claude-plugin/plugin.json b/antigravity-awesome-skills/plugins/antigravity-bundle-security-developer/.claude-plugin/plugin.json index c362d6fc..8656f9f9 100644 --- a/antigravity-awesome-skills/plugins/antigravity-bundle-security-developer/.claude-plugin/plugin.json +++ b/antigravity-awesome-skills/plugins/antigravity-bundle-security-developer/.claude-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "antigravity-bundle-security-developer", - "version": "13.11.0", + "version": "13.12.0", "description": "Editorial \"Security Developer\" bundle for Claude Code from Antigravity Awesome Skills.", "author": { "name": "sickn33 and contributors", diff --git a/antigravity-awesome-skills/plugins/antigravity-bundle-security-developer/.codex-plugin/plugin.json b/antigravity-awesome-skills/plugins/antigravity-bundle-security-developer/.codex-plugin/plugin.json index a93c1812..f005ec03 100644 --- a/antigravity-awesome-skills/plugins/antigravity-bundle-security-developer/.codex-plugin/plugin.json +++ b/antigravity-awesome-skills/plugins/antigravity-bundle-security-developer/.codex-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "agyb-security-developer", - "version": "13.11.0", + "version": "13.12.0", "description": "Install the \"Security Developer\" editorial skill bundle from Antigravity Awesome Skills.", "author": { "name": "sickn33 and contributors", diff --git a/antigravity-awesome-skills/plugins/antigravity-bundle-security-engineer/.claude-plugin/plugin.json b/antigravity-awesome-skills/plugins/antigravity-bundle-security-engineer/.claude-plugin/plugin.json index 705154d4..40e4d564 100644 --- a/antigravity-awesome-skills/plugins/antigravity-bundle-security-engineer/.claude-plugin/plugin.json +++ b/antigravity-awesome-skills/plugins/antigravity-bundle-security-engineer/.claude-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "antigravity-bundle-security-engineer", - "version": "13.11.0", + "version": "13.12.0", "description": "Editorial \"Security Engineer\" bundle for Claude Code from Antigravity Awesome Skills.", "author": { "name": "sickn33 and contributors", diff --git a/antigravity-awesome-skills/plugins/antigravity-bundle-security-engineer/.codex-plugin/plugin.json b/antigravity-awesome-skills/plugins/antigravity-bundle-security-engineer/.codex-plugin/plugin.json index 292e228c..600748a4 100644 --- a/antigravity-awesome-skills/plugins/antigravity-bundle-security-engineer/.codex-plugin/plugin.json +++ b/antigravity-awesome-skills/plugins/antigravity-bundle-security-engineer/.codex-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "agyb-security-engineer", - "version": "13.11.0", + "version": "13.12.0", "description": "Install the \"Security Engineer\" editorial skill bundle from Antigravity Awesome Skills.", "author": { "name": "sickn33 and contributors", diff --git a/antigravity-awesome-skills/plugins/antigravity-bundle-seo-specialist/.claude-plugin/plugin.json b/antigravity-awesome-skills/plugins/antigravity-bundle-seo-specialist/.claude-plugin/plugin.json index 5ce97a64..717462a0 100644 --- a/antigravity-awesome-skills/plugins/antigravity-bundle-seo-specialist/.claude-plugin/plugin.json +++ b/antigravity-awesome-skills/plugins/antigravity-bundle-seo-specialist/.claude-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "antigravity-bundle-seo-specialist", - "version": "13.11.0", + "version": "13.12.0", "description": "Editorial \"SEO Specialist\" bundle for Claude Code from Antigravity Awesome Skills.", "author": { "name": "sickn33 and contributors", diff --git a/antigravity-awesome-skills/plugins/antigravity-bundle-seo-specialist/.codex-plugin/plugin.json b/antigravity-awesome-skills/plugins/antigravity-bundle-seo-specialist/.codex-plugin/plugin.json index 2b4b5d1a..02adbc7f 100644 --- a/antigravity-awesome-skills/plugins/antigravity-bundle-seo-specialist/.codex-plugin/plugin.json +++ b/antigravity-awesome-skills/plugins/antigravity-bundle-seo-specialist/.codex-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "agyb-seo-specialist", - "version": "13.11.0", + "version": "13.12.0", "description": "Install the \"SEO Specialist\" editorial skill bundle from Antigravity Awesome Skills.", "author": { "name": "sickn33 and contributors", diff --git a/antigravity-awesome-skills/plugins/antigravity-bundle-startup-founder/.claude-plugin/plugin.json b/antigravity-awesome-skills/plugins/antigravity-bundle-startup-founder/.claude-plugin/plugin.json index d7bef4fe..ef94f24e 100644 --- a/antigravity-awesome-skills/plugins/antigravity-bundle-startup-founder/.claude-plugin/plugin.json +++ b/antigravity-awesome-skills/plugins/antigravity-bundle-startup-founder/.claude-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "antigravity-bundle-startup-founder", - "version": "13.11.0", + "version": "13.12.0", "description": "Editorial \"Startup Founder\" bundle for Claude Code from Antigravity Awesome Skills.", "author": { "name": "sickn33 and contributors", diff --git a/antigravity-awesome-skills/plugins/antigravity-bundle-startup-founder/.codex-plugin/plugin.json b/antigravity-awesome-skills/plugins/antigravity-bundle-startup-founder/.codex-plugin/plugin.json index 84d31ef2..05c20248 100644 --- a/antigravity-awesome-skills/plugins/antigravity-bundle-startup-founder/.codex-plugin/plugin.json +++ b/antigravity-awesome-skills/plugins/antigravity-bundle-startup-founder/.codex-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "agyb-startup-founder", - "version": "13.11.0", + "version": "13.12.0", "description": "Install the \"Startup Founder\" editorial skill bundle from Antigravity Awesome Skills.", "author": { "name": "sickn33 and contributors", diff --git a/antigravity-awesome-skills/plugins/antigravity-bundle-systems-programming/.claude-plugin/plugin.json b/antigravity-awesome-skills/plugins/antigravity-bundle-systems-programming/.claude-plugin/plugin.json index 81568943..0244b97c 100644 --- a/antigravity-awesome-skills/plugins/antigravity-bundle-systems-programming/.claude-plugin/plugin.json +++ b/antigravity-awesome-skills/plugins/antigravity-bundle-systems-programming/.claude-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "antigravity-bundle-systems-programming", - "version": "13.11.0", + "version": "13.12.0", "description": "Editorial \"Systems Programming\" bundle for Claude Code from Antigravity Awesome Skills.", "author": { "name": "sickn33 and contributors", diff --git a/antigravity-awesome-skills/plugins/antigravity-bundle-systems-programming/.codex-plugin/plugin.json b/antigravity-awesome-skills/plugins/antigravity-bundle-systems-programming/.codex-plugin/plugin.json index 98f65758..16d6b78c 100644 --- a/antigravity-awesome-skills/plugins/antigravity-bundle-systems-programming/.codex-plugin/plugin.json +++ b/antigravity-awesome-skills/plugins/antigravity-bundle-systems-programming/.codex-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "agyb-systems-programming", - "version": "13.11.0", + "version": "13.12.0", "description": "Install the \"Systems Programming\" editorial skill bundle from Antigravity Awesome Skills.", "author": { "name": "sickn33 and contributors", diff --git a/antigravity-awesome-skills/plugins/antigravity-bundle-typescript-javascript/.claude-plugin/plugin.json b/antigravity-awesome-skills/plugins/antigravity-bundle-typescript-javascript/.claude-plugin/plugin.json index d1f29dec..345fd8d2 100644 --- a/antigravity-awesome-skills/plugins/antigravity-bundle-typescript-javascript/.claude-plugin/plugin.json +++ b/antigravity-awesome-skills/plugins/antigravity-bundle-typescript-javascript/.claude-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "antigravity-bundle-typescript-javascript", - "version": "13.11.0", + "version": "13.12.0", "description": "Editorial \"TypeScript & JavaScript\" bundle for Claude Code from Antigravity Awesome Skills.", "author": { "name": "sickn33 and contributors", diff --git a/antigravity-awesome-skills/plugins/antigravity-bundle-typescript-javascript/.codex-plugin/plugin.json b/antigravity-awesome-skills/plugins/antigravity-bundle-typescript-javascript/.codex-plugin/plugin.json index 392078fe..bc6f54b1 100644 --- a/antigravity-awesome-skills/plugins/antigravity-bundle-typescript-javascript/.codex-plugin/plugin.json +++ b/antigravity-awesome-skills/plugins/antigravity-bundle-typescript-javascript/.codex-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "agyb-typescript-javascript", - "version": "13.11.0", + "version": "13.12.0", "description": "Install the \"TypeScript & JavaScript\" editorial skill bundle from Antigravity Awesome Skills.", "author": { "name": "sickn33 and contributors", diff --git a/antigravity-awesome-skills/plugins/antigravity-bundle-web-designer/.claude-plugin/plugin.json b/antigravity-awesome-skills/plugins/antigravity-bundle-web-designer/.claude-plugin/plugin.json index 9605d596..bcb69278 100644 --- a/antigravity-awesome-skills/plugins/antigravity-bundle-web-designer/.claude-plugin/plugin.json +++ b/antigravity-awesome-skills/plugins/antigravity-bundle-web-designer/.claude-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "antigravity-bundle-web-designer", - "version": "13.11.0", + "version": "13.12.0", "description": "Editorial \"Web Designer\" bundle for Claude Code from Antigravity Awesome Skills.", "author": { "name": "sickn33 and contributors", diff --git a/antigravity-awesome-skills/plugins/antigravity-bundle-web-designer/.codex-plugin/plugin.json b/antigravity-awesome-skills/plugins/antigravity-bundle-web-designer/.codex-plugin/plugin.json index 525f829c..04558cd7 100644 --- a/antigravity-awesome-skills/plugins/antigravity-bundle-web-designer/.codex-plugin/plugin.json +++ b/antigravity-awesome-skills/plugins/antigravity-bundle-web-designer/.codex-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "agyb-web-designer", - "version": "13.11.0", + "version": "13.12.0", "description": "Install the \"Web Designer\" editorial skill bundle from Antigravity Awesome Skills.", "author": { "name": "sickn33 and contributors", diff --git a/antigravity-awesome-skills/plugins/antigravity-bundle-web-wizard/.claude-plugin/plugin.json b/antigravity-awesome-skills/plugins/antigravity-bundle-web-wizard/.claude-plugin/plugin.json index f51dc1a5..832d3ba4 100644 --- a/antigravity-awesome-skills/plugins/antigravity-bundle-web-wizard/.claude-plugin/plugin.json +++ b/antigravity-awesome-skills/plugins/antigravity-bundle-web-wizard/.claude-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "antigravity-bundle-web-wizard", - "version": "13.11.0", + "version": "13.12.0", "description": "Editorial \"Web Wizard\" bundle for Claude Code from Antigravity Awesome Skills.", "author": { "name": "sickn33 and contributors", diff --git a/antigravity-awesome-skills/plugins/antigravity-bundle-web-wizard/.codex-plugin/plugin.json b/antigravity-awesome-skills/plugins/antigravity-bundle-web-wizard/.codex-plugin/plugin.json index 1212de61..4b989d13 100644 --- a/antigravity-awesome-skills/plugins/antigravity-bundle-web-wizard/.codex-plugin/plugin.json +++ b/antigravity-awesome-skills/plugins/antigravity-bundle-web-wizard/.codex-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "agyb-web-wizard", - "version": "13.11.0", + "version": "13.12.0", "description": "Install the \"Web Wizard\" editorial skill bundle from Antigravity Awesome Skills.", "author": { "name": "sickn33 and contributors", diff --git a/antigravity-awesome-skills/skills/agent-self-scheduling/SKILL.md b/antigravity-awesome-skills/skills/agent-self-scheduling/SKILL.md new file mode 100644 index 00000000..743f3371 --- /dev/null +++ b/antigravity-awesome-skills/skills/agent-self-scheduling/SKILL.md @@ -0,0 +1,88 @@ +--- +name: agent-self-scheduling +description: "Schedule AI agent runs with cron, loops, or external clocks while avoiding unsafe tight autonomous timers." +category: agent-orchestration +risk: critical +source: community +source_repo: davidondrej/skills +source_type: community +date_added: "2026-07-07" +author: davidondrej +tags: [agents, scheduling, automation, cron] +tools: [claude, codex] +license: "MIT" +license_source: "https://github.com/davidondrej/skills/blob/main/LICENSE" +--- + +# Agent Self-Scheduling + +## When to Use + +- Use when the user asks for recurring, scheduled, heartbeat, or looped agent work. +- Use when you need to choose between cron, external schedulers, hooks, or built-in agent scheduling. + +First question: does the agent have a built-in scheduler (Hermes → Camp B), or do you own the clock (everything else → Camp A)? + +Universal floor: cron is 1 minute minimum (5-field expr, no seconds) — every camp. For sub-minute you MUST use a `while ...; sleep N; done` loop, a TS extension, or an event hook. Never put an LLM on a tight timer. + +## Camp A — one-shot agents, you own the clock + +These run once and exit (amnesiac unless resumed). Schedule them externally. + +```bash +claude -p "PROMPT" --output-format json --allowedTools "Read,Edit,Bash" # Claude Code +codex exec --json "PROMPT" # Codex +pi run "PROMPT" # Pi +``` + +Wrap in a clock: + +```bash +# 1. cron (>= 1 min floor) +*/10 * * * * cd /path/to/project && pi run "check X and report" >> ~/agent.log 2>&1 +# 2. systemd timer (Linux, survives reboot, better logging) — OnUnitActiveSec=10min +# 3. dumb loop (sub-minute, or no cron available) +while true; do pi run "check X"; sleep 30; done +``` + +Gotchas (each breaks unattended runs if ignored): +- **Permissions hang forever.** Pass `--allowedTools` (Claude) or sandbox/auto-approve flags (Codex), or the run blocks on a prompt. +- **Use JSON output** (`--output-format json` / `--json`) so the wrapper parses results deterministically. +- **Runs are amnesiac.** Resume (`codex exec resume --last`) or persist state to a file the next run reads. + +Pi has NO built-in scheduler/loop/heartbeat by design — external clock only (or a TS extension for agent-side timers). + +### cmux — orchestration only, NO scheduler + +cmux has no timer/watch/cron. Three ways to loop it: orchestrator-driven (`send` → `sleep` → `read-screen` on your own clock), a dumb while-sleep wrapper, or — preferred — event-driven via `cmux notify` + OSC terminal hooks, which is cheaper and more responsive than polling. `read-screen` is non-interruptive, safe to poll. + +If a loop checks another agent, send the user a one-line status each check: what the agent is doing, on track or not. (Claude Code may prefill a predicted next user message after finishing — that's Claude, not the user.) + +## Camp B — Hermes built-in scheduler + +Hermes' gateway ticks every 60s and runs due jobs in fresh isolated sessions. State-check first: + +```bash +hermes gateway install # user-level ( --system to survive reboot) +hermes cron create "every 1h" "summarize new emails and report" --skill himalaya +hermes cron create "0 9 * * *" "post daily standup" # cron expr +hermes cron create "30m" "one-shot reminder in 30 min" # one-shot delay +``` + +Hermes-unique: **zero-token mode** (run a script, deliver stdout verbatim — use for watchdogs), **chaining** (`context_from` pipes one job's output into the next), **self-terminating loops**, and **loop safety** (scheduled sessions cannot create more cron jobs — don't schedule from inside a scheduled job). Each run is a fresh session: the prompt must carry all context. + +## Heartbeat pattern + +One fast recurring tick gates many slower per-task checks: the tick reads a task list + per-task `last_run` timestamps and only acts on tasks that are due. In Hermes use a recurring job (zero-token mode when nothing's due); in Camp A use a while-sleep loop. Define active-hours, and stay silent when nothing is due — no empty noise. + +## Verify it fires (before reporting success) + +1. Camp A: log file grows after one interval, or run the wrapped command once by hand → clean JSON, exit 0. +2. Camp B: `hermes cron list` shows the job + sane `next_run`; trigger a run-now to confirm delivery. +3. Confirm permission/sandbox flags are present — the #1 silent failure is a hung permission prompt. +4. Heartbeats: confirm a nothing-due tick stays silent. + +## Limitations + +- Adapted from `davidondrej/skills`; verify local paths, tools, credentials, and agent features before acting. +- For commands, remote access, scheduling, browser automation, or file-changing workflows, get explicit user approval and confirm the target environment first. diff --git a/antigravity-awesome-skills/skills/anti-sleep/SKILL.md b/antigravity-awesome-skills/skills/anti-sleep/SKILL.md new file mode 100644 index 00000000..d180fbe6 --- /dev/null +++ b/antigravity-awesome-skills/skills/anti-sleep/SKILL.md @@ -0,0 +1,90 @@ +--- +name: anti-sleep +description: "Keep a Mac awake with caffeinate during long builds, downloads, or supervised automation runs." +category: operations +risk: critical +source: community +source_repo: davidondrej/skills +source_type: community +date_added: "2026-07-07" +author: davidondrej +tags: [macos, caffeinate, operations] +tools: [claude, codex] +license: "MIT" +license_source: "https://github.com/davidondrej/skills/blob/main/LICENSE" +--- + +# Anti-Sleep (macOS caffeinate) + +## When to Use + +- Use when the user wants the Mac to stay awake during a long supervised task. +- Use when a build, download, or automation run should not be interrupted by sleep. + +Keep the Mac awake using the built-in `caffeinate` command. No install needed. + +## Quick start — the standard command + +```bash +caffeinate -d -i -t 7200 # full power: screen stays on + no idle sleep, for 2 hours +``` + +Duration is `-t `: 2h = 7200, 7h = 25200, overnight (9h) = 32400. + +## Aggressiveness levels + +| Flags | Effect | +|---|---| +| `-i` | prevents idle **system** sleep only (screen may still dim/lock) | +| `-d` | prevents **display** sleep (screen stays on) | +| `-d -i` | **default choice** — screen on + system awake | +| `-d -i -s` | adds `-s`: prevents sleep even on AC power semantics; `-s` only works when plugged in | +| `-u -t 1` | simulates user activity — wakes the display right now | + +Default to `-d -i -t ` unless the user says otherwise. + +## Tie to a process instead of a timer + +```bash +caffeinate -d -i -w # stays awake until that process exits (great for builds) +caffeinate -i npm run build # wraps a command; exits when the command finishes +``` + +## Run it in a visible terminal (cmux pane) + +Prefer running it in the user's own terminal pane so it's visible and easy to Ctrl+C. In cmux (read the `cmux` skill first if interacting with panes): + +```bash +cmux send --surface surface: "caffeinate -d -i -t 25200\n" +``` + +Otherwise run it as a background Bash task. Never block your own foreground shell with it. + +## Verify and monitor + +```bash +pgrep -fl caffeinate # is it running? shows exact flags +ps -o etime= -p # how long it's been running +pmset -g assertions | grep -i deny # confirm sleep assertions are active +``` + +**Gotcha:** `caffeinate` prints nothing and holds the prompt — it looks "stuck" or like Enter wasn't pressed. It isn't stuck. Verify with `pgrep`, not by looking at the terminal. + +**Expiry:** with `-t` it exits silently when time runs out — no notification. If the user asks "is it still on?" after hours, check `pgrep` first; it may simply have expired. + +## Keyboard backlight + +`caffeinate` cannot keep the keyboard backlight on — it has its own inactivity timer with no CLI/API on Apple Silicon (researched 2026-07). Fix is manual, one-time: System Settings > Keyboard > "Turn keyboard backlight off after inactivity" > Never. + +## Stop early + +```bash +pkill -f "caffeinate -d -i" # or Ctrl+C in the pane running it +``` + +After starting: confirm to the user the PID, the flags, and the wall-clock time it will expire. + +## Limitations + +- Adapted from `davidondrej/skills`; verify local paths, tools, credentials, and agent features before acting. +- For commands, remote access, scheduling, browser automation, or file-changing workflows, get explicit user approval and confirm the target environment first. diff --git a/antigravity-awesome-skills/skills/brain-to-docs/SKILL.md b/antigravity-awesome-skills/skills/brain-to-docs/SKILL.md new file mode 100644 index 00000000..f6b2bd48 --- /dev/null +++ b/antigravity-awesome-skills/skills/brain-to-docs/SKILL.md @@ -0,0 +1,54 @@ +--- +name: brain-to-docs +description: "Interview the user to turn project vision and decisions into README and ADR documentation." +category: productivity +risk: critical +source: community +source_repo: davidondrej/skills +source_type: community +date_added: "2026-07-07" +author: davidondrej +tags: [documentation, adr, planning] +tools: [claude, codex] +license: "MIT" +license_source: "https://github.com/davidondrej/skills/blob/main/LICENSE" +--- + +# brain-to-docs + +## When to Use + +- Use when the user wants to extract project vision, decisions, or preferences into durable docs. +- Use when README and ADRs should be built through a back-and-forth interview. + +The whole purpose: extract as much of the user's taste, judgment, knowledge, vision, +preferences, and decisions as possible into text — saved as clear, concise +markdown docs for the project. README holds the vision; `docs/adr/` holds the +decisions. + +## The loop + +1. **Check docs first, every time.** Read `docs/adr/` (and `README.md`) before + doing anything — other agents and people add/edit ADRs constantly. +2. **Ask 5 different questions** in plain text (never a questions UI) — default 5 + unless the user asks for a different number. Make them high-variety: a wide, + creative spectrum of unique angles, not all the same type (e.g. not all "tech + stack" or all "product" or all "monetization"). Exception: if the user asks for a + specific focus area, follow it. The user answers whichever they find most useful. +3. **Update docs after EVERY answer** — no exceptions. You decide whether it + updates `README.md` or becomes a new ADR — whatever makes sense. +4. Repeat until the user says "we're done" (or similar). + +## Rules + +- All answers & responses during this "brain to docs" process must be VERY + CONCISE, all sentences should be SHORT, and everything should be written in + PLAIN ENGLISH. +- ADRs: short, numbered `NNNN-slug.md`, Status + Context + Decision + Consequences. +- README: vision only. Decisions go in ADRs. +- Don't challenge the user's thinking unless they ask, or they're making a severe mistake. + +## Limitations + +- Adapted from `davidondrej/skills`; verify local paths, tools, credentials, and agent features before acting. +- For commands, remote access, scheduling, browser automation, or file-changing workflows, get explicit user approval and confirm the target environment first. diff --git a/antigravity-awesome-skills/skills/browser-harness/SKILL.md b/antigravity-awesome-skills/skills/browser-harness/SKILL.md new file mode 100644 index 00000000..a442aeb1 --- /dev/null +++ b/antigravity-awesome-skills/skills/browser-harness/SKILL.md @@ -0,0 +1,220 @@ +--- +name: browser-harness +description: "Drive an existing browser through CDP for authenticated, visual, or interactive web automation." +category: browser-automation +risk: critical +source: community +source_repo: davidondrej/skills +source_type: community +date_added: "2026-07-07" +author: davidondrej +tags: [browser, cdp, automation, scraping] +tools: [claude, codex] +license: "MIT" +license_source: "https://github.com/davidondrej/skills/blob/main/LICENSE" +--- + +# browser-harness + +## When to Use + +- Use when a task needs a real logged-in browser, visible interaction, or JS-heavy page control. +- Use when static fetches are insufficient and CDP browser automation is appropriate. + +Direct browser control via CDP. For task-specific edits, use `agent-workspace/agent_helpers.py`. For setup, install, or connection problems, read install.md. + +**Routing check first:** if the task needs no interaction (no clicks, logins, or forms) and you just want page content, use DeepAPI `POST /v1/scrape/website` instead of driving a browser — see the `deepapi` skill. Use browser-harness when the task needs a real browser: interaction, JS-heavy flows, logged-in sessions, or visual verification. + +Domain skills (community-contributed per-site playbooks under `agent-workspace/domain-skills/`) are off by default. Set `BH_DOMAIN_SKILLS=1` to enable them; see the bottom section. + +**If `BH_DOMAIN_SKILLS=1` and the task is site-specific, read every file in the matching `agent-workspace/domain-skills//` directory before inventing an approach.** + +## Usage + +```bash +browser-harness -c ' +new_tab("https://docs.browser-use.com") +wait_for_load() +print(page_info()) +' +``` + +- Invoke as browser-harness — it's on $PATH. No cd, no uv run. +- First navigation is new_tab(url), not goto_url(url) — goto runs in the user's active tab and clobbers their work. + +## Tool call shape + +```bash +browser-harness -c ' +# any python. helpers pre-imported. daemon auto-starts. +' +``` + +run.py calls ensure_daemon() before exec — you never start/stop manually unless you want to. + +### Remote browsers + +Use remote for parallel sub-agents (each gets its own isolated browser via a distinct BU_NAME) or on a headless server. BROWSER_USE_API_KEY must be set. start_remote_daemon, list_cloud_profiles, list_local_profiles, sync_local_profile are pre-imported. + +When supervising those sub-agents, after each check send the user one very short status line: what they are doing and whether they are on track. + +Claude Code cmux note: after Claude finishes, it may prefill a predicted next user message; that draft is Claude, not the user speaking. + +```bash +browser-harness -c ' +start_remote_daemon("work") # default — clean browser, no profile +# start_remote_daemon("work", profileName="my-work") # reuse a cloud profile (already logged in) +# start_remote_daemon("work", profileId="") # same, but by UUID +# start_remote_daemon("work", proxyCountryCode="de", timeout=120) # DE proxy, 2-hour timeout +# start_remote_daemon("work", proxyCountryCode=None) # disable the Browser Use proxy +' + +BU_NAME=work browser-harness -c ' +new_tab("https://example.com") +print(page_info()) +' +``` + +start_remote_daemon prints liveUrl and auto-opens it in the local browser (if a GUI is detected) so the user can watch along. Headless servers print only — share the URL with the user. The daemon PATCHes the cloud browser to stop on shutdown, which persists profile state. Running remote daemons bill until timeout. + +Profiles (cookies-only login state) live in interaction-skills/profile-sync.md — covers list_cloud_profiles(), the chat-driven "which profile?" pattern, and sync_local_profile() for uploading a local Chrome profile. + +## Interaction skills + +If you start struggling with a specific mechanic while navigating, look in interaction-skills/ for helpers. They cover reusable UI mechanics like dialogs, tabs, dropdowns, iframes, and uploads. The available interaction skills are: +- connection.md +- cookies.md +- cross-origin-iframes.md +- dialogs.md +- downloads.md +- drag-and-drop.md +- dropdowns.md +- iframes.md +- network-requests.md +- print-as-pdf.md +- profile-sync.md +- screenshots.md +- scrolling.md +- shadow-dom.md +- tabs.md +- uploads.md +- viewport.md + +## What actually works + +- Screenshots first: use capture_screenshot() to understand the current page quickly, find visible targets, and decide whether you need a click, a selector, or more navigation. +- Clicking: capture_screenshot() → read the pixel off the image → click_at_xy(x, y) → capture_screenshot() to verify. Suppress the Playwright-habit reflex of "locate first, then click" — no getBoundingClientRect, no selector hunt. Drop to DOM only when the target has no visible geometry (hidden input, 0×0 node). Hit-testing happens in Chrome's browser process, so clicks go through iframes / shadow DOM / cross-origin without extra work. +- Bulk HTTP: http_get(url) + ThreadPoolExecutor. No browser for static pages (249 Netflix pages in 2.8s). +- After goto: wait_for_load(). +- Wrong/stale tab: ensure_real_tab(). Use it when the current tab is stale or internal; the daemon also auto-recovers from stale sessions on the next call. +- Verification: print(page_info()) is the simplest "is this alive?" check, but screenshots are the default way to verify whether a visible action actually worked. +- DOM reads: use js(...) for inspection and extraction when the screenshot shows that coordinates are the wrong tool. +- Iframe sites (Azure blades, Salesforce): click_at_xy(x, y) passes through; only drop to iframe DOM work when coordinate clicks are the wrong tool. +- Auth wall: redirected to login → stop and ask the user. Don't type credentials from screenshots. +- Raw CDP for anything helpers don't cover: cdp("Domain.method", params). + +## Design constraints + +- Coordinate clicks default. Input.dispatchMouseEvent goes through iframes/shadow/cross-origin at the compositor level. +- Connect to the user's running Chrome. Don't launch your own browser. +- cdp-use is only for CDPClient.send_raw. Prefer raw CDP strings over typed wrappers. +- run.py stays tiny. No argparse, subcommands, or extra control layer. +- Core helpers stay short. Put task-specific helper additions in `agent-workspace/agent_helpers.py`; daemon/bootstrap and remote session admin live in the core package. +- Don't add a manager layer. No retries framework, session manager, daemon supervisor, config system, or logging framework. + +## Hermes Agent integration + +Installed at `~/Developer/browser-harness` as editable `uv tool install -e .`. Binary at `~/.local/bin/browser-harness`. Skill at `~/.hermes/skills/browser-harness/`. + +**Frontmatter pitfall:** The upstream SKILL.md ships with `name: browser` in frontmatter, which collides with Hermes's built-in `browser` toolset. When copying into `~/.hermes/skills/`, rename to `name: browser-harness` in the frontmatter or Hermes will shadow/conflict with its own browser tools. + +**Brave Browser:** Works identically to Chrome. Enable remote debugging at `brave://inspect/#remote-debugging` (same checkbox). The harness auto-discovers Brave's profile directory. + +## Authenticated content extraction (proven pattern) + +browser-harness connects to the user's real browser with their active sessions — ideal for extracting content from login-walled sites where `web_extract` or Hermes's built-in `browser_navigate` fail (e.g. X/Twitter articles, LinkedIn, paywalled sites). + +**Pattern:** +```bash +browser-harness -c ' +new_tab("https://x.com/user/status/123456") +wait_for_load() +import time +time.sleep(5) # let JS-heavy pages render +text = js(""" + const article = document.querySelector("article"); + if (article) return article.innerText; + return document.body.innerText; +""") +with open("/tmp/extracted.txt", "w") as f: + f.write(text) +print("Written", len(text), "chars") +' +``` + +- Write to a temp file to avoid shell escaping issues with large text +- Use `time.sleep()` generously for JS-heavy SPAs (X, LinkedIn need 3-5s) +- X/Twitter articles render inline — just scroll/extract via DOM, no extra click needed +- For very long pages, `js(...)` with `innerText` grabs everything including below-fold content + +## Hermes Agent integration + +Installed at `~/Developer/browser-harness` as editable `uv tool install -e .`. Binary at `~/.local/bin/browser-harness`. Skill at `~/.hermes/skills/browser-harness/`. + +**Frontmatter pitfall:** The upstream SKILL.md ships with `name: browser` in frontmatter, which collides with Hermes's built-in `browser` toolset. When copying into `~/.hermes/skills/`, rename to `name: browser-harness` in the frontmatter. + +**Brave Browser:** Works identically to Chrome. Enable remote debugging at `brave://inspect/#remote-debugging` (same checkbox). The harness auto-discovers Brave's profile directory. + +## Authenticated content extraction (proven pattern) + +browser-harness connects to the user's real browser with active sessions — ideal for login-walled sites where `web_extract` or Hermes's built-in `browser_navigate` fail (X/Twitter articles, LinkedIn, paywalled sites). + +```bash +browser-harness -c ' +new_tab("https://x.com/user/status/123456") +wait_for_load() +import time +time.sleep(5) # let JS-heavy pages render +text = js(""" + const article = document.querySelector("article"); + if (article) return article.innerText; + return document.body.innerText; +""") +with open("/tmp/extracted.txt", "w") as f: + f.write(text) +print("Written", len(text), "chars") +' +``` + +- Write to a temp file to avoid shell escaping issues with large text +- Use `time.sleep()` generously for JS-heavy SPAs (X, LinkedIn need 3-5s) +- X/Twitter articles render inline — just scroll/extract via DOM, no extra click needed +- `js(...)` with `innerText` grabs everything including below-fold content + +## Gotchas (field-tested) + +- **Brave Browser** uses `brave://inspect/#remote-debugging` instead of `chrome://inspect/...`. The harness auto-discovers Brave's data dir. +- Login-walled content extraction (e.g. X/Twitter articles): navigate with `new_tab(url)`, `wait_for_load()`, then extract via `js("document.querySelector('article').innerText")`. Write to a temp file to avoid shell escaping: `with open('/tmp/out.txt', 'w') as f: f.write(text)`. The user's existing browser session handles auth automatically. +- Omnibox popups are fake page targets. Filter chrome://omnibox-popup... and other internals when you need a real tab. +- CDP target order != Chrome's visible tab-strip order. Use UI automation when the user means "the first/second tab I can see"; Target.activateTarget only shows a known target. +- Default daemon sessions can go stale. ensure_real_tab() re-attaches to a real page. +- Browser Use API is camelCase on the wire. cdpUrl, proxyCountryCode, etc. +- Remote cdpUrl is HTTPS, not ws. Resolve the websocket URL via /json/version. +- Stop cloud browsers with PATCH /browsers/{id} + {"action":"stop"}. +- After every meaningful action, re-screenshot before assuming it worked. Use the image to verify changed state, open menus, navigation, visible errors, and whether the page is in the state you expected. +- Use screenshots to drive exploration. They are often the fastest way to find the next click target, notice hidden blockers, and decide if a selector is even worth writing. +- Prefer compositor-level actions over framework hacks. Try screenshots, coordinate clicks, and raw key input before adding DOM-specific workarounds. +- If you need framework-specific DOM tricks, check interaction-skills/ first. That is where dropdown, dialog, iframe, shadow DOM, and form-specific guidance belongs. + +## Domain skills (opt-in) + +Only applies when `BH_DOMAIN_SKILLS=1`. Otherwise ignore — `agent-workspace/domain-skills/` is dormant and `goto_url` won't surface skill files. + +When enabled, search `agent-workspace/domain-skills//` before inventing an approach. `goto_url` returns up to 10 skill filenames for the navigated host. + +If you learn anything non-obvious — a private API, stable selector, framework quirk, URL pattern, hidden wait, or site-specific trap — open a PR to `agent-workspace/domain-skills//`. Capture the durable shape of the site (the map, not the diary). Don't write pixel coordinates (break on layout), task narration, or secrets — the directory is public. + +## Limitations + +- Adapted from `davidondrej/skills`; verify local paths, tools, credentials, and agent features before acting. +- For commands, remote access, scheduling, browser automation, or file-changing workflows, get explicit user approval and confirm the target environment first. diff --git a/antigravity-awesome-skills/skills/browser-harness/references/install.md b/antigravity-awesome-skills/skills/browser-harness/references/install.md new file mode 100644 index 00000000..a38e81dd --- /dev/null +++ b/antigravity-awesome-skills/skills/browser-harness/references/install.md @@ -0,0 +1,132 @@ +--- +name: browser-install +description: Install browser-harness into the current agent and connect it to a browser with minimal prompting. +--- + +# `browser-harness` installation + +Use this file only for browser-harness install, browser connection setup, and connection troubleshooting. For day-to-day browser work, read `SKILL.md`. Task-specific edits belong in `agent-workspace/agent_helpers.py` and `agent-workspace/domain-skills/`. + +## Recommended `browser-harness` setup + +Clone the repo once into a durable location, then install it as an editable tool so `browser-harness` works from any directory: + +```bash +git clone https://github.com/browser-use/browser-harness +cd browser-harness +uv tool install -e . +command -v browser-harness +``` + +That keeps the command global while still pointing at the real repo checkout, so when the agent edits `agent-workspace/agent_helpers.py` the next `browser-harness` uses the new code immediately. Prefer a stable path like `~/Developer/browser-harness`, not `/tmp`. + +## Make browser-harness global for the current agent + +After the repo is installed, register this repo's `SKILL.md` with the agent you are using: + +- **Codex**: add this file as a global skill at `$CODEX_HOME/skills/browser-harness/SKILL.md` (often `~/.codex/skills/browser-harness/SKILL.md`). A symlink to this repo's `SKILL.md` is fine. + + ```bash + mkdir -p "${CODEX_HOME:-$HOME/.codex}/skills/browser-harness" && ln -sf "$PWD/SKILL.md" "${CODEX_HOME:-$HOME/.codex}/skills/browser-harness/SKILL.md" + ``` + +- **Claude Code**: add an import to `~/.claude/CLAUDE.md` that points at this repo's `SKILL.md`, for example `@~/Developer/browser-harness/SKILL.md`. + +This makes new Codex or Claude Code sessions in other folders load the runtime browser harness instructions automatically. + +## Keeping the harness current + +- On each run, `browser-harness` prints `[browser-harness] update available: X -> Y` (once per day) when a newer GitHub release exists. +- When you see that banner, run `browser-harness --update -y` yourself — don't ask the user. It pulls the new code (`git pull --ff-only` for editable clones, `uv tool upgrade browser-harness` for PyPI installs) and stops the running daemon so the next call picks up the new code. With `-y` it won't prompt. +- `--update` refuses to run on an editable clone with uncommitted changes. If that happens, tell the user and let them resolve the dirty worktree. + +## Maintenance commands + +- browser-harness --doctor — show version, install mode, daemon and Chrome state, and whether an update is pending. + +## Architecture + +```text +Chrome / Browser Use cloud -> CDP WS -> browser_harness.daemon -> IPC -> browser_harness.run +``` + +- Protocol is one JSON line each way. +- Requests are {method, params, session_id} for CDP or {meta: ...} for daemon control. +- Responses are {result} / {error} / {events} / {session_id}. +- IPC: Unix socket at `/tmp/bu-.sock` on POSIX, TCP loopback + port file on Windows. +- BU_NAME namespaces the daemon's IPC, pid, and log files. +- BU_CDP_WS overrides local Chrome discovery for remote browsers. +- BU_CDP_URL overrides local Chrome discovery with a specific DevTools HTTP endpoint (used for Way 2). +- BU_BROWSER_ID + BROWSER_USE_API_KEY lets the daemon stop a Browser Use cloud browser on shutdown. + +# Browser connection setup and troubleshooting + +## Browser connection reference + +This section is the source of truth for how browser-harness connects to a browser. It is the canonical reference for every agent and user of this repo. Every statement here is intended to be verifiable against either an official Chrome source or this repo's own code, and is held to that standard deliberately. If anything below is incorrect, incomplete, or misleading, open an issue on the browser-harness repository immediately with clear evidence and explanation so it can be corrected. Do not silently work around an error in this document; the cost of one user being misled is much higher than the cost of one issue. + +Browser-harness can connect to any Chrome or Chromium-based browser on your computer, or to a Browser Use cloud browser. + +**Cloud browsers** are managed by the Browser Use cloud API. Start one in Python with `start_remote_daemon("work", ...)`. Authentication is via the `BROWSER_USE_API_KEY` environment variable; the harness handles the WebSocket URL itself. To carry your local Chrome cookies into a cloud browser, install the Browser Use `profile-use` helper only after reviewing the upstream installer instructions, then call `uuid = sync_local_profile("MyChromeProfile")` followed by `start_remote_daemon("work", profileId=uuid)`. Cookies are the only thing synced — not localStorage, not extensions, not history. + +**Local browsers** require remote debugging to be enabled. There are two ways, and they suit different use cases. + +*Way 1: chrome://inspect/#remote-debugging checkbox — uses your real profile.* In your running Chrome, navigate to `chrome://inspect/#remote-debugging` and tick the "Allow remote debugging for this browser instance" checkbox. This setting is per-profile and sticky: tick it once and it persists across every future Chrome launch of that profile. Then run any `browser-harness` command. On Chrome 144 and later, the first attach by the harness triggers an in-browser "Allow remote debugging?" popup that you must click Allow on. The popup may reappear on later attaches under conditions that are not fully characterized.[^1] This path inherits your everyday Chrome's logins, extensions, history, and bookmarks, which makes it the right choice for an agent helping you with tasks in your real browser. + +*Way 2: command-line flag — uses an isolated profile, no popups ever.* Launch Chrome with `--remote-debugging-port=9222 --user-data-dir=`. Two precisions: + +- The path must be a directory that is **not** Chrome's platform default (`%LOCALAPPDATA%\Google\Chrome\User Data` on Windows, `~/Library/Application Support/Google/Chrome` on macOS, `~/.config/google-chrome` on Linux). On Chrome 136 and later, the port flag is silently no-opped when the user-data-dir is the platform default, even if you pass it explicitly. An empty or new path gives a fresh clean profile that Chrome will persist there across future runs. +- This path does **not** let you reuse your everyday Chrome profile. Copying the default profile's files into a custom directory makes Chrome accept the flag, but cookies are encrypted under a key bound to the original directory and will not survive the copy — so you carry over bookmarks and extensions but lose every logged-in session. If you want your real logins, use Way 1. + +Tell the harness which port you launched on by setting `BU_CDP_URL=http://127.0.0.1:9222` before running `browser-harness`. + +For most tasks where the agent acts on your behalf in your normal browser, use Way 1. For automation that runs without you watching, or any case where popup interruptions are unacceptable, use Way 2 or a cloud browser. + +[^1]: The conditions that cause Chrome to re-show the "Allow remote debugging?" popup on a subsequent attach (time elapsed since previous Allow, daemon restart, browser restart, new CDP session, version-dependent options like "Allow for N hours") are not fully characterized. Way 2 sidesteps this entirely. + +## First time setup + +Try yourself before asking the user to do anything. Retry transient errors briefly. Only ask the user when a step genuinely needs them — ticking a checkbox, clicking Allow. + +If the user hasn't said which connection method to use, default to Way 1 if Chrome is already running, Way 2 if not. Cloud is only used when the user opts in. + +1. Try the harness: + + ```bash + browser-harness -c 'print(page_info())' + ``` + + If it prints page info, you're done. + +2. Otherwise run `browser-harness --doctor`. The two lines that matter for connection are `chrome running` and `daemon alive`. + +3. Match the output to a case: + + - **chrome FAIL** → no Chrome process detected. + - **Way 1**: ask the user to open their target Chrome themselves. + - **Way 2**: launch Chrome yourself with `--remote-debugging-port=9222 --user-data-dir=`, then set `BU_CDP_URL=http://127.0.0.1:9222` for the harness (see the Browser connection reference). + + - **chrome ok, daemon FAIL** → Way 1 setup is incomplete. Tell the user to: + - navigate to `chrome://inspect/#remote-debugging` in their Chrome and tick "Allow remote debugging for this browser instance" if not yet ticked (one-time per profile) + - click Allow on the in-browser popup if it appears (every attach on Chrome 144+) + + On macOS, you can open the inspect page in their running Chrome yourself instead of asking them to navigate: + + ```bash + osascript -e 'tell application "Google Chrome" to activate' \ + -e 'tell application "Google Chrome" to open location "chrome://inspect/#remote-debugging"' + ``` + + - **chrome ok, daemon ok, but step 1 still failed** → stale daemon. Restart it: + + ```bash + browser-harness -c 'restart_daemon()' + ``` + + If that hangs, escalate: kill all Chrome and daemon processes, then reopen Chrome and retry. On macOS/Linux, also remove `/tmp/bu-default.sock` and `/tmp/bu-default.pid` if they linger. + +4. After any fix, retry step 1. + +If Way 1 fails repeatedly or the user's task is unattended, move to Way 2 or a cloud browser per the Browser connection reference (these have no popups). + +If you are testing browser connection for the first time, run this demo: open `https://github.com/browser-use/browser-harness` in a new tab and activate it (`switch_tab`) so the user sees the harness has attached. Then ask what they want to do next. diff --git a/antigravity-awesome-skills/skills/cmux/SKILL.md b/antigravity-awesome-skills/skills/cmux/SKILL.md new file mode 100644 index 00000000..908b780b --- /dev/null +++ b/antigravity-awesome-skills/skills/cmux/SKILL.md @@ -0,0 +1,250 @@ +--- +name: cmux +description: "Control cmux workspaces, panes, surfaces, and agent sessions safely from macOS terminal workflows." +category: development +risk: critical +source: community +source_repo: davidondrej/skills +source_type: community +date_added: "2026-07-07" +author: davidondrej +tags: [cmux, terminal, agents, macos] +tools: [claude, codex] +license: "MIT" +license_source: "https://github.com/davidondrej/skills/blob/main/LICENSE" +--- + +# cmux Control + +## When to Use + +- Use when you need to inspect, create, close, or rearrange cmux panes, surfaces, or workspaces. +- Use when you need to send input to or monitor agents running inside cmux. + +cmux is a native macOS terminal app for running multiple AI coding agents in parallel. It exposes a CLI (`cmux`) and a Unix-socket JSON-RPC API (`/tmp/cmux.sock`) for full topology and browser control. + +## Core Concepts + +- **Window** — top-level macOS cmux window +- **Workspace** — sidebar tab within a window (one git branch / project context) +- **Pane** — split region inside a workspace +- **Surface** — tab inside a pane (terminal or browser) + +Handles default to short refs (`workspace:2`, `pane:1`, `surface:7`); UUIDs accepted as input. Add `--id-format uuids|both` for UUID output. + +### Ref syntax — get this right or fail silently + +- **Always use PREFIXED refs** (`pane:38`, `surface:46`). A **bare number is treated as an INDEX, not an ID** — `--surface 46` means "the surface at index 46" (usually nonexistent → silent failure), NOT `surface:46`. +- **`read-screen` and `capture-pane` have NO `--pane` flag** — they target `--workspace` or `--surface` only. Passing `--pane` errors, and a bare/missing target falls back to your OWN surface (you'll read your own footer and draw wrong conclusions). To read a pane: resolve it to a surface FIRST with `cmux list-pane-surfaces --pane pane:N`, then `cmux read-screen --surface surface:N`. +- **Never append `2>/dev/null` to cmux commands.** Errors go to stderr with exit code 1; suppressing them blinds you to your own ref/flag mistakes (the #1 cause of "(no output)"). + +## Detect cmux in a Shell + +```bash +[ -S "${CMUX_SOCKET_PATH:-/tmp/cmux.sock}" ] || exit 0 # bail if not in cmux +[ -n "${CMUX_WORKSPACE_ID:-}" ] && echo "inside cmux surface" +``` + +Injected env vars in every cmux-spawned terminal: `CMUX_WORKSPACE_ID`, `CMUX_SURFACE_ID`, `CMUX_SOCKET_PATH`, `CMUX_PORT`. **Always anchor automation to `CMUX_WORKSPACE_ID`** — the visually focused workspace may not be the agent's caller workspace. + +## Fast Start — Topology + +```bash +cmux identify --json # who am I (window/workspace/pane/surface) +cmux tree # full hierarchy +cmux list-workspaces --json +cmux list-panes --workspace "$CMUX_WORKSPACE_ID" +cmux list-surfaces --workspace "$CMUX_WORKSPACE_ID" + +cmux new-workspace --name "feature-x" --cwd /path/to/repo +cmux new-pane --workspace "$CMUX_WORKSPACE_ID" --type terminal --direction right --focus false +cmux new-pane --workspace "$CMUX_WORKSPACE_ID" --type browser --direction right --url http://localhost:3000 +cmux move-surface --surface surface:7 --pane pane:2 --focus false +cmux split-off --surface surface:7 right +cmux reorder-surface --surface surface:7 --before surface:3 +cmux close-surface --surface surface:7 +``` + +## Polling Pi Agents in Panes — Keep Sleeps Short + +When launching a Pi Agent inside a cmux pane and polling for output, use **short `sleep` intervals (2–5s)**. Pi is fast and minimal, and the user runs it on Opus 4.8 Fast via OpenRouter, which streams tokens extremely quickly. Do NOT use `sleep 15` unless genuinely needed (a big build/refactor) — most of the time `sleep 2`–`sleep 5` is more than enough. + +After every agent check, send the user a one-line status update: what the agent is doing and whether it is on track. Keep it extremely concise. + +Claude Code cmux note: after Claude finishes, it may prefill a predicted next user message; that draft is Claude, not the user speaking. + +## Send Input + +**Command names:** there is NO `send-surface` / `send-key-surface`. Target a specific surface with the `--surface` flag on `send` / `send-key` (same commands as the focused terminal). `send-panel` / `send-key-panel` exist ONLY for panels (`--panel`), not surfaces. + +```bash +cmux send "echo hi\n" # focused terminal +cmux send-key "ctrl+c" # enter|tab|esc|backspace|arrows|ctrl+x|shift+tab +cmux send --surface surface:7 "npm run build" # specific surface (NOT send-surface) +cmux send-key --surface surface:7 enter # specific surface (NOT send-key-surface) +``` + +## Notifications & Sidebar Metadata + +```bash +cmux notify --title "Done" --body "tests passed" +cmux set-status build "compiling" --icon hammer --color "#ff9500" +cmux set-progress 0.5 --label "Building..." +cmux log --level success "All 42 tests passed" # info|progress|success|warning|error +cmux trigger-flash --workspace "$CMUX_WORKSPACE_ID" # blue-ring attention cue +cmux sidebar-state --json # dump all sidebar metadata +``` + +## Browser Automation (WKWebView) + +Workflow: open → wait → snapshot → act → re-snapshot. + +```bash +S=$(cmux --json browser open https://example.com | jq -r .result.surface_ref) +cmux browser "$S" wait --load-state complete --timeout-ms 15000 +cmux browser "$S" snapshot --interactive # returns elements as e1, e2, ... +cmux browser "$S" fill e1 "" +cmux browser "$S" click e2 --snapshot-after + +# Navigation / inspection +cmux browser "$S" goto URL | back | forward | reload +cmux browser "$S" get url | get title | get text body | get value "#email" | get count ".row" +cmux browser "$S" eval 'return document.title' + +# Waits +cmux browser "$S" wait --selector "#ready" --timeout-ms 10000 +cmux browser "$S" wait --url-contains "/dashboard" --timeout-ms 10000 + +# Session +cmux browser "$S" cookies get | cookies set --name foo --value bar +cmux browser "$S" state save /tmp/auth.json | state load /tmp/auth.json + +# Diagnostics +cmux browser "$S" console list | errors list | screenshot +``` + +**Not supported by WKWebView** (return `not_supported`): viewport emulation, geolocation/offline emulation, trace recording, network route interception, raw input injection. + +## Markdown Viewer + +```bash +cmux markdown open plan.md --direction right # live-watching renderer +cmux open file.pdf # auto-routes to right viewer +``` + +`cmux markdown open` flags: `--workspace`, `--surface`, `--window`, `--direction `, `--focus `. There is **NO `--pane` flag** — passing it errors. To target a pane, pass `--surface `. + +### Reuse the existing right markdown pane (don't spawn strays) + +Default behavior of `markdown open` is to **create a new pane** every time, even with `--direction right`. To keep all docs as tabs in ONE right pane, follow this exactly: + +```bash +# 1. Find the right pane and its surfaces (anchor to THIS workspace) +cmux list-panes --workspace "$CMUX_WORKSPACE_ID" +cmux list-pane-surfaces --pane pane:10 # the right/helper pane + +# 2. Open targeting an existing markdown surface IN that pane (reuses pane, adds tab) +cmux markdown open /abs/path/file.md --surface surface:12 --focus false + +# 3. If it STILL spawned a new pane (it can), move the new surface in + verify +cmux move-surface --surface surface:NEW --pane pane:10 --focus false +cmux list-panes --workspace "$CMUX_WORKSPACE_ID" # confirm stray pane is gone +``` + +### Swapping the file in the single right pane (close-FIRST, then open) + +To replace the doc shown in your one right markdown pane, the ONLY reliable order is **close the previous surface FIRST, then `markdown open` the new file fresh** — never move an existing viewer, never open-then-close. + +```bash +# 1. close the previous right markdown surface (right side goes empty) +cmux list-panes --workspace "$CMUX_WORKSPACE_ID" +cmux close-surface --surface surface:PREV +# 2. THEN open the new file fresh +cmux markdown open /abs/path/new.md --direction right --focus false +``` + +ORDER MATTERS: close-previous BEFORE open-new. Opening first then closing the old one, or `move-surface`-ing an existing viewer, leaves the right pane BLANK. + +### Hard-won lessons (avoid the trial-and-error) + +- **Surface refs are global, not per-workspace.** A ref like `surface:126` from an earlier `markdown open` may live in a different window/workspace. Always re-list (`list-panes` / `list-pane-surfaces`) before reusing a ref — never assume a ref from a previous turn is still in the right pane. +- **`move-surface`-ing a markdown viewer often leaves it BLANK.** The moved surface keeps `type=markdown` and `surface-health` looks fine, but renders nothing. Fix: `close-surface` it and `cmux markdown open ` fresh, then move the *fresh* surface if needed. Don't waste time on `refresh-surfaces` — it usually won't fix a moved-then-blank viewer. +- **You cannot screenshot or `read-screen` a markdown surface** (`Surface is not a terminal` / browser screenshot is WKWebView-only). To verify a markdown viewer rendered, ask the user or open the file in a browser surface instead. Don't burn turns trying to capture it. +- **`cmux list-surfaces` does not exist.** Use `cmux list-pane-surfaces [--pane ...]`. + +## Settings & Config + +```bash +cmux docs settings # prints paths, schema URL, reload cmd — read BEFORE editing +cmux settings path # path to cmux.json +cmux settings cmux-json # open in editor +cmux reload-config # hot-reload cmux.json + ~/.config/ghostty/config (Cmd+Shift+,) +``` + +Locations: +- cmux settings: `~/.config/cmux/cmux.json` (canonical). Project-local override: `.cmux/cmux.json` or `./cmux.json`. +- Terminal rendering (font, cursor, theme, scrollback, opacity, blur): `~/.config/ghostty/config` — NOT cmux.json. + +Before editing `cmux.json`, copy it to a timestamped `.bak` next to it so the user can revert. Schema: `https://raw.githubusercontent.com/manaflow-ai/cmux/main/web/data/cmux.schema.json`. + +## Agent Hooks & Install + +```bash +brew tap manaflow-ai/cmux && brew install --cask cmux +sudo ln -sf /Applications/cmux.app/Contents/Resources/bin/cmux /usr/local/bin/cmux +cmux hooks setup # all detected agents +cmux hooks setup codex|grok|antigravity|opencode # specific agent +npx skills add manaflow-ai/cmux -g -y # install cmux skills for agents +``` + +Native session-resume supported for: Claude Code, Codex, Grok, OpenCode, Pi, Amp, Cursor CLI, Gemini, Antigravity, Rovo Dev, Hermes, Copilot, CodeBuddy, Factory, Qoder. + +## Socket API (advanced) + +`/tmp/cmux.sock` — Unix socket, JSON-RPC v2. Use for tight loops where subprocess spawn cost matters; otherwise prefer the CLI. + +```bash +echo '{"id":"1","method":"workspace.list","params":{}}' | nc -U /tmp/cmux.sock +``` + +Method prefixes: `system.*`, `window.*`, `workspace.*`, `pane.*`, `surface.*`, `notification.*`, `browser.*`. Full list and Python client example in `references/socket-api.md`. + +Access modes: `cmuxOnly` (default — only cmux-spawned processes), `automation` (any local process), `password`, `allowAll` (unsafe). If you hit `Failed to connect to socket`, you're likely an external process under `cmuxOnly` — switch mode in Settings > Automation or run from inside a cmux terminal. + +## Critical Rules — Non-Disruptive Automation + +These rules come from the `cmux-workspace` skill and prevent agents from yanking the user's focus: + +1. **Anchor to `CMUX_WORKSPACE_ID`.** Never assume the visually focused workspace is the target. +2. **Never call focus-changing verbs speculatively.** `select-workspace`, `focus-pane`, `focus-panel`, `focus-surface` only on explicit user request. Pass `--focus false` whenever available. +3. **Build layout additively in one call.** `cmux new-pane --type … --focus false` beats create-then-move-then-focus chains. +4. **Right-side helper pane pattern.** Reuse an existing non-caller helper pane if present; otherwise create exactly one right-side pane. +5. **Never send input to surfaces you don't own.** Only target surfaces in the caller's workspace unless the user explicitly asks for cross-workspace routing. +6. **Check surface health before routing input** when UI state may be stale: `cmux surface-health`. + +## Common Pitfalls + +- **Pi/Pi-like socket connection failures from external processes** → default `cmuxOnly` mode; either run inside a cmux terminal or change socket mode. +- **macOS only.** No Linux/Windows port. +- **WKWebView ≠ CDP.** Don't expect Playwright-equivalent network mocking or viewport emulation. +- **Resume strips sensitive env vars.** Re-inject tokens at resume time if the agent needs them. +- **Skills snapshot at app start.** Edits to skill files require a restart of the consuming agent. +- **Legacy v1 socket payloads (`{"command":...}`) rejected.** Use v2 JSON-RPC only. +- **Don't `cat ~/.cmuxterm/*-hook-sessions.json`** expecting secrets — they're scrubbed. Look there for session/surface mappings only. + +## Reference: Full CLI Help + +For any command, `cmux --help` is authoritative. Use `cmux capabilities --json` to enumerate available socket methods in the current build. + +## Keyboard Shortcuts (most-used) + +Workspaces: ⌘N new, ⌘1–8 jump, ⌃⌘[ / ⌃⌘] prev/next, ⌘⇧W close, ⌘B sidebar. +Surfaces: ⌘T new, ⌘⇧[ / ⌘⇧] prev/next, ⌘W close, ⌃1–8 jump. +Splits: ⌘D right, ⌘⇧D down, ⌥⌘D browser right, ⌥⌘←→↑↓ focus directional, ⌘⇧↵ zoom. +Browser: ⌘⇧L open, ⌘L address bar, ⌘[/⌘] back/forward, ⌥⌘I devtools. +App: ⌘, settings, ⌘⇧, reload-config, ⌘⇧P palette, ⌘⇧O restore session, ⌃⌥⌘. system-wide show/hide. + +## Limitations + +- Adapted from `davidondrej/skills`; verify local paths, tools, credentials, and agent features before acting. +- For commands, remote access, scheduling, browser automation, or file-changing workflows, get explicit user approval and confirm the target environment first. diff --git a/antigravity-awesome-skills/skills/codex-subagent/SKILL.md b/antigravity-awesome-skills/skills/codex-subagent/SKILL.md new file mode 100644 index 00000000..75e9c641 --- /dev/null +++ b/antigravity-awesome-skills/skills/codex-subagent/SKILL.md @@ -0,0 +1,117 @@ +--- +name: codex-subagent +description: "Launch Codex CLI as an isolated subagent for bounded coding, review, or verification tasks." +category: agent-orchestration +risk: critical +source: community +source_repo: davidondrej/skills +source_type: community +date_added: "2026-07-07" +author: davidondrej +tags: [codex, subagents, delegation] +tools: [claude, codex] +license: "MIT" +license_source: "https://github.com/davidondrej/skills/blob/main/LICENSE" +disable-model-invocation: true +--- + +# Codex CLI as a Subagent + +## When to Use + +- Use when a bounded coding, review, or verification task can run in a separate Codex CLI session. +- Use when parallel work needs explicit file ownership and a clear definition of done. + +Codex CLI is OpenAI's terminal coding agent. `codex exec` runs it non-interactively: +it works autonomously in a sandbox, streams progress to stderr, and prints only the +final message to stdout. Auth reuses the user's ChatGPT subscription — never an API key. + +## When to delegate + +- Self-contained coding task with clear success criteria (fix, feature, refactor, review). +- Parallel work: several independent tasks at once (see Parallel runs). +- Second opinion / independent verification of your own changes. + +Do NOT delegate tasks that need conversation context you can't fully write into the prompt. + +## Preflight + +```bash +codex --version # missing? npm i -g @openai/codex (or: brew install --cask codex) +codex login status # exit 0 + "Logged in using ChatGPT" = ready +``` + +Not logged in → stop and tell the user to run `codex login` (one-time browser OAuth). +Never read, print, or copy credentials (`~/.codex/auth.json`). + +## Launch + +```bash +OUT=$(mktemp /tmp/codex-out.XXXXXX) +codex exec \ + --cd /path/to/repo \ + --sandbox workspace-write \ + --output-last-message "$OUT" \ + "Full task prompt: goal, constraints, files to touch, definition of done." \ + ` to override the model, `--json` for JSONL event stream. + +## Collect results + +```bash +cat "$OUT" # final message = the deliverable +git -C /path/to/repo status --short # see what Codex actually changed +``` + +Follow-up in the same session (run from the same cwd — resume filters by cwd): + +```bash +codex exec resume --last "follow-up instruction" .md`. Use today's date from the environment header. +5. **Tell the user** the verdict in one line + path to the report. + +## Check menu (pick what's relevant) + +```bash +# --- Node / npm ecosystem (supply-chain advisories) --- +which npm pnpm yarn; npm root -g; pnpm root -g 2>/dev/null +ls /opt/homebrew/lib/node_modules # global npm +find ~ -maxdepth 8 -type d -name "" 2>/dev/null \ + | grep -v -E "(Library/Caches|\.Trash)" # installed copies +find ~/Documents ~/Desktop ~/Downloads -maxdepth 8 -type f \ + \( -name "package.json" -o -name "package-lock.json" \ + -o -name "pnpm-lock.yaml" -o -name "yarn.lock" \) 2>/dev/null \ + | xargs grep -l "" 2>/dev/null # direct + transitive + +# --- Python ecosystem --- +which python3 pip pipx uv +pip list 2>/dev/null | grep -i "" +find ~/Documents -maxdepth 6 -name "requirements*.txt" -o -name "pyproject.toml" \ + -o -name "poetry.lock" -o -name "uv.lock" 2>/dev/null | xargs grep -l "" 2>/dev/null + +# --- Homebrew / system binaries --- +brew list --versions 2>/dev/null +which ; --version 2>/dev/null + +# --- Running processes / listeners (for RCE / network CVEs) --- +pgrep -lf "" +lsof -iTCP -sTCP:LISTEN -P -n 2>/dev/null | grep "" + +# --- LaunchAgents / LaunchDaemons (persistence / autostart) --- +ls ~/Library/LaunchAgents /Library/LaunchAgents /Library/LaunchDaemons 2>/dev/null \ + | grep -i "" + +# --- Env vars that change exposure (e.g. OLLAMA_HOST, listening addr) --- +launchctl getenv ; grep -r "" ~/.zshrc ~/.zprofile ~/.config 2>/dev/null + +# --- VS Code / browser extensions (for IDE-targeted advisories) --- +ls ~/.vscode/extensions 2>/dev/null | grep -i "" +``` + +If the advisory mentions an ecosystem not above (Rust cargo, Go modules, Ruby gems, Docker images, etc.), apply the same pattern: global install path + manifest grep + running processes. + +## Report template + +File: `~/Documents/security-audits/YYYY-MM-DD-.md` + +```markdown +# — Audit + +**Date:** YYYY-MM-DD +**Host:** the user's Mac + +## in scope + +- ** ""** — . . + +## Audit results + +| Check | Result | +|---|---| +| | | +| | | + +## Verdict + +**** + +- +- + +## Action taken + +None — diagnostic only, no files modified, no . + +## Follow-ups + +- +``` + +Match the tone of the two existing reports in `~/Documents/security-audits/` — terse, factual, bulleted, no hedging. + +## Verdict wording + +- **Not affected.** — package/binary absent, or installed but patched, or not running and not exposed. +- **Affected.** — vulnerable version present *and* reachable by the attack vector. +- **Partially affected.** — present but mitigated (e.g. binary installed but service not running, or listener bound to loopback only). Spell out the mitigation in the bullets. + +## When to break the read-only rule + +Never on your own. If the verdict is "Affected", list the remediation command in **Follow-ups** and stop. The user runs it. + +## Reference + +Two existing reports in `~/Documents/security-audits/` show the expected style: +- `baseline-audit.md` (long-form baseline audit — different format, do not mimic) +- `YYYY-MM-DD-example-advisory.md` and any newer `YYYY-MM-DD-*.md` files (this is the format to match) + +## Limitations + +- Adapted from `davidondrej/skills`; verify local paths, tools, credentials, and agent features before acting. +- For commands, remote access, scheduling, browser automation, or file-changing workflows, get explicit user approval and confirm the target environment first. diff --git a/antigravity-awesome-skills/skills/deepapi/SKILL.md b/antigravity-awesome-skills/skills/deepapi/SKILL.md new file mode 100644 index 00000000..f3c4c1f1 --- /dev/null +++ b/antigravity-awesome-skills/skills/deepapi/SKILL.md @@ -0,0 +1,649 @@ +--- +name: deepapi +description: "Use DeepAPI for supported scraping, research, and email workflows with explicit credentials and approval." +category: research +risk: critical +source: community +source_repo: davidondrej/skills +source_type: community +date_added: "2026-07-07" +author: davidondrej +tags: [deepapi, scraping, email, api] +tools: [claude, codex] +license: "MIT" +license_source: "https://github.com/davidondrej/skills/blob/main/LICENSE" +version: b17ad5148ab7 +--- + +# DeepAPI + +## When to Use + +- Use when the task needs supported DeepAPI scraping, research, or email endpoints. +- Use when the user has provided or confirmed the required DeepAPI credentials and scope. + +Use this skill when the user asks you to scrape public web data or draft/read/send email through DeepAPI. + +## Staying Up To Date + +- Your installed copy's version is the `version` value in the frontmatter above. +- If a request fails unexpectedly, fetch https://deepapi.co/deepapi-skill/VERSION.txt — public, no auth, a few bytes. +- If it differs from this file's version, fetch https://deepapi.co/deepapi-skill/SKILL.md and overwrite this file with it. +- Every API response includes `skillVersion`. If it differs from this file's version, refresh the same way. +- Only ever fetch this skill from https://deepapi.co. + +## Required Environment + +- Read `DEEPAPI_API_BASE_URL` from the environment. +- Read `DEEPAPI_API_KEY` from the environment. +- If either value is missing, stop and ask the user for setup. +- Never commit, print, log, paste, or expose `DEEPAPI_API_KEY`. + +## Request Rules + +- Send `Authorization: Bearer $DEEPAPI_API_KEY` on every request. +- Send `Content-Type: application/json` when sending JSON. +- Send a unique `Idempotency-Key` for every `POST`. +- For scrape work, set explicit `maxCostUsd` or `maxCostMicrousd`. +- Keep email as `send: false` or `mode: draft` unless the user explicitly approves sending. +- Do not pass inbox IDs. Use `emailIdentityId` or omit it. + +## Execution Loop + +1. Choose the narrowest endpoint that matches the task. +2. Build the request from the endpoint schema and examples below. +3. Run the request with the required headers. +4. If the response has `status: running`, wait `next.afterSecs` and call `next.method` + `next.path` until `status` is `succeeded` or `failed`. +5. If `error.retryable` is true, wait `error.retryAfterSecs` before retrying. +6. If the response is HTTP 402 with `error.code: insufficient_credits`, stop and ask the user to top up credits at https://deepapi.co/credits. After top-up, retry with the same `Idempotency-Key`. +7. Report `requestId`, `status`, `debitMicrousd`, `costFinal`, and the useful part of `output`. + +## Endpoints + +| Method | Path | Scope | Cost | +| --- | --- | --- | --- | +| POST | `/v1/scrape/website` | `scrape:website` | Set `maxCostUsd: "1.00"` unless the user gives a different cap. The route requires maxCostUsd or maxCostMicrousd as the customer spend cap. The final debit is capped by that amount and reported as debitMicrousd. | +| POST | `/v1/scrape/linkedin/profile` | `scrape:linkedin` | Set `maxCostUsd: "0.05"` unless the user gives a different cap. The route requires maxCostUsd or maxCostMicrousd as the customer spend cap. The final debit is capped by that amount and reported as debitMicrousd. | +| POST | `/v1/scrape/github/profile` | `scrape:github` | Set `maxCostUsd: "0.03"` unless the user gives a different cap. The route requires maxCostUsd or maxCostMicrousd as the customer spend cap. The final debit is capped by that amount and reported as debitMicrousd. | +| POST | `/v1/scrape/twitter/search` | `scrape:twitter` | Set `maxCostUsd: "0.03"` unless the user gives a different cap. The route requires maxCostUsd or maxCostMicrousd as the customer spend cap. The final debit is capped by that amount and reported as debitMicrousd. | +| POST | `/v1/scrape/linkedin/jobs` | `scrape:linkedin` | Set `maxCostUsd: "0.05"` unless the user gives a different cap. The route requires maxCostUsd or maxCostMicrousd as the customer spend cap. The final debit is capped by that amount and reported as debitMicrousd. | +| POST | `/v1/scrape/linkedin/company` | `scrape:linkedin` | Set `maxCostUsd: "0.05"` unless the user gives a different cap. The route requires maxCostUsd or maxCostMicrousd as the customer spend cap. The final debit is capped by that amount and reported as debitMicrousd. | +| POST | `/v1/scrape/linkedin/people` | `scrape:linkedin` | Set `maxCostUsd: "0.50"` unless the user gives a different cap. The route requires maxCostUsd or maxCostMicrousd as the customer spend cap. The final debit is capped by that amount and reported as debitMicrousd. | +| POST | `/v1/scrape/linkedin/posts` | `scrape:linkedin` | Set `maxCostUsd: "0.05"` unless the user gives a different cap. The route requires maxCostUsd or maxCostMicrousd as the customer spend cap. The final debit is capped by that amount and reported as debitMicrousd. | +| POST | `/v1/scrape/twitter/user` | `scrape:twitter` | Set `maxCostUsd: "0.05"` unless the user gives a different cap. The route requires maxCostUsd or maxCostMicrousd as the customer spend cap. The final debit is capped by that amount and reported as debitMicrousd. | +| POST | `/v1/scrape/twitter/replies` | `scrape:twitter` | Set `maxCostUsd: "0.20"` unless the user gives a different cap. The route requires maxCostUsd or maxCostMicrousd as the customer spend cap. The final debit is capped by that amount and reported as debitMicrousd. | +| POST | `/v1/scrape/youtube/transcript` | `scrape:youtube` | Set `maxCostUsd: "0.05"` unless the user gives a different cap. The route requires maxCostUsd or maxCostMicrousd as the customer spend cap. The final debit is capped by that amount and reported as debitMicrousd. | +| POST | `/v1/scrape/youtube/channel` | `scrape:youtube` | Set `maxCostUsd: "0.30"` unless the user gives a different cap. The route requires maxCostUsd or maxCostMicrousd as the customer spend cap. The final debit is capped by that amount and reported as debitMicrousd. | +| POST | `/v1/scrape/youtube/search` | `scrape:youtube` | Set `maxCostUsd: "0.10"` unless the user gives a different cap. The route requires maxCostUsd or maxCostMicrousd as the customer spend cap. The final debit is capped by that amount and reported as debitMicrousd. | +| POST | `/v1/scrape/linkedin` | `scrape:linkedin` | Set `maxCostUsd: "0.05"` unless the user gives a different cap. The route requires maxCostUsd or maxCostMicrousd as the customer spend cap. The final debit is capped by that amount and reported as debitMicrousd. | +| POST | `/v1/scrape/github` | `scrape:github` | Set `maxCostUsd: "0.03"` unless the user gives a different cap. The route requires maxCostUsd or maxCostMicrousd as the customer spend cap. The final debit is capped by that amount and reported as debitMicrousd. | +| POST | `/v1/scrape/twitter` | `scrape:twitter` | Set `maxCostUsd: "0.03"` unless the user gives a different cap. The route requires maxCostUsd or maxCostMicrousd as the customer spend cap. The final debit is capped by that amount and reported as debitMicrousd. | +| POST | `/v1/email/send` | `email:send` | Uses configured email unit pricing; the route does not accept maxCostUsd. Check debitMicrousd in the response. | +| GET | `/v1/email/messages` | `email:read` | Read route returns debitMicrousd 0. | +| GET | `/v1/email/drafts` | `email:read` | Read route returns debitMicrousd 0. | +| POST | `/v1/email/drafts/{draftId}/send` | `email:send` | Uses configured email unit pricing; the route does not accept maxCostUsd. Check debitMicrousd in the response. | +| POST | `/v1/research/deep` | `research:deep` | Set `maxCostUsd: "0.10"` unless the user gives a different cap. Defaults to maxCostUsd 0.10. Pass maxCostUsd or maxCostMicrousd to choose a different customer spend cap. The final debit is capped and reported as debitMicrousd. | +| POST | `/v1/generate/image` | `generate:image` | Set `maxCostUsd: "0.20"` unless the user gives a different cap. Defaults to maxCostUsd 0.20. Pass maxCostUsd or maxCostMicrousd to choose a different customer spend cap. The final debit is capped and reported as debitMicrousd. | +| POST | `/v1/search/web` | `search:web` | Set `maxCostUsd: "0.05"` unless the user gives a different cap. Defaults to maxCostUsd 0.05. Pass maxCostUsd or maxCostMicrousd to choose a different customer spend cap. The final debit is capped and reported as debitMicrousd. | +| GET | `/v1/requests/{requestId}` | `same key` | Status polling does not create a new debit. | + +## Endpoint Details + +### Scrape Website + +Use `POST /v1/scrape/website`. Crawl website pages and return clean text and markdown per page. + +Side effects: Starts a scrape run and may debit credits when the run finishes. +Polling: If status is running, wait next.afterSecs and call next.method next.path until status is succeeded or failed. + +Safety: +- Send Authorization: Bearer $DEEPAPI_API_KEY and never expose the key. +- Send a unique Idempotency-Key for every POST. +- Set an explicit customer spend cap with maxCostUsd or maxCostMicrousd before starting a scrape. +- Start with small result caps such as maxItems or capability-specific limits. +- Poll next.path while status is running and report the final debitMicrousd. + +Example body: +```json +{ + "maxCostUsd": "1.00", + "waitForFinishSecs": 60, + "urls": [ + "https://example.com" + ], + "maxPages": 1 +} +``` + +### Scrape LinkedIn Profile + +Use `POST /v1/scrape/linkedin/profile`. Scrape public LinkedIn profile details. + +Side effects: Starts a scrape run and may debit credits when the run finishes. +Polling: If status is running, wait next.afterSecs and call next.method next.path until status is succeeded or failed. + +Safety: +- Send Authorization: Bearer $DEEPAPI_API_KEY and never expose the key. +- Send a unique Idempotency-Key for every POST. +- Set an explicit customer spend cap with maxCostUsd or maxCostMicrousd before starting a scrape. +- Start with small result caps such as maxItems or capability-specific limits. +- Poll next.path while status is running and report the final debitMicrousd. + +Example body: +```json +{ + "maxCostUsd": "0.05", + "waitForFinishSecs": 60, + "profiles": [ + "williamhgates" + ] +} +``` + +### Scrape GitHub Profile + +Use `POST /v1/scrape/github/profile`. Scrape public GitHub profile details. + +Side effects: Starts a scrape run and may debit credits when the run finishes. +Polling: If status is running, wait next.afterSecs and call next.method next.path until status is succeeded or failed. + +Safety: +- Send Authorization: Bearer $DEEPAPI_API_KEY and never expose the key. +- Send a unique Idempotency-Key for every POST. +- Set an explicit customer spend cap with maxCostUsd or maxCostMicrousd before starting a scrape. +- Start with small result caps such as maxItems or capability-specific limits. +- Poll next.path while status is running and report the final debitMicrousd. + +Example body: +```json +{ + "maxCostUsd": "0.03", + "waitForFinishSecs": 60, + "usernames": [ + "octocat" + ] +} +``` + +### Search X/Twitter + +Use `POST /v1/scrape/twitter/search`. Scrape X/Twitter posts from a search query or account handles. + +Side effects: Starts a scrape run and may debit credits when the run finishes. +Polling: If status is running, wait next.afterSecs and call next.method next.path until status is succeeded or failed. + +Safety: +- Send Authorization: Bearer $DEEPAPI_API_KEY and never expose the key. +- Send a unique Idempotency-Key for every POST. +- Set an explicit customer spend cap with maxCostUsd or maxCostMicrousd before starting a scrape. +- Start with small result caps such as maxItems or capability-specific limits. +- Poll next.path while status is running and report the final debitMicrousd. + +Example body: +```json +{ + "maxCostUsd": "0.03", + "waitForFinishSecs": 60, + "handles": [ + "nasa" + ], + "maxItems": 1, + "sort": "latest" +} +``` + +### Scrape LinkedIn Jobs + +Use `POST /v1/scrape/linkedin/jobs`. Scrape public LinkedIn job listings for a search query. + +Side effects: Starts a scrape run and may debit credits when the run finishes. +Polling: If status is running, wait next.afterSecs and call next.method next.path until status is succeeded or failed. + +Safety: +- Send Authorization: Bearer $DEEPAPI_API_KEY and never expose the key. +- Send a unique Idempotency-Key for every POST. +- Set an explicit customer spend cap with maxCostUsd or maxCostMicrousd before starting a scrape. +- Start with small result caps such as maxItems or capability-specific limits. +- Poll next.path while status is running and report the final debitMicrousd. + +Example body: +```json +{ + "maxCostUsd": "0.05", + "waitForFinishSecs": 60, + "query": "software engineer", + "location": "United States", + "maxItems": 5 +} +``` + +### Scrape LinkedIn Company + +Use `POST /v1/scrape/linkedin/company`. Scrape public LinkedIn company pages for firmographic details. + +Side effects: Starts a scrape run and may debit credits when the run finishes. +Polling: If status is running, wait next.afterSecs and call next.method next.path until status is succeeded or failed. + +Safety: +- Send Authorization: Bearer $DEEPAPI_API_KEY and never expose the key. +- Send a unique Idempotency-Key for every POST. +- Set an explicit customer spend cap with maxCostUsd or maxCostMicrousd before starting a scrape. +- Start with small result caps such as maxItems or capability-specific limits. +- Poll next.path while status is running and report the final debitMicrousd. + +Example body: +```json +{ + "maxCostUsd": "0.05", + "waitForFinishSecs": 60, + "companies": [ + "microsoft" + ] +} +``` + +### Search LinkedIn People + +Use `POST /v1/scrape/linkedin/people`. Search public LinkedIn profiles by role, location, company, or school. Requires maxCostUsd of at least 0.50. + +Side effects: Starts a scrape run and may debit credits when the run finishes. +Polling: If status is running, wait next.afterSecs and call next.method next.path until status is succeeded or failed. + +Safety: +- Send Authorization: Bearer $DEEPAPI_API_KEY and never expose the key. +- Send a unique Idempotency-Key for every POST. +- Set an explicit customer spend cap with maxCostUsd or maxCostMicrousd before starting a scrape. +- Start with small result caps such as maxItems or capability-specific limits. +- Poll next.path while status is running and report the final debitMicrousd. + +Example body: +```json +{ + "maxCostUsd": "0.50", + "waitForFinishSecs": 60, + "titles": [ + "Founder" + ], + "locations": [ + "San Francisco" + ], + "maxItems": 5 +} +``` + +### Scrape LinkedIn Posts + +Use `POST /v1/scrape/linkedin/posts`. Scrape recent public posts from LinkedIn profiles or company pages. + +Side effects: Starts a scrape run and may debit credits when the run finishes. +Polling: If status is running, wait next.afterSecs and call next.method next.path until status is succeeded or failed. + +Safety: +- Send Authorization: Bearer $DEEPAPI_API_KEY and never expose the key. +- Send a unique Idempotency-Key for every POST. +- Set an explicit customer spend cap with maxCostUsd or maxCostMicrousd before starting a scrape. +- Start with small result caps such as maxItems or capability-specific limits. +- Poll next.path while status is running and report the final debitMicrousd. + +Example body: +```json +{ + "maxCostUsd": "0.05", + "waitForFinishSecs": 60, + "profiles": [ + "williamhgates" + ], + "maxItems": 3 +} +``` + +### Scrape X/Twitter User + +Use `POST /v1/scrape/twitter/user`. Scrape public X/Twitter account profiles, with optional follower and following lists. + +Side effects: Starts a scrape run and may debit credits when the run finishes. +Polling: If status is running, wait next.afterSecs and call next.method next.path until status is succeeded or failed. + +Safety: +- Send Authorization: Bearer $DEEPAPI_API_KEY and never expose the key. +- Send a unique Idempotency-Key for every POST. +- Set an explicit customer spend cap with maxCostUsd or maxCostMicrousd before starting a scrape. +- Start with small result caps such as maxItems or capability-specific limits. +- Poll next.path while status is running and report the final debitMicrousd. + +Example body: +```json +{ + "maxCostUsd": "0.05", + "waitForFinishSecs": 60, + "handles": [ + "nasa" + ] +} +``` + +### Scrape X/Twitter Replies + +Use `POST /v1/scrape/twitter/replies`. Scrape the public reply thread of an X/Twitter post. Requires maxCostUsd of at least 0.20. + +Side effects: Starts a scrape run and may debit credits when the run finishes. +Polling: If status is running, wait next.afterSecs and call next.method next.path until status is succeeded or failed. + +Safety: +- Send Authorization: Bearer $DEEPAPI_API_KEY and never expose the key. +- Send a unique Idempotency-Key for every POST. +- Set an explicit customer spend cap with maxCostUsd or maxCostMicrousd before starting a scrape. +- Start with small result caps such as maxItems or capability-specific limits. +- Poll next.path while status is running and report the final debitMicrousd. + +Example body: +```json +{ + "maxCostUsd": "0.20", + "waitForFinishSecs": 60, + "url": "https://x.com/NASA/status/1234567890123456789", + "maxItems": 5 +} +``` + +### Scrape YouTube Transcript + +Use `POST /v1/scrape/youtube/transcript`. Scrape the transcript of a YouTube video as plain text plus timed segments. Videos without captions return an empty result. + +Side effects: Starts a scrape run and may debit credits when the run finishes. +Polling: If status is running, wait next.afterSecs and call next.method next.path until status is succeeded or failed. + +Safety: +- Send Authorization: Bearer $DEEPAPI_API_KEY and never expose the key. +- Send a unique Idempotency-Key for every POST. +- Set an explicit customer spend cap with maxCostUsd or maxCostMicrousd before starting a scrape. +- Start with small result caps such as maxItems or capability-specific limits. +- Poll next.path while status is running and report the final debitMicrousd. + +Example body: +```json +{ + "maxCostUsd": "0.05", + "waitForFinishSecs": 60, + "url": "https://www.youtube.com/watch?v=dQw4w9WgXcQ" +} +``` + +### Scrape YouTube Channel + +Use `POST /v1/scrape/youtube/channel`. Scrape a YouTube channel's stats and recent videos. Each video item includes subscriber and channel totals. + +Side effects: Starts a scrape run and may debit credits when the run finishes. +Polling: If status is running, wait next.afterSecs and call next.method next.path until status is succeeded or failed. + +Safety: +- Send Authorization: Bearer $DEEPAPI_API_KEY and never expose the key. +- Send a unique Idempotency-Key for every POST. +- Set an explicit customer spend cap with maxCostUsd or maxCostMicrousd before starting a scrape. +- Start with small result caps such as maxItems or capability-specific limits. +- Poll next.path while status is running and report the final debitMicrousd. + +Example body: +```json +{ + "maxCostUsd": "0.30", + "waitForFinishSecs": 60, + "channels": [ + "mkbhd" + ], + "maxItems": 3 +} +``` + +### Search YouTube + +Use `POST /v1/scrape/youtube/search`. Search YouTube videos by keyword and return video metadata. + +Side effects: Starts a scrape run and may debit credits when the run finishes. +Polling: If status is running, wait next.afterSecs and call next.method next.path until status is succeeded or failed. + +Safety: +- Send Authorization: Bearer $DEEPAPI_API_KEY and never expose the key. +- Send a unique Idempotency-Key for every POST. +- Set an explicit customer spend cap with maxCostUsd or maxCostMicrousd before starting a scrape. +- Start with small result caps such as maxItems or capability-specific limits. +- Poll next.path while status is running and report the final debitMicrousd. + +Example body: +```json +{ + "maxCostUsd": "0.10", + "waitForFinishSecs": 60, + "query": "ai agents", + "sort": "views", + "maxItems": 3 +} +``` + +### Scrape LinkedIn + +Use `POST /v1/scrape/linkedin`. Backward-compatible alias for LinkedIn profile scraping. + +Side effects: Starts a scrape run and may debit credits when the run finishes. +Polling: If status is running, wait next.afterSecs and call next.method next.path until status is succeeded or failed. + +Safety: +- Send Authorization: Bearer $DEEPAPI_API_KEY and never expose the key. +- Send a unique Idempotency-Key for every POST. +- Set an explicit customer spend cap with maxCostUsd or maxCostMicrousd before starting a scrape. +- Start with small result caps such as maxItems or capability-specific limits. +- Poll next.path while status is running and report the final debitMicrousd. + +Example body: +```json +{ + "maxCostUsd": "0.05", + "waitForFinishSecs": 60, + "profiles": [ + "williamhgates" + ] +} +``` + +### Scrape GitHub + +Use `POST /v1/scrape/github`. Backward-compatible alias for GitHub profile scraping. + +Side effects: Starts a scrape run and may debit credits when the run finishes. +Polling: If status is running, wait next.afterSecs and call next.method next.path until status is succeeded or failed. + +Safety: +- Send Authorization: Bearer $DEEPAPI_API_KEY and never expose the key. +- Send a unique Idempotency-Key for every POST. +- Set an explicit customer spend cap with maxCostUsd or maxCostMicrousd before starting a scrape. +- Start with small result caps such as maxItems or capability-specific limits. +- Poll next.path while status is running and report the final debitMicrousd. + +Example body: +```json +{ + "maxCostUsd": "0.03", + "waitForFinishSecs": 60, + "usernames": [ + "octocat" + ] +} +``` + +### Scrape Twitter + +Use `POST /v1/scrape/twitter`. Backward-compatible alias for X/Twitter search scraping. + +Side effects: Starts a scrape run and may debit credits when the run finishes. +Polling: If status is running, wait next.afterSecs and call next.method next.path until status is succeeded or failed. + +Safety: +- Send Authorization: Bearer $DEEPAPI_API_KEY and never expose the key. +- Send a unique Idempotency-Key for every POST. +- Set an explicit customer spend cap with maxCostUsd or maxCostMicrousd before starting a scrape. +- Start with small result caps such as maxItems or capability-specific limits. +- Poll next.path while status is running and report the final debitMicrousd. + +Example body: +```json +{ + "maxCostUsd": "0.03", + "waitForFinishSecs": 60, + "handles": [ + "nasa" + ], + "maxItems": 1, + "sort": "latest" +} +``` + +### Send Email + +Use `POST /v1/email/send`. Create an email draft from a workspace email identity; set send=true to send it. + +Side effects: Creates a draft, or sends an email when direct send is approved. +Polling: This route returns a terminal envelope directly. + +Safety: +- Send Authorization: Bearer $DEEPAPI_API_KEY and never expose the key. +- Send a unique Idempotency-Key for every POST. +- Keep send=false or mode=draft unless the user explicitly approves sending. +- Do not pass inboxId or inbox_id; use emailIdentityId or the workspace default. +- Attachments, hidden HTML, image HTML, URL shorteners, and high-risk direct sends are blocked by policy. + +Example body: +```json +{ + "to": "", + "subject": "Quick hello", + "text": "Hi, this is a draft from my agent.", + "send": false +} +``` + +### Receive Email + +Use `GET /v1/email/messages`. Read messages for a workspace email identity. + +Side effects: Reads messages only. +Polling: This route returns a terminal envelope directly. + +Safety: +- Send Authorization: Bearer $DEEPAPI_API_KEY and never expose the key. +- Do not pass inboxId or inbox_id; use emailIdentityId or the workspace default. + +### List Drafts + +Use `GET /v1/email/drafts`. List pending email drafts for a workspace email identity. + +Side effects: Reads drafts only. +Polling: This route returns a terminal envelope directly. + +Safety: +- Send Authorization: Bearer $DEEPAPI_API_KEY and never expose the key. +- Do not pass inboxId or inbox_id; use emailIdentityId or the workspace default. + +### Send Draft + +Use `POST /v1/email/drafts/{draftId}/send`. Approve and send an existing draft by draftId after review. + +Side effects: Sends the reviewed draft as a real email when direct send is approved. +Polling: This route returns a terminal envelope directly. + +Safety: +- Send Authorization: Bearer $DEEPAPI_API_KEY and never expose the key. +- Send a unique Idempotency-Key for every POST. +- Only send a draft after the user explicitly approves that draft. +- Do not pass inboxId or inbox_id; use emailIdentityId or the workspace default. +- Sending re-checks recipient and content policy against the stored draft; blocked drafts stay drafts. + +Example body: +```json +{} +``` + +### Deep Research + +Use `POST /v1/research/deep`. Answer a research question with current web evidence. + +Side effects: Runs a paid web research request and debits credits when finished. +Polling: This route returns a terminal envelope directly. + +Safety: +- Send Authorization: Bearer $DEEPAPI_API_KEY and never expose the key. +- Send a unique Idempotency-Key for every POST. +- Use query for the research question and context only for relevant background. +- Set maxCostUsd when you need a lower or higher spend cap than the default. +- Report debitMicrousd and summarize the returned sources when sources are present. + +Example body: +```json +{ + "query": "What changed in EU AI Act compliance timelines for API startups?", + "context": "We sell API tooling to EU customers.", + "maxCostUsd": "0.10" +} +``` + +### Generate Image + +Use `POST /v1/generate/image`. Generate an image from a text prompt. + +Side effects: Runs a paid image generation request and debits credits when finished. +Polling: This route returns a terminal envelope directly. + +Safety: +- Send Authorization: Bearer $DEEPAPI_API_KEY and never expose the key. +- Send a unique Idempotency-Key for every POST. +- Describe the image you want in prompt, including style and composition. +- Set maxCostUsd when you need a lower or higher spend cap than the default. +- output.images contains base64 data URLs; save them to files instead of printing them. + +Example body: +```json +{ + "prompt": "A minimal flat illustration of a rocket launching from a laptop screen", + "maxCostUsd": "0.20" +} +``` + +### Web Search + +Use `POST /v1/search/web`. Search the web and return ranked results with title, url, and snippet. + +Side effects: Runs a paid web search request and debits credits when finished. +Polling: This route returns a terminal envelope directly. + +Safety: +- Send Authorization: Bearer $DEEPAPI_API_KEY and never expose the key. +- Send a unique Idempotency-Key for every POST. +- Use query for the search terms only; keep it under 500 characters. +- Set maxCostUsd when you need a lower or higher spend cap than the default. +- Treat snippets as page summaries; open a result URL when you need the full content. + +Example body: +```json +{ + "query": "latest stable Node.js LTS version", + "maxResults": 3, + "maxCostUsd": "0.05" +} +``` + +### Request Status + +Use `GET /v1/requests/{requestId}`. Poll a running request by requestId. + +Side effects: Reads or refreshes request status. +Polling: If status is running, wait next.afterSecs and call next.method next.path until status is succeeded or failed. + +Safety: +- Send Authorization: Bearer $DEEPAPI_API_KEY and never expose the key. +- Only poll request ids created by the same API key. + +Example query: `waitForFinishSecs=60` + +## Limitations + +- Adapted from `davidondrej/skills`; verify local paths, tools, credentials, and agent features before acting. +- For commands, remote access, scheduling, browser automation, or file-changing workflows, get explicit user approval and confirm the target environment first. diff --git a/antigravity-awesome-skills/skills/delegating-to-agents/SKILL.md b/antigravity-awesome-skills/skills/delegating-to-agents/SKILL.md new file mode 100644 index 00000000..2ef1212a --- /dev/null +++ b/antigravity-awesome-skills/skills/delegating-to-agents/SKILL.md @@ -0,0 +1,64 @@ +--- +name: delegating-to-agents +description: "Delegate bounded work to other AI agents while preserving context, ownership, and progress checks." +category: agent-orchestration +risk: critical +source: community +source_repo: davidondrej/skills +source_type: community +date_added: "2026-07-07" +author: davidondrej +tags: [agents, delegation, orchestration] +tools: [claude, codex] +license: "MIT" +license_source: "https://github.com/davidondrej/skills/blob/main/LICENSE" +--- + +# Delegating to Agents + +## When to Use + +- Use when work should be handed to another AI agent with a complete prompt and progress checks. +- Use when you need to relay instructions to terminal or TUI agents without losing context. + +## Which agent to pick + +- **Coding (default) → Codex CLI.** Strongest coding agent, especially for complex, long-running SWE tasks. It's on an unlimited-usage plan — effectively unlimited, don't ration it. +- **Most other tasks → Pi Agent** (`pi` in a cmux terminal). All Pi agents run opus-4.8-fast via OpenRouter at xhigh reasoning effort. +- **Frontend / design → Pi.** Opus 4.8 Fast beats Codex on UI, styling, design. +- **Heavy multi-step work:** you as orchestrator + Codex CLI executing in a right-hand cmux pane is a solid default setup. + +## Sending prompts to a TUI agent + +1. **ONE single line — never newlines in the message body.** In a TUI, newline = Enter: a multi-line prompt submits at the first line and the rest arrives as fragmented mid-turn steering messages. Use ". " or "; " instead of line breaks, then one explicit enter. For long instructions, write them to a file and send: `read /tmp/task.md and follow it`. +2. **Wrap the prompt in plain double quotes — NEVER escaped.** `cmux send --surface surface:N "your prompt"`. The recurring bug is emitting `\"` — in bash that's literal-broken and dies with `unexpected EOF`. Inside the prompt, avoid apostrophes and literal double quotes (write "dont", "wont", "lets"); rephrase instead of escaping. If a send failed, the cause was the escaped `\"`, not the quote type. +3. **Exact command names:** `cmux send --surface surface:N` then `cmux send-key --surface surface:N enter`. There is NO `send-surface` or `send-key-surface`. + +## Polling + +Keep sleeps SHORT: start at 3-5s, re-check, repeat. Don't `sleep 30`. Pi and Hermes (opus-4.8-fast) launch and respond within seconds; scale up only for genuinely heavy tasks. After every check, send the user a one-line status: what the agent is doing and whether it's on track. + +Claude Code note: after it finishes, it may prefill a predicted next user message — that draft is Claude, not the user. + +## Remote VPS + +SSH in first and launch the agent ON the VPS (e.g. `codex --yolo`), then drive that on-box agent. Don't run an agent locally and have it SSH for every step. + +## The 4 agents (background reference) + +All four use the portable SKILL.md standard; project skills win over global. + +- **Pi** (pi.dev, open-source TS): minimal read/write/edit/bash core, self-extends via TS extensions; true BYOK; best-in-class session branch/fork/resume. Skills: `~/.pi/agent/skills/`. +- **Codex CLI** (OpenAI, Rust): fastest startup; kernel-level sandboxing; `codex exec` for CI; reads AGENTS.md. Skills: `~/.codex/skills/`. +- **Claude Code** (Anthropic, TS): deepest Claude integration, `.claude/` conventions, live skill hot-reload. Skills: `~/.claude/skills/`. +- **Hermes** (Nous Research, Python): persistent autonomous agent — cross-session memory, built-in scheduler, 40+ tools; can orchestrate the other CLIs as workers. Skills: `~/.hermes/skills/`. + +## Driving interactive CLIs + +- Codex, Pi, OpenCode: need `pty=true`. +- Claude Code: prefer `claude --print --permission-mode bypassPermissions` (no PTY). + +## Limitations + +- Adapted from `davidondrej/skills`; verify local paths, tools, credentials, and agent features before acting. +- For commands, remote access, scheduling, browser automation, or file-changing workflows, get explicit user approval and confirm the target environment first. diff --git a/antigravity-awesome-skills/skills/distribute-skill-to-all-agents/SKILL.md b/antigravity-awesome-skills/skills/distribute-skill-to-all-agents/SKILL.md new file mode 100644 index 00000000..9fcbb0ff --- /dev/null +++ b/antigravity-awesome-skills/skills/distribute-skill-to-all-agents/SKILL.md @@ -0,0 +1,85 @@ +--- +name: distribute-skill-to-all-agents +description: "Distribute a skill across configured agent skill folders while respecting local symlink layouts." +category: development +risk: critical +source: community +source_repo: davidondrej/skills +source_type: community +date_added: "2026-07-07" +author: davidondrej +tags: [skills, distribution, agents] +tools: [claude, codex] +license: "MIT" +license_source: "https://github.com/davidondrej/skills/blob/main/LICENSE" +--- + +# Distribute a Skill Across All Agents + +## When to Use + +- Use when a skill should be made available across multiple local agent skill folders. +- Use when the user asks to sync or distribute skill updates to other agents. + +The user has 4 agent skill locations on his MacBook. A skill must exist in each (or via symlink) to be discoverable by every agent. + +## The 4 Canonical Locations + +| Agent | Skills Folder | Notes | +|---|---|---| +| Codex / OpenAI Agents | `~/.agents/skills/` | **Canonical** — author skills here first | +| Claude Code | `~/.claude/skills/` | **Symlink → `~/.agents/skills/`** — writing to `.agents/skills` automatically covers Claude | +| Pi Agent | `~/.pi/agent/skills/` | **Symlink → `~/.agents/skills/`** — auto-covered. (Path is `/agent/` nested — NOT `~/.pi/skills/`) | +| Hermes Agent | `~/.hermes/skills/` | Independent copy — the only one needing a manual copy | + +## Workflow + +1. **Author the skill in `~/.agents/skills//SKILL.md`** (canonical). Follow `effective-agent-skills` SKILL.md guidance. +2. **Verify the `.claude` symlink is intact** (one-time check): + ```bash + ls -la ~/.claude/skills + # Expect: ~/.claude/skills -> ~/.agents/skills + ``` + If it's a real directory instead of a symlink, the user has diverged copies — ask before touching. +3. **Copy to `.hermes` only** (`.claude` and `.pi` are symlinks — already covered): + ```bash + SKILL= + cp -r ~/.agents/skills/$SKILL ~/.hermes/skills/ + ``` +4. **Verify all 4 locations** show identical byte counts: + ```bash + for p in ~/.agents/skills/$SKILL ~/.claude/skills/$SKILL ~/.pi/agent/skills/$SKILL ~/.hermes/skills/$SKILL; do + echo "$p: $(wc -c < $p/SKILL.md) bytes" + done + ``` + All four numbers must match. If `.claude` or `.pi` shows a different byte count, that symlink is broken — investigate before proceeding. + +## Updating an Existing Distributed Skill + +Same flow — re-copy from `~/.agents/skills/` to `.hermes/skills/`. The `.claude` and `.pi` symlinks update automatically. `cp -r` overwrites by default; use `rsync -a --delete` if the skill folder has nested files that may have been removed: + +```bash +rsync -a --delete ~/.agents/skills/$SKILL/ ~/.hermes/skills/$SKILL/ +``` + +## Pitfalls + +- **`~/.pi/skills/` is the wrong location.** Pi Agent loads from `~/.pi/agent/skills/` only. A skill placed in `~/.pi/skills/` is invisible. If you find skills already there, they're orphans — confirm with the user before deleting. +- **`~/.claude/skills` is a symlink, not a folder.** `cp -r ~/.agents/skills/foo ~/.claude/skills/` will error with "are identical". Skip the explicit Claude copy. +- **Project-local skills exist too** — `./.pi/agent/skills/` (or `.pi/skills/`) inside a repo overrides the global one on collision (later-discovered wins). This skill only handles GLOBAL distribution. +- **`.pi/agent/skills` is a symlink → `.agents/skills`.** Don't `cp` into it (errors "are identical"); it auto-syncs. Only `.hermes/skills` is an independent copy — don't unilaterally consolidate Hermes into a symlink unless the user asks. +- **Hermes snapshots skills at session start.** A newly-distributed skill won't appear inside a running Hermes session until restart (it works fine for future sessions and for the other 3 agents immediately). +- **Filename casing matters on case-sensitive volumes.** `SKILL.md` must be uppercase. + +## When NOT to Use This Skill + +- Skill is project-specific → put it in `./.claude/skills/`, `./.pi/agent/skills/`, etc. inside the repo, not globally. +- Editing one agent's skill only (e.g. a Hermes-only workflow) → patch that file directly, don't propagate. +- Removing a skill globally is destructive. First show the exact skill directories + that would be removed, confirm with the user, then use the user's preferred + safe deletion method for `~/.agents/skills/` and `~/.hermes/skills/`. + +## Limitations + +- Adapted from `davidondrej/skills`; verify local paths, tools, credentials, and agent features before acting. +- For commands, remote access, scheduling, browser automation, or file-changing workflows, get explicit user approval and confirm the target environment first. diff --git a/antigravity-awesome-skills/skills/effective-agent-skills/SKILL.md b/antigravity-awesome-skills/skills/effective-agent-skills/SKILL.md new file mode 100644 index 00000000..7d6b3f03 --- /dev/null +++ b/antigravity-awesome-skills/skills/effective-agent-skills/SKILL.md @@ -0,0 +1,333 @@ +--- +name: effective-agent-skills +description: "Author and review high-quality agent skills with triggers, progressive disclosure, and safety notes." +category: development +risk: safe +source: community +source_repo: davidondrej/skills +source_type: community +date_added: "2026-07-07" +author: davidondrej +tags: [skills, authoring, quality] +tools: [claude, codex] +license: "MIT" +license_source: "https://github.com/davidondrej/skills/blob/main/LICENSE" +--- + +# Agent Skills: A Complete Guide + +## When to Use + +- Use when creating, editing, reviewing, or debugging an agent SKILL.md file. +- Use when you need quality guidance for triggers, examples, limitations, and safety notes. + +A consolidated reference on what agent skills are, why they exist, how they work, and how to write effective ones. + +--- + +## 1. What agent skills are + +An Agent Skill is a folder containing a `SKILL.md` file (YAML frontmatter + markdown instructions), plus optional subfolders for scripts, references, and assets that the agent loads on demand. + +``` +my-skill/ +├── SKILL.md # Required: metadata + instructions +├── scripts/ # Optional: executable code (CLIs, validators, helpers) +├── references/ # Optional: detailed docs loaded only when needed +└── assets/ # Optional: templates, fonts, static files +``` + +Skills are an open standard (agentskills.io), originally created by Anthropic and adopted by OpenAI Codex, Cursor, Gemini CLI, Microsoft Agent Framework, Google ADK, and 40+ other agent products. A skill written once works across all compatible agents. + +--- + +## 2. Why this abstraction exists + +Base LLMs are generalists. Real work requires procedural knowledge, organizational context, and repeatable workflows. Every prior alternative had a failure mode: + +| Approach | Problem | +|---|---| +| Stuff it into the system prompt | Always loaded → context bloat at scale | +| Re-paste instructions each session | No version control, no consistency | +| Fine-tuning | Slow, expensive, opaque, vendor-locked | +| MCP servers alone | Give the agent tools but no workflows for using them | + +Skills solve four problems at once: + +- **Context efficiency** — instructions load only when relevant +- **Repeatability** — multi-step procedures become auditable workflows +- **Composability** — multiple skills combine at runtime per task +- **Portability** — same files work across vendors and surfaces + +Mental model: skills are to LLMs what man pages, runbooks, and team handbooks are to engineers — reference material loaded into working memory only when the task demands it. + +--- + +## 3. How they work — progressive disclosure + +The architectural core. Three-stage loading: + +**Level 1 — Discovery (~100 tokens per skill, always in context):** +Only `name` + `description` from frontmatter are injected into the system prompt at startup. Agent knows the skill exists and when it applies. You can install dozens of skills with negligible overhead. + +**Level 2 — Activation (<5,000 tokens, loaded on match):** +When the user's request matches a skill's description, the agent reads the full `SKILL.md` body into context. + +**Level 3 — Execution (unbounded, on demand):** +The agent reads referenced files (`references/foo.md`) or runs scripts (`scripts/validate.py`) only as needed. Scripts can execute without their source being loaded into context at all. + +This is why bundled content has no practical limit. Files don't consume tokens until accessed. + +--- + +## 4. SKILL.md anatomy + +```markdown +--- +name: skill-name +description: What this skill does AND when to use it. Include trigger phrases the user will say. +--- + +# Skill Name + +## Quick start +[Minimal working example] + +## Workflow +[Step-by-step procedure with checklists] + +## Output format +[What the user/agent should expect back] + +## Advanced +[Link to references/ for rarely-needed detail] +``` + +Frontmatter constraints: +- `name` is lowercase, hyphens only, 1–64 chars, **exactly matches the parent folder name** +- Avoid `<` and `>` in frontmatter (they can inject into the system prompt) +- Invalid YAML silently prevents loading + +Optional standard fields: +- `disable-model-invocation: true` — stops the agent from auto-loading the skill based on the conversation; it can only be triggered manually (e.g. `/skill-name`). Now a standard Agent Skills spec field, so it works across spec-compliant clients (Claude Code, Copilot, etc.), not just Claude. Caveat: it prevents auto-invocation, but some clients (Claude Code, open bug) still inject the `description` into context, so it doesn't always save the discovery-level tokens. Use for manual-only utilities you don't want firing automatically. + +--- + +## 5. Two design philosophies + +Skills tend to fall into one of two patterns. Both are valid; they solve different problems. + +### Pattern A — Capability primitives (tool wrappers) +The skill is a thin wrapper over a deterministic CLI or script. Logic lives in code. SKILL.md teaches the agent how to invoke it. + +- **Adds**: new capabilities (search, email, browser, API access) +- **Reliability via**: shell tools, not prompts +- **Typical length**: 30–80 lines, mostly command examples +- **Use when**: the bottleneck is "the agent can't do X" + +### Pattern B — Process primitives (cognitive disciplines) +The skill encodes a methodology the agent should follow. Pure prompt engineering — no scripts needed. + +- **Adds**: structured workflows (TDD, code review, design alignment, debugging loops) +- **Reliability via**: explicit procedure, checklists, validation loops +- **Use when**: the bottleneck is "the agent's output quality or process is bad" + +A mature setup uses both. Pattern A gives the agent better tools. Pattern B gives it better methods for using them. + +--- + +## 6. How to write effective skills — do this + +### Description as routing contract +The description is the only thing the agent sees before deciding to load the skill. If your skill doesn't trigger, the description is wrong 95% of the time, not the body. + +Include three elements: +1. **What** the skill does (one phrase) +2. **When** to use it (trigger phrases, situations) +3. **Differentiator** vs related skills (prevents routing conflicts) + +Pattern: `"X via Y. Use for [situations]. [Differentiator: no Z required / faster than W / handles edge case V]."` + +**Never summarize the full workflow in the description.** If the description contains a step-by-step summary of *how* the skill works, the agent tends to follow that summary and skip loading the body. Describe *what* and *when*, never *how*. The description answers "should I open this skill now?" — not "what are the steps?" + +### Keep SKILL.md lean +- Beyond a certain length, you're usually encoding logic that should be in a script or referenced file + +### Bash-first, prose-second +Concrete command examples with inline comments beat prose explanations. The agent pattern-matches on syntax. Show, don't describe. + +### Push determinism into code +Anything fragile, repetitive, or where variation is a bug → script. Use markdown only for tasks requiring judgment. + +### Match strictness to task fragility (degrees of freedom) +Scale instruction rigidity to how costly a wrong move is: +- **Loose natural-language heuristics** when many approaches are valid (e.g. code review). +- **Pseudocode or templates** when there's a preferred pattern but variation is acceptable (e.g. report format). +- **Exact scripts and strict step lists** when the workflow is fragile, error-prone, or consistency-critical (e.g. migrations, document patching). + +### Build validation loops +The single biggest output quality improvement: state a verify → fix → re-verify loop explicitly. + +- Document skills: visual QA pass before delivery +- Code skills: tests pass + zero type errors before completion +- Data skills: schema validation before output + +### State-check before action +Don't assume setup is done. Instruct the agent to verify state, then branch: +``` +First check if X is configured: [command] +If not, walk the user through setup: [steps] +``` + +### Just-in-time loading with explicit pointers +Tell the agent exactly when to read each referenced file: +``` +For standard cases, follow the steps below. +For [specific edge case], read references/edge-cases.md first. +``` + +### Keep references one level deep +Link referenced files directly from SKILL.md. Never build chains (SKILL.md → advanced.md → details.md → actual.md) — the agent may preview nested files only partially and miss critical instructions. Add a table of contents to any reference file longer than 100 lines. + +### Document output formats +If your script returns structured data, show the agent what it looks like. Enables reliable downstream parsing. + +### Defer to --help for completeness +List the 80% common operations in SKILL.md. Tell the agent to run `tool --help` for the rest. Keeps SKILL.md small without losing functionality. + +### Compose primitives, don't bundle workflows +One skill = one capability or one discipline. Resist bundling concerns into "the X workflow." Multiple small skills combine at runtime; one large skill is rigid. + +### Cite established principles when applicable +If your skill encodes a known engineering methodology (TDD, DDD, red-green-refactor), name the source. Gives the agent a coherent model to align with and gives users a way to verify the design. + +### Persistent artifacts for cross-session memory +Skills can write to repo-level files (CONTEXT.md, ADRs, decision logs) that future agent sessions read. This is how you fight the "agents have no memory" problem at the architecture level. + +--- + +## 7. What not to do — anti-patterns + +### Don't re-teach what the model already knows +Every line in SKILL.md should provide context the model doesn't already have. No Python syntax tutorials. No "what is git." Challenge every paragraph. + +### Don't include human-facing docs +No README.md, no CHANGELOG.md, no INSTALLATION_GUIDE.md inside the skill folder. Skills are for agents. + +### Don't write vague descriptions +- Bad: "A helpful skill for documents" +- Good: "Fill PDF form fields, extract form data, flatten completed PDFs. Use when the user mentions PDF forms, fillable forms, or programmatic field population." + +### Don't bundle library code +If you need a parsing library, install via npm/pip. Don't paste source into the skill. + +### Don't write monolithic mega-skills +If one skill does design + planning + implementation + testing + deployment, you've built a framework, not a skill. Split it. + +### Don't assume the agent will infer +Be explicit about every step that matters. +- Bad: "Then deploy it." +- Good: "Run `npm run deploy:staging` and wait for HTTP 200 from /healthz before reporting success." + +### Don't write style-only variants +A skill that just changes tone or formatting belongs in user preferences or a system prompt, not a skill. + +### Don't ignore failure modes +For every workflow step that can fail, document what failure looks like and what to do. Happy-path-only skills break in production. + +### Don't include time-sensitive information +"As of Q4 2024..." rots fast. Fetch live data via script or omit. + +### Don't use absolute paths +Always relative. Forward slashes regardless of OS. Use runtime placeholders for skill-directory references. + +### Don't trust unfamiliar skills +Skills can execute arbitrary code and steer agent behavior. A malicious skill is a data exfiltration vector. Audit `scripts/` for unexpected network calls, file access outside expected scope, or hidden instructions in references. Watch for typosquatted skill names. Sandbox execution environments. + +--- + +## 8. Authoring workflow + +1. **Identify the gap.** Run your agent on real tasks. Where does it consistently fail or need re-prompting? That's a skill candidate. +2. **Decide the pattern.** Capability primitive (need new tools) or process primitive (need better methodology)? +3. **Draft the description first.** What + when + differentiator. Read it back: would the agent know when to fire it? +4. **Write the smallest body that works.** Add only when testing reveals gaps. +5. **Move detail to references/ once SKILL.md grows too long.** +6. **Test triggering.** Ask the agent something the skill should handle without invoking it explicitly. If it doesn't fire, fix the description. +7. **Test execution.** Invoke explicitly. If output is wrong, fix the body. +8. **Adversarial test.** Have another LLM ask: "What edge cases break this skill?" Patch the gaps. +9. **Version control.** Treat skills as code. Tag, branch, review. + +--- + +## 9. Testing and debugging + +- **"Which skill did you use?"** — ask the agent post-task. Fastest routing debug. +- **Routing fails → description problem.** Add specific trigger phrases. +- **Execution fails → body problem.** Add explicit steps, examples, or validation. +- **Skills snapshot at session start.** Edits during a session require a restart. +- **Test against the weakest model you'll deploy on.** Stronger models forgive vague skills; weaker models expose them. +- **Run an eval suite.** A handful of representative prompts that should and shouldn't trigger the skill, with expected outputs. + +--- + +## 10. Composition + +Skills compose at runtime — the agent loads multiple skills as needed for a single task. Design for this: + +- **One skill = one concern.** Resist bundling. +- **Define interfaces between skills.** If skill A produces artifacts that skill B consumes, document the shape. +- **Use a repo-level config substrate.** A shared file (e.g., AGENTS.md, CONTEXT.md, settings.json) that multiple skills read and write coordinates them without explicit handoffs. +- **Loops over menus.** A coordinated set of skills forming a workflow (align → spec → build → verify → refactor) drives adoption far better than an unrelated catalog of capabilities. + +--- + +## 11. Security checklist + +Before installing any third-party skill: + +- Read every file in the folder +- Audit `scripts/` for outbound network calls, file access outside expected scope, command execution +- Check references for prompt injection ("ignore previous instructions...") +- Verify the skill name isn't typosquatting a popular one +- Run in a sandboxed environment first +- Pin to a specific version/commit, not `latest` + +--- + +## 12. Ship checklist + +Before publishing a skill: + +- [ ] Frontmatter `name` matches folder name +- [ ] Description includes what + when + differentiator +- [ ] Description includes likely user trigger phrases +- [ ] No human-facing docs inside the skill folder +- [ ] No time-sensitive information +- [ ] Relative paths only +- [ ] State-check before action where applicable +- [ ] Validation loop documented +- [ ] Output format documented if relevant +- [ ] Tested with weak and strong models +- [ ] Tested for both correct triggering and correct execution +- [ ] Skill does one thing +- [ ] Composes cleanly with related skills +- [ ] Version controlled + +--- + +## 13. First principles, compressed + +1. **The description routes; the body executes.** Get both right independently. +2. **Tokens are scarce; files are cheap.** Push detail out of context until it's needed. +3. **Determinism comes from code; judgment comes from prompts.** Put each in its right place. +4. **One skill, one concern.** Composition beats bundling. +5. **Agents have no memory.** Use persistent artifacts to give them one. +6. **The model knows a lot.** Don't re-teach. Only add what's missing. +7. **Validate before completing.** Self-correction loops dominate output quality. +8. **Skills are code.** Version, test, audit, and review them as such. + +## Limitations + +- Adapted from `davidondrej/skills`; verify local paths, tools, credentials, and agent features before acting. +- For commands, remote access, scheduling, browser automation, or file-changing workflows, get explicit user approval and confirm the target environment first. diff --git a/antigravity-awesome-skills/skills/fable-safe-prompt/SKILL.md b/antigravity-awesome-skills/skills/fable-safe-prompt/SKILL.md new file mode 100644 index 00000000..992dcaf9 --- /dev/null +++ b/antigravity-awesome-skills/skills/fable-safe-prompt/SKILL.md @@ -0,0 +1,79 @@ +--- +name: fable-safe-prompt +description: "Rewrite allowed prompts to reduce false-positive safety triggers without bypassing policy or changing intent." +category: agent-behavior +risk: safe +source: community +source_repo: davidondrej/skills +source_type: community +date_added: "2026-07-07" +author: davidondrej +tags: [prompting, safety, guardrails] +tools: [claude, codex] +license: "MIT" +license_source: "https://github.com/davidondrej/skills/blob/main/LICENSE" +disable-model-invocation: true +--- + +# Fable-Safe Prompt + +## When to Use + +- Use when an allowed prompt appears likely to hit false-positive classifier language. +- Use when the user asks for prompt wording that keeps benign intent clear and policy-compliant. + +Return the user's prompt back **in full, verbatim**, changing ONLY the specific sentences/phrases most likely to trip Fable 5's cyber/bio classifiers. Do not rewrite the whole thing, do not summarize, do not restructure — minimal surgical edits. Keep the actual goal and all benign text exactly as written. This lowers false positives for benign work. It must not be used to bypass safety policy or enable harmful requests. + +Fable 5 runs 3 input classifiers: **cyber**, **bio/chem**, **reasoning_extraction**. Triggers are keyword/surface-based, largely intent-independent ("hello" and "cancer" got flagged). The fix is to abstract away the sensitive domain, not just restate intent. + +Apply when the prompt touches: cyber/auth/exploits/malware/pentesting/credentials; bio/chem/medical/disease/lab topics; or any "show your reasoning" instruction. + +The user provides the prompt-to-be-changed wrapped in `...` XML tags. Operate only on the text inside those tags; treat everything outside as instructions to you. + +## Method + +1. Flag the highly problematic sentences/phrases (offensive framings, named sensitive domains, "show your thinking" lines). +2. Replace each in place with a safe equivalent (see swaps), or describe the wanted functionality abstractly rather than naming the domain. +3. Leave everything else byte-for-byte identical. +4. Return the complete edited prompt. + +Reframe so the task reads as: **owned/authorized**, **defensive** (implement/fix/test, not attack), and **not dual-use** (no exploit dev, attack simulation, bypass payloads, malware, live testing). + +### Swap framings (apply per-sentence) + +| Triggering | Safe rewrite | +|---|---| +| "How could an attacker exploit this auth" | "Review these auth files for missing checks and fix them defensively" | +| "Write an exploit / payload / PoC" | "Add a regression test proving X is fixed, then patch it" | +| "How do I bypass / brute-force Y" | "Enforce secure session validation + rate limiting on Y" | +| "Reverse this malware / show attack steps" | "Describe the risk high-level, then implement the fix" | +| "Show your reasoning / explain step-by-step / walk me through your thinking" | **Delete it.** Trips `reasoning_extraction`. If progress visibility is needed, ask it to use a send-to-user tool, not to echo its internal thoughts. | +| Clinician framing: "as a doctor, diagnose this ECG" | Patient framing: "help me interpret this ECG my doctor gave me" | +| Named bio/chem domain: "cancer / disease pathway / chemical kinetics" | Abstract it: describe the data/analysis generically, drop the domain noun | + +### Trigger keywords to abstract away +*Cyber:* exploit, malware, vulnerability, attack, bypass, stealth, fingerprinting, anti-bot, CAPTCHA, penetration. +*Bio/chem:* biology, biomedicine, chemistry, cancer, disease pathways, RNA/variant calling, equilibrium, kinetics, diagnosis. +*Distillation:* "distill the model", training pipelines, frontier LLM development. + +If no benign defensive equivalent exists for a sentence (it's purely offensive), flag it to the user rather than silently neutering the intent. + +## Output + +1. Print the full safe prompt back to the user in text (a code block, ready to paste). +2. **Copy it to the clipboard** so the user can paste immediately: + ```bash + pbcopy <<'EOF' + + EOF + ``` + Confirm in one line that it's on the clipboard. +3. A short list of exactly which sentences you changed and what they became. +4. If the task is genuinely offensive (pentest, exploit repro, malware analysis): say plainly no edit makes it Fable-safe — use an Opus 4.8 fallback or vetted Mythos, not Fable 5. + +**Hard truth:** you can't reliably stop Fable 5 guardrails. Robust API setups also treat `stop_reason: "refusal"` (HTTP 200, `stop_details.category` = `cyber`/`bio`) as a route to an Opus 4.8 fallback — mention only if the user controls the integration. + +## Limitations + +- Adapted from `davidondrej/skills`; verify local paths, tools, credentials, and agent features before acting. +- For commands, remote access, scheduling, browser automation, or file-changing workflows, get explicit user approval and confirm the target environment first. diff --git a/antigravity-awesome-skills/skills/folder-specific-claude-and-agents-md/SKILL.md b/antigravity-awesome-skills/skills/folder-specific-claude-and-agents-md/SKILL.md new file mode 100644 index 00000000..0feb9654 --- /dev/null +++ b/antigravity-awesome-skills/skills/folder-specific-claude-and-agents-md/SKILL.md @@ -0,0 +1,96 @@ +--- +name: folder-specific-claude-and-agents-md +description: "Create folder-scoped CLAUDE.md and AGENTS.md guidance for future agents working in that area." +category: development +risk: critical +source: community +source_repo: davidondrej/skills +source_type: community +date_added: "2026-07-07" +author: davidondrej +tags: [agents-md, claude-md, documentation] +tools: [claude, codex] +license: "MIT" +license_source: "https://github.com/davidondrej/skills/blob/main/LICENSE" +user-invocable: true +--- + +# Folder CLAUDE.md Creation + +## When to Use + +- Use when the user asks for folder-specific agent instructions or local context files. +- Use when a subdirectory needs a CLAUDE.md and AGENTS.md handoff for future agents. + +Generate a focused `CLAUDE.md` inside a target folder, plus an `AGENTS.md` symlink pointing at it. The file gives any future agent (Claude Code, Codex, etc.) the folder-specific context the global `CLAUDE.md` doesn't cover. + +Background reference: `library/claude-code/claude-and-agents-md.md`. + +## Process + +### Step 1: Confirm the target folder + sanity-check it deserves a file +Ask the user which folder. Use absolute path under `~/Documents/code/workspace/`. + +**Only create a file if the folder has context needed across multiple sessions** — active evolving work, specific conventions, ongoing decisions. A folder of static reference files does NOT need one (agents can read on demand). If unsure, ask the user. + +### Step 2: Read every file in the folder IN FULL +- Use `ls -la` first to enumerate files and subfolders. +- Read every markdown, config, and key source file. +- For large tldraw/Vite subprojects: read `package.json`, `src/App.tsx`, one representative module file, and the folder's own `module-details.md`-style files. +- Do NOT skim. Do NOT skip. The user's later edits depend on you having full context. + +### Step 3: Draft a bullet list of candidate content +Before writing the file, give the user a bullet list grouped by section — let them react first. Candidate sections (skip any that don't apply): + +- **Product / Purpose** — what this folder/project is, current state, key metrics +- **Avatar / Audience** — who it's for (if applicable) +- **Essential Files** — one-line role for each important file, including cross-folder references (use `@path/file.md` import syntax) +- **Constraints (MUST NOT)** — explicit hard negatives. Highest-ROI content in the file. +- **Conventions** — the user's lingo, status emojis (✅ 🟡), naming patterns, "usually do" patterns +- **Locked Decisions** — things agreed + dated, must not re-litigate +- **Context** — history, authority, credibility that frames the work +- **How to work with the user** — collaboration style for this specific folder +- **Marketing Angles / Positioning** — if public-facing +- **Top Insights** — 3-5 most glaring signals from research (if research exists) + +### Step 4: Iterate with the user +- Keep answers short. The user will edit directly in the IDE. +- When they edit the file, RE-READ it and flag: contradictions, typos, missing rules, wrong categorization. +- Do not revert their edits unless asked. + +### Step 5: Write the file +- Path: `/CLAUDE.md` +- Start with a one-line header explaining the file's purpose. +- **Subdir file marker:** if this is a subdirectory file (parent folder already has its own CLAUDE.md), open with `Apply root CLAUDE.md first, then this file.` +- Use `##` section headers matching the sections the user approved. +- Bullets over prose. Short bullets. +- **Cross-folder references:** use `@relative/path/file.md` import syntax, not prose mentions. +- **Heavy reference docs:** annotate with `**Read when:**` triggers (e.g. "Read when: writing offer copy"). Prevents loading every session. + +### Step 6: Create the AGENTS.md symlink +``` +cd && ln -s CLAUDE.md AGENTS.md +``` +Verify with `ls -la CLAUDE.md AGENTS.md`. + +### Step 7: Commit only when asked +Do NOT stage or push unless the user says to. When they do: `git add -A`, commit with a `Day N:` style message, push. + +## Rules + +- **Never invent content.** Every bullet must trace back to something you read in the folder or something the user said. No generic boilerplate. +- **Brevity wins.** The user edits aggressively to make things shorter. Start tight. +- **Folder-scoped only.** Don't duplicate the global `CLAUDE.md` (personality, dates, ports, etc.). Only include what's specific to this folder. +- **No file trees, no directory dumps, no stack details the code already shows.** Anything an agent can derive from `ls` or `grep` rots fast and wastes tokens. Pin decisions, rules, and context — not structure. +- **Constraints vs Conventions.** Hard "MUST NOT" rules go in Constraints (explicit negatives). "Usually do X" patterns go in Conventions. Splitting these improves adherence. +- **No absolute ALWAYS/NEVER without explicit exceptions.** Edge cases make absolute rules get ignored. "Never commit secrets EXCEPT `.env.example`" beats "never commit secrets." +- **Never summarize or auto-shorten the file.** Context collapse degrades it. Grow deliberately, prune manually. If the user asks to trim, do it by hand. +- **Maintenance loop.** When the user corrects the agent on something this file should have prevented, add the rule to the file immediately. Don't wait. +- **No emojis unless the user uses them** (status markers ✅ 🟡 are the exception — they're already conventions). +- **Symlink, not copy.** `AGENTS.md` must be a symlink so edits stay in sync. +- **Flag gaps honestly.** If the user's edits introduce contradictions (e.g. "sell X" in one section and "never sell X" in another), call it out before they ask. + +## Limitations + +- Adapted from `davidondrej/skills`; verify local paths, tools, credentials, and agent features before acting. +- For commands, remote access, scheduling, browser automation, or file-changing workflows, get explicit user approval and confirm the target environment first. diff --git a/antigravity-awesome-skills/skills/goal-loop/SKILL.md b/antigravity-awesome-skills/skills/goal-loop/SKILL.md new file mode 100644 index 00000000..89083b99 --- /dev/null +++ b/antigravity-awesome-skills/skills/goal-loop/SKILL.md @@ -0,0 +1,175 @@ +--- +name: goal-loop +description: "Draft and explain persistent goal-loop prompts for long-running agent work with clear stop conditions." +category: agent-orchestration +risk: safe +source: community +source_repo: davidondrej/skills +source_type: community +date_added: "2026-07-07" +author: davidondrej +tags: [goals, autonomy, planning] +tools: [claude, codex] +license: "MIT" +license_source: "https://github.com/davidondrej/skills/blob/main/LICENSE" +--- + +# Agent `/goal` Loop + +## What `/goal` is + +`/goal` is a slash command that turns an agent prompt into a **persistent agent** looping `plan → act → test → review → iterate` until a stop condition is met, the user pauses, or the token budget runs out. Internally called the "Ralph loop." + +Agents with the `/goal` feature right now: **Codex, Claude Code, and Hermes Agent**. + +Key difference from a normal prompt: when a turn ends but the goal isn't met, the agent **auto-continues** instead of waiting for input. + +**Lifecycle states:** `pursuing`, `paused`, `achieved`, `unmet`, `budget-limited`. + +When monitoring a running `/goal`, every check should include a one-line update to the user: what the agent is doing and whether it is on track. Keep it extremely concise. + +**Not:** a budget command, a safety boundary, "run forever", or a replacement for `/plan`. It's a contract enforcer with a verification loop. + +## Requirements + +- An agent with the `/goal` feature — right now: Codex, Claude Code, or Hermes Agent +- The goals feature enabled in the agent's config +- **Subscription auth** — API-key auth does **not** work. A pro-tier plan is the realistic minimum for long runs. + +## When to Use it + +Use only when **all three** are true: +1. Task is >30 min of mechanical work. +2. There's a **verifiable stop condition** (tests pass, coverage hit, eval ≥ X, build green). +3. Repo is agent-ready (working build, decent tests, `AGENTS.md` present). + +Fits: migrations, coverage lifts, TDD feature builds, refactors with contract tests, prompt/eval optimization, deploy retry loops, bug-repro-then-fix. + +Bad fits: exploratory work, vague "improve this", anything without a "done" definition, prod credentials, destructive shared-infra ops. + +## The 5-part contract (every goal needs this) + +1. **Objective** — one sentence, one concrete outcome. +2. **Constraints** — what must NOT change (public API, files, libs, conventions). +3. **Validation command** — the exact shell command that proves progress (`pytest -q`, `pnpm test`, etc.). +4. **Stop condition** — verifiable: "Stop when X passes" OR "when further changes need human/product input." +5. **Documentation** — one sentence instructing the agent to write concise, targeted docs for every change, either creating new `.md` files or updating existing ones. + +Plus: tell the agent what to read first, ask it to work in checkpoints with a short progress log. + +## Writing a goal (the core deliverable) + +When the user wants a quick `/goal` instruction, produce a structured markdown block with one line per contract item (proper newlines, not flowing prose). **Do not prefix the output with `/goal`** — the user adds the slash command themselves in the composer. Emit only the contract body. Template: + +``` +**Objective:** +**Read first:** +**Constraints:** +**Validate:** `` after each change +**Document:** Write concise, targeted documentation for all changes — create new `.md` files or update existing docs as needed. +**Checkpoints:** work in checkpoints and log progress briefly +**Stop when:** , OR when further changes require human/product input +``` + +### Example (migration) + +``` +**Objective:** Migrate this project from Pydantic v1 to v2. +**Read first:** pyproject.toml, src/, tests/ +**Constraints:** no public API changes; keep imports backwards-compatible via shims if needed; no new dependencies +**Validate:** `pytest -q` after each change +**Checkpoints:** work in checkpoints; log progress briefly +**Stop when:** full suite passes with zero deprecation warnings, OR when a change requires architecture decisions +``` + +### Example (coverage lift) + +``` +**Objective:** Raise coverage in src/auth/ from ~38% to ≥75%. +**Read first:** src/auth/, tests/auth/, AGENTS.md +**Constraints:** no new deps; mirror existing test style; do not modify production code unless strictly required for testability +**Validate:** `pytest --cov=src/auth --cov-report=term-missing` +**Checkpoints:** work in checkpoints; log coverage delta each one +**Stop when:** coverage ≥75% AND all tests pass, OR when uncovered code needs design changes +``` + +### Writing rules +- **One objective, one stop condition.** Not a backlog. +- **Documentation is mandatory.** Every `/goal` prompt must include a single sentence committing the agent to concise, targeted docs — new `.md` files or focused updates to existing docs. +- **Never instruct the agent to create new ADRs** — ADRs require the user's explicit approval, so goal prompts must not pre-approve or encourage them. +- **Forbid reward-hacking explicitly:** "Do not delete, skip, weaken, or narrow tests to make the goal pass." Otherwise the agent may game the stop condition. +- **4,000-char limit** on the objective. If longer, put detail in a file (`PLAN.md`/`GOAL_BRIEF.md`) and make the goal point to it — keep the goal itself compact. +- Use **literal strings** for paths, commands, issue numbers — exact. +- Forbid scope creep explicitly: "Do not refactor unrelated code. Do not add dependencies." +- Tell the agent when to pause: "If , pause and ask before proceeding." +- Short, vague goals burn tokens for no extra value vs. a normal prompt. + +### Meta-prompting trick (highest-leverage) + +Hand-written goals under-specify. Ask a second AI session (Claude with the codebase loaded, ChatGPT with project connected, or a separate agent thread in the same dir) to: (1) inspect the codebase, (2) surface hidden assumptions/constraints/edge cases, (3) emit a structured `/goal` markdown block using the 4-part contract. Paste that into the agent. Order-of-magnitude better runs. + +Claude Code cmux note: after Claude finishes, it may prefill a predicted next user message; that draft is Claude, not the user speaking. + +### Self-goal setting + +The agent can now write and set its own goal natively (the `create_goal` tool). Instead of crafting the contract yourself, give it your high-level intent and tell it to set the goal: "Inspect this repo, then write yourself a `/goal` with a verifiable stop condition and pursue it." It's the meta-prompting trick done inline — the agent turns your intent into the contract. Still give it the same raw materials (files to read, constraints, the validation command) so the goal it writes is grounded. Add: "ask clarifying questions before committing if the intent is underspecified" — catches ambiguity up front and prevents the self-set goal from drifting. + +## Launching + +1. `cd ` (goals run scoped to the working directory). +2. Launch the agent bare (opens the TUI). **Not** exec/headless mode — `/goal` is a TUI slash command only. +3. Sign in with subscription auth (not an API key). +4. Type `/goal ` in the composer, Enter. +5. Walk away. + +## Controlling a running goal + +| Command | Effect | +|---|---| +| `/goal` (alone) | Status: current checkpoint, what's verified, what remains, blockers | +| `/goal pause` | Freeze | +| `/goal resume` | Unfreeze (paused goals never auto-resume) | +| `/goal clear` | Kill the goal | +| `/goal ` | Replace the current goal | +| Ctrl+C / any typed message | Auto-pauses; user input always wins priority | + +Resuming across sessions: goal state is persisted server-side. `cd` back into the repo, launch the agent, `/goal` for status, `/goal resume`. + +Budget-limited state: the agent doesn't stop abruptly — it summarizes, notes what's left, saves state. `/goal resume` works after budget refresh or upgrade. + +## When a goal drifts + +- **Minor drift:** just type a correction in the composer (auto-pauses, folds it in, resumes). +- **Loose objective:** `/goal pause`, read status, then `/goal ` — replaces the contract. Don't pile instructions on a vague goal. +- **Bad mess:** `/goal clear`, `git status` or `git stash`, rewrite with the meta-prompting trick, restart. + +Don't let a drifting goal keep running "to see where it goes." Tokens burn, diffs compound. + +## Operational tips + +- Inspect status periodically with bare `/goal`. +- **Always review the diff** before merging — long autonomy means more code to validate, not less. Human oversight becomes more critical, not optional. +- Keep approvals/sandboxing tight; default permissions are correct. +- First run: pick a 30-min scoped task so you learn how `/goal` actually stops before trusting it overnight. +- Bake recurring policy into `AGENTS.md` so every goal inherits it without restating: adversarial self-review before declaring done, an extra QA pass even when tests pass, and the standard validation command. Saves repeating it in each goal paragraph. + +## Troubleshooting + +| Symptom | Fix | +|---|---| +| `/goal` missing from slash popup | Update the agent to a version that supports `/goal` | +| Feature flag on but command missing | Quit and restart the agent fully | +| Typed `/goals` | It's singular: `/goal` | +| Doesn't activate | Sign out, sign back in with subscription auth (not API key) | +| Stopped with progress summary | Budget-limited — `/goal resume` after refresh, or tighten scope | +| `/goal resume` says no active goal | Terminal state or cleared — start fresh with `/goal ` | +| Goal looks active but won't auto-continue | Stuck in Plan mode — plan-only work doesn't trigger continuation. Draft the plan, then switch to Goal execution | + +## Mental model + +`/goal` is a **contract enforcer with a verification loop**, not a "run forever" button. The shift: stop writing prompts, start writing **specifications with stop conditions**. Spend the time upfront defining "done"; the run takes care of itself. + +## Limitations + +- Adapted from `davidondrej/skills`; verify local paths, tools, credentials, and agent features before acting. +- For commands, remote access, scheduling, browser automation, or file-changing workflows, get explicit user approval and confirm the target environment first. diff --git a/antigravity-awesome-skills/skills/interview-style-doc-building/SKILL.md b/antigravity-awesome-skills/skills/interview-style-doc-building/SKILL.md new file mode 100644 index 00000000..8edcf2cb --- /dev/null +++ b/antigravity-awesome-skills/skills/interview-style-doc-building/SKILL.md @@ -0,0 +1,86 @@ +--- +name: interview-style-doc-building +description: "Build structured strategy documents by asking one question at a time and patching the file." +category: productivity +risk: critical +source: community +source_repo: davidondrej/skills +source_type: community +date_added: "2026-07-07" +author: davidondrej +tags: [documentation, interview, planning] +tools: [claude, codex] +license: "MIT" +license_source: "https://github.com/davidondrej/skills/blob/main/LICENSE" +--- + +# Interview-Style Doc Building + +The user's preferred mode for creating durable strategic docs. AI does NOT propose content — AI asks one question, the user answers, AI patches the file, AI asks the next question. The file IS the conversation's output, updated incrementally. + +## When to Use + +- Building a new SSOT file (life priorities, life vision, principles, frameworks, ranked lists). +- Filling out a structured doc the user explicitly wants to author themselves. +- Quarterly/annual reviews where the user's words go into the file. + +**NOT for:** day planning (use `day-plan`), task triage (`organize-tasks`), or anything where AI proposes content first. + +## The Loop + +1. **Create the file** with a skeleton (header, sections, "to be filled in" placeholders). Single `write_file` for the new file. After this, NEVER overwrite — only `patch`. +2. **Ask ONE question.** Concise. Specific. Single-faceted. Open-ended where possible. +3. **Wait for the answer.** Don't ask the next question yet. +4. **Patch the file** with the user's answer in the correct section. +5. **Re-ask** — next question, or follow-up if the answer was incomplete. +6. Repeat until the file is complete. + +## Hard Rules + +- **One question at a time.** Never dump multiple questions in a single message. The user has flagged this. +- **Patch, don't overwrite.** After the initial skeleton, use `patch` for every update. Never `write_file` to an existing doc. +- **Update the file BEFORE asking the next question.** Order: receive answer → patch file → ask next question. Not the reverse. +- **Lists from the user are UNORDERED SETS.** When the user lists items in response to "which X should we cover?" or "what are the Ys?", that is a SET, not a ranking. Never infer rank, priority, or sequence from the order they typed them. If you need ordering, ask explicitly: "Which of these is #1?" +- **Ask dynamics, not names.** When the user references a person, don't ask "who is X?" — ask about the role/dynamic. +- **No snark, no attitude, no filler.** Concise questions, concise acknowledgments. +- **No speculative additions.** Don't invent sections, edge cases, or "anything else?" prompts unless the user asks. + +## Question Design + +- **Domain-discovery, not confirmation.** "What wins against everything else?" — not "Is Business #1?" +- **Surface new reality.** Each question should pull out info AI doesn't already have. +- **Engine-move framing where applicable.** "What's the thing that, if true, makes the rest obvious?" +- **Concrete over abstract.** "What's #2 — the domain that wins against everything except #1?" beats "Tell me about your second priority." + +## File Patching Pattern + +After each answer: +1. Read the relevant section (if not already in context). +2. `patch` with `old_string` = placeholder or previous entry, `new_string` = updated content with the user's words preserved. +3. Confirm the diff. Move on. + +For ranked lists, append one rank at a time: +``` +1. **Business** — Q2 #1 goal: ... +2. **Health** — get below 81.0 kg, sleep 9h/day, ... +``` +Each rank gets patched in as the user confirms it. + +## Common Pitfalls + +- **Assuming order from a set.** The user lists "A, B, C, D" → AI writes "1. A, 2. B, 3. C, 4. D" → the user flags it. ALWAYS confirm rank explicitly. +- **Asking too many questions at once.** Even bundling 2 violates the rule. +- **Overwriting the file** instead of patching specific sections — destroys prior content. +- **Adding AI-generated content** to fill out sections. Sections stay empty until the user provides the content. +- **Skipping the file update** between Q&A pairs — the doc falls out of sync. + +## Pairing with Other Skills + +- `day-plan` — different pattern (task triage), not interview-style. +- `organize-tasks` — Todoist-specific. +- `memory-management` — separate from this; persona/preferences go to memory. + +## Limitations + +- Adapted from `davidondrej/skills`; verify local paths, tools, credentials, and agent features before acting. +- For commands, remote access, scheduling, browser automation, or file-changing workflows, get explicit user approval and confirm the target environment first. diff --git a/antigravity-awesome-skills/skills/linkedin-post-writer/SKILL.md b/antigravity-awesome-skills/skills/linkedin-post-writer/SKILL.md new file mode 100644 index 00000000..6c06bf8d --- /dev/null +++ b/antigravity-awesome-skills/skills/linkedin-post-writer/SKILL.md @@ -0,0 +1,159 @@ +--- +name: linkedin-post-writer +description: "Draft LinkedIn posts from 16 tested hook formulas mapped to engagement goals (comments, reposts, likes, saves), with 2026 algorithm formatting rules and an AI-tell scrub pass before publishing." +category: marketing +risk: none +source: community +source_repo: sergebulaev/linkedin-skills +source_type: community +date_added: "2026-07-06" +author: sergebulaev +tags: [linkedin, copywriting, hooks, social-media, personal-brand, content-marketing] +tools: [claude, codex, cursor, gemini] +license: "MIT" +license_source: "https://github.com/sergebulaev/linkedin-skills/blob/main/LICENSE" +--- + +# LinkedIn Post Writer + +## Overview + +Drafts long-form LinkedIn posts using 16 hook formulas that were reverse-engineered from posts that outperformed their authors' baselines in 2025-2026, each with a reference engagement number. Instead of asking "what should I write", the workflow asks "what should this post earn" (comments, reposts, likes, or saves), shortlists 2-3 matching formulas, fills the chosen skeleton with the user's voice, then scrubs the draft for AI tells before it ships. + +This is the flagship skill from [sergebulaev/linkedin-skills](https://github.com/sergebulaev/linkedin-skills), a 10-skill LinkedIn bundle (writer, humanizer, pre-publish audit, comment drafter, reply handler, hook extractor, content planner, profile optimizer, engager analytics, thread monitor) installable as a Claude Code or Codex plugin. This standalone version covers the drafting workflow; scheduling and publishing automation live in the full bundle. + +## When to Use This Skill + +- Use when the user says "write me a LinkedIn post about X" +- Use when the user has a topic and a rough angle but needs a hook and structure +- Use when the user wants to pick from proven post formats instead of improvising +- Use when a draft exists but the hook is weak and needs a formula-based rebuild +- Not for replying to comments or optimizing profiles; this skill only drafts posts + +## How It Works + +### Step 1: Gather inputs + +Collect: topic, angle, target audience (founders, operators, marketers), desired length (short 300-500, medium 900-1,300, or long 1,500-1,900 characters), and any raw material the user already has (numbers, anecdotes, names). + +### Step 2: Pick the formula by engagement goal first + +Ask (or infer) what the post should earn, then shortlist: + +| Goal | Earned by | Formulas | +|---|---|---| +| Comments | questions, contrarian takes, vulnerability | F4 Time-Anchor Confession, F10 Contrarian + Receipts, F12 Permission Slip, F9 Curiosity-Gap | +| Reposts | quotable maxims, tributes, "X isn't Y" distinctions | F14 Named Gratitude, F2 R.I.P. Obituary, F8 Paid-vs-Free Reversal | +| Likes | emotional stories, celebrations, status-strip | F11 Emotional Cold-Open, F13 Bait-and-Switch Reversal, F16 Status-Strip Humility | +| Saves | simplifications, exact how-to, frameworks | F15 Explain-to-Kids, F7 Odd-Precision Money Ledger, F8 Paid-vs-Free Reversal | + +The full set of 16, with reference engagement: + +| Code | Formula | Reference | Best for | +|---|---|---|---| +| F1 | Platform Risk Anaphora | 4,240 eng | Category and platform-risk arguments | +| F2 | R.I.P. Obituary | 3,822 eng | Era-ending claims, industry pivots | +| F3 | Year-over-Year Pivot | 494 eng, 3.74x baseline | Identity shifts, founder reflection | +| F4 | Time-Anchor Confession | 1,519+ eng | Vulnerability, voice reset | +| F5 | Self-Proving Meta | 1,082 eng, 435 comments | Commitments and tests in public | +| F6 | Comment-Gate Lead Magnet | 717-3,008 eng | List building (max once a month) | +| F7 | Odd-Precision Money Ledger | 1,755 eng, 9.4x baseline | Build logs, cost breakdowns | +| F8 | Paid-vs-Free Reversal | 550 eng, 19.64x baseline | Framework giveaways | +| F9 | Curiosity-Gap Teaser | 306 eng, 4.25x baseline | Surprise and behind-the-scenes stories | +| F10 | Contrarian + Historical Receipts | 3,083 eng | Sacred-cow takes backed by history | +| F11 | Emotional Cold-Open | high raw reach | Real stories with emotional stakes | +| F12 | Permission Slip | comment-heavy | Encouragement to a discouraged audience | +| F13 | Bait-and-Switch Reversal | high raw reach | Bad-news framing that turns into an upgrade | +| F14 | Named Gratitude / Tribute | repost-heavy | Thanking mentors, teams, departing colleagues | +| F15 | Explain-to-Kids | save-heavy | Demystifying jargon into a reference post | +| F16 | Status-Strip Humility | like-heavy | Senior voices trading prestige for warmth | + +Important caveat: F1-F10 references are engagement counts or format multipliers against the author's own baseline; F11-F16 references are raw corpus reach, often inflated by a famous author or a reshare. The two groups measure different things, so never rank formulas across groups by number. + +The full skeletons for all 16 formulas are bundled with this skill in [references/hook-formulas.md](references/hook-formulas.md), along with per-formula warnings and the "Never do" list. + +### Step 3: Draft the post + +Read the chosen formula's skeleton from the bundled [references/hook-formulas.md](references/hook-formulas.md) and fill it with the user's voice and material, respecting the 2026 formatting rules: + +- Hook lands in the first 210 characters (before the "... see more" fold) +- 900-1,300 characters is the sweet spot for text posts +- Double line-breaks between ideas, never walls of text +- 0-2 hashtags, placed at the end +- No external links in the body (put links in the first comment) +- Prefer "How I" over "How to": first-person experience hooks outperform generic instruction 2-3x +- Put one specific number in the first sentence ($873.47 beats $900; 40,000 beats "a lot") + +### Step 4: Scrub AI tells + +Before showing the draft: strip em dashes, AI vocabulary ("game-changer", "deep dive", "delve"), rule-of-three lists without receipts, and generic openers like "In today's fast-paced world". Add human fingerprints: at least one specific number, one named entity, and one first-person concrete detail per 100 words. Vary sentence length aggressively (mix 3-word and 25-word sentences). + +### Step 5: Present the result + +Show the user: formula used, full draft, character count, and a suggested posting window (Tuesday to Thursday, 7:30-9:00 AM local time performs best for B2B audiences). + +## Examples + +### Example 1: Founder build-log (F7 Odd-Precision Money Ledger) + +```text +User: write a post about what my bootstrapped SaaS actually costs to run +Agent: Goal check: this reads like a saves play (people screenshot cost + breakdowns). Best fit is F7 Odd-Precision Money Ledger (9.4x baseline). + Draft hook: + + "My SaaS costs $412.83 a month to run. Here is every line item." + + Then the ledger: hosting $94.20, email $35.00, monitoring $18.63... + exact numbers only, totals that actually add up, one lesson at the end. +``` + +### Example 2: Goal-first selection + +```text +User: I want a post that gets real comments, topic: why I stopped doing demos +Agent: Comment-earners are F4 Confession, F10 Contrarian, F12 Permission Slip. + For "I stopped doing X" the strongest is F10 Contrarian + Receipts: + open with the unpopular claim, back it with 2 historical parallels, + close with a question that forces side-picking. Reference: 3,083 eng. +``` + +## Best Practices + +- ✅ Pick the formula by engagement goal first, topic second +- ✅ Lead with a real failure or a specific number in the first 3 lines +- ✅ Include one moment of genuine vulnerability or concrete stakes; pure insight posts underperform in 2026 +- ❌ Don't blend two hook formulas in one post; it dilutes both +- ❌ Don't use F5 Self-Proving Meta unless the user will actually keep the promise +- ❌ Don't pair F7 Money Ledger with rounded or invented numbers; readers notice +- ❌ Don't open with an all-caps line ("THIS CHANGED EVERYTHING") +- ❌ Don't frame LinkedIn as inferior inside a LinkedIn post + +## Limitations + +- Reference engagement numbers describe the 2025-2026 corpus the formulas were extracted from; they are priors, not guarantees, and LinkedIn's ranking changes over time. +- The skill drafts text posts; it does not generate images, carousels, or video scripts. +- This standalone version does not schedule or publish. Scheduling, comment drafting, reply handling, and engagement analytics require the full bundle from the source repo. +- Voice quality depends on the raw material the user provides; a formula cannot invent authentic anecdotes, and the skill should ask for real details rather than fabricate them. + +## Common Pitfalls + +- **Problem:** The draft sounds like every other AI-written LinkedIn post. + **Solution:** Run Step 4 ruthlessly. Cut em dashes, cut "game-changer" vocabulary, and force one concrete first-person detail per 100 words. +- **Problem:** The hook is buried in paragraph two. + **Solution:** The first 210 characters must carry the hook; everything before the fold decides the expand rate. +- **Problem:** Comparing F11's raw reach to F8's 19.64x multiplier and picking F11 "because the number is bigger". + **Solution:** The columns measure different things. Match formula to goal and topic, not to the largest number. +- **Problem:** Post gets reach but zero comments. + **Solution:** The formula was picked for the wrong goal. Comment-earners end with a question or a side-picking claim, not a summary. + +## Related Skills + +- `@linkedin-content-generator` - broader LinkedIn content suite (carousels, newsletters, calendars) +- `@linkedin-profile-optimizer` - profile and authority optimization rather than post drafting +- `@social-post-writer-seo` - multi-platform social copy when LinkedIn is not the only target + +## Additional Resources + +- [Source repo with all 16 formula skeletons and worked examples](https://github.com/sergebulaev/linkedin-skills) +- [Full 10-skill bundle install (Claude Code / Codex plugin)](https://github.com/sergebulaev/linkedin-skills#install) diff --git a/antigravity-awesome-skills/skills/linkedin-post-writer/references/hook-formulas.md b/antigravity-awesome-skills/skills/linkedin-post-writer/references/hook-formulas.md new file mode 100644 index 00000000..c33ddc44 --- /dev/null +++ b/antigravity-awesome-skills/skills/linkedin-post-writer/references/hook-formulas.md @@ -0,0 +1,482 @@ + + +# 16 LinkedIn Hook Formulas - 2026 Edition + +Each formula has a skeleton, why it works, and a reference engagement number from the original post that defined it. + +F1-F10 are the original long-form thought-leadership set. F11-F16 were validated in 2026 against a large corpus of above-average performers across 10 verticals; they skew shorter and more emotional, and each is tagged with its primary engagement goal (comments / reposts / likes / saves). Pick by goal first (see "Engagement-goal split" below), then by topic. + +**Reading the reference numbers:** F1-F10 cite engagement with a baseline multiplier (a real format effect, e.g. "19.64x baseline"). F11-F16 cite absolute reach from the 2026 corpus, which can be inflated by reshares or a famous author. Treat F11-F16 numbers as a reach ceiling, not a like-for-like comparison against F1-F10. Where the reach was source-driven rather than format-driven, the formula says so. + +## Contents + +- F1 - Platform Risk Anaphora +- F2 - R.I.P. Category Obituary +- F3 - Year-over-Year Pivot +- F4 - Time-Anchor Confession +- F5 - Self-Proving Meta +- F6 - Comment-Gate Lead Magnet +- F7 - Odd-Precision Money Ledger +- F8 - Paid-vs-Free Reversal +- F9 - Curiosity-Gap Teaser +- F10 - Contrarian + Historical Receipts +- F11 - Emotional Cold-Open +- F12 - Permission Slip +- F13 - Bait-and-Switch Reversal +- F14 - Named Gratitude / Tribute +- F15 - Explain-to-Kids Simplification +- F16 - Status-Strip Humility +- Engagement-goal split +- Choosing which formula to use +- Hook micro-rules +- Never do + +--- + +## F1 - Platform Risk Anaphora + +**Reference:** 4,240 eng. + +``` +{Platform1} can {restrict|shadowban|throttle} you {timing}. +{Platform2} can {bad thing} for {reason}. + +[4-5 more anaphoric lines, escalating specificity] + +You don't own {audience}. You don't own {feed}. You're renting {attention}. + +[Concrete horror anecdote with real number: "I watched a friend lose 180k followers in an afternoon"] + +Here's what most people miss: [reframe: what the real asset is]. + +So I changed how I work: +- [tactic 1] +- [tactic 2] +- [tactic 3] + +[Metaphor close: "castles on rented land vs roads"] +[Product mention as natural conclusion, one sentence, no pitch verbs] +[Personal-audit question] +``` + +**Why:** Loss aversion stacked 5x. Identity threat. Solution list earns the close. + +--- + +## F2 - R.I.P. Category Obituary + +**Reference:** 3,822 eng. + +``` +R.I.P. {category}. + +Cause of death: {specific mechanism + numbers}. + +[Concrete evidence, 2-3 paragraphs with dates and stats] + +I defended {old thing} publicly through most of 2025. + +It worked. Until [pivotal event + date]. + +Here's what actually changed under the hood: + +1. [Change 1 with stat] +2. [Change 2 with stat] +... +6. [Change 6 with stat] + +The winners in 2026 aren't {old-winner-type}. They're {new-winner-type}. + +[One-line philosophical close] +``` + +**Why:** Status-threat + relief combo. Reframes "I'm behind" as "the game changed." Removes shame, invites curiosity. + +--- + +## F3 - Year-over-Year Pivot + +**Reference:** 494 eng (3.74x baseline). + +``` +In {last year}, I {humble benchmark}. + +In {this year}, I'm {transformational goal}. + +Here's what actually changed. + +[Vulnerable truth + specific numbers (12 -> 1,000 posts)] +[The identity reframe: "the shift wasn't tools, it was identity"] +[3-beat imperative close] + +[Mirror question: "What's your {last}->{this} pivot? One line below."] +``` + +**Why:** Two-line hook carries 80% of the weight. Mirror CTA compounds engagement algorithmically. + +--- + +## F4 - Time-Anchor Confession + +**Reference:** 1,519+ eng. + +``` +{N} {days|months|years} ago, I stopped {behavior}. + +Here's what happened. + +[2-year backstory of why the old behavior worked: concrete numbers] + +[The quiet cost, what it did to you internally] + +So in {month} I stopped. [New behavior, 2-3 lines] + +[Metric dropped by N%. Expected worse.] + +What surprised me: [counterintuitive upside, specific wins] + +[One-line reframe: "X attracts Y. Z attracts the right Y."] + +[Mirror question: "What's something you stopped doing that quietly made your work better?"] +``` + +**Why:** Confession earns the room. Specific numbers kill the "vibes" energy. Close turns every commenter into a mini-confession. + +--- + +## F5 - Self-Proving Meta + +**Reference:** 1,082 eng / 435 comments. + +``` +Most LinkedIn posts die in the first 30 minutes. + +Not because {common reason}. Because {real reason}. + +[Reveal the metric: "reply latency in first 60 min = 3.4x reach"] + +So here's the test. + +For the next 24 hours, I will {specific commitment}. + +You do two things: +1. [Low-bar action] +2. [Verification action] + +If the thesis is right, {outcome}. +If it's wrong, I owe you a post admitting it. +``` + +**Why:** Claim is validated by reader action. Every comment is evidence. Public accountability hook. + +--- + +## F6 - Comment-Gate Lead Magnet + +**Reference:** 717-3,008 eng. + +``` +[Authority number: "We've helped creators publish 47,000+ posts in 14 months"] + +[Pattern observation the authority earned] + +So I turned that workflow into {N named items}. [Drop them into X, type one command, get the output.] + +What's inside: +- [Item 1] +- [Item 2] +... +- [Item 12] + +Free. No email wall. [Light scarcity: "48 hours only, I'll DM the link personally"] + +Comment "{keyword}" below + connect with me and I'll send the bundle. +``` + +**Why:** Capped reach but huge DM conversion. Named bundle + real authority = 300-800 comments if the bundle is genuine. + +**Warning:** This is engagement bait. Ship only when the weekly goal is list-building, not thought leadership. LinkedIn suppresses pure "comment X" posts. + +--- + +## F7 - Odd-Precision Money Ledger + +**Reference:** 1,755 eng (9.4x baseline). + +``` +{Odd, specific dollar number: "$873.47"} + +[1-line context of what this number covers] + +Here is every line item, from the ledger, nothing rounded: + +- {tool 1}: $X.YZ +- {tool 2}: $X.YZ +... + +[What the total replaces: "$14,200 team cost"] + +[The thing that surprised you: what broke, what worked] + +[Identity reframe close: "Tradesmen flip houses, SEOs flip blogs, AI founders flip {X}"] +``` + +**Why:** Non-rounded numbers signal real accounting. Ledger is screenshot-bait. Dwell time stays high. + +--- + +## F8 - Paid-vs-Free Reversal + +**Reference:** 550 eng (19.64x baseline, highest multiplier in the set). + +``` +I charge {audience} $X for {service}. + +Screw it. Today it's free. + +Below is the exact {N-step} teardown I run before I'll take a client. It's called the {NAMED-FRAMEWORK}. + +[Block an hour, open X in one tab, Y in another, grade yourself honestly.] + +1. {STEP-1-NAME}: [actionable instruction with specific ratio or example] +2. {STEP-2-NAME}: [actionable instruction] +... +7. {STEP-7-NAME}: [actionable instruction] + +That's the {framework}. Run it today. Most {audience} find 3 fixes in the first 20 minutes. + +[Soft scarcity close: "Want me to run {framework} on your profile personally? Connect + send me yours, I'll pick 5 this week."] +``` + +**Why:** Reversal hook (price to free) creates pattern interrupt. Named framework signals proprietary thinking. Checklist drives saves (5x likes under 360Brew). + +--- + +## F9 - Curiosity-Gap Teaser + +**Reference:** 306 eng (4.25x baseline). + +``` +Yesterday, our {system} did something. + +Something we didn't program it to do. + +[One sensory anchor: "I was watching the logs from my kitchen, half-reading, half-making coffee."] + +[Specific reveal, not a platitude: the concrete thing that happened] + +[Reframe: what it means for the category, one paragraph] + +[Sensory detail: "held a cold cup of coffee for about ten minutes"] + +[Philosophical close naming an unnamed feeling, ending with a question] +``` + +**Why:** Line 1 is incomplete + line 2 deepens the gap = scroll-locked brain. Sensory anchor kills the AI-slop pattern detector. + +--- + +## F10 - Contrarian + Historical Receipts + +**Reference:** 3,083 eng. + +``` +{Sacred cow} has been dying since {year}. + +{Month Year}: {event}. "{Death prediction.}" +{Month Year}: {event}. "{Death prediction.}" +[6-9 total dated entries, each 1-2 lines] + +Every quarter for N years. Every cycle: the same obituary. The same LinkedIn carousel. + +Here's the counterpunch. + +[Hard stat with source: "$391B -> $1.81T, 35.9% CAGR"] +[Second stat: "the shippers grew 3-10x in the same window"] + +What actually died wasn't {X}. It was {specific subset}. [2-3 lines of who.] + +What's thriving: {opposite subset with specifics}. + +[Binary identity close:] +If you're still {losing behavior}, you already lost. +If you're {winning behavior}, you already won. + +[Provocative question: "What's the most embarrassing X-killed-Y prediction you remember?"] +``` + +**Why:** Receipt list is a dwell-time machine. Binary identity close forces commenters to pick a side publicly. + +--- + +## F11 - Emotional Cold-Open + +**Reference:** highest single post in the 2026 corpus (256k eng), but that reach came from a generic emotional reshare, not the format. Treat it as a ceiling, not a promise. Primary goal: **likes**. + +``` +{One short line dropped into the emotional peak of a real story: the moment of breaking, loss, or impossible odds. No setup.} + +{Subject} had almost {given up / lost everything} after {the struggle}. + +[Mid-scene narrative: 3-6 short lines, present-tense, sensory. The reader is already inside the moment.] + +[The turn: what changed, who showed up, what it cost.] + +[One-line meaning, not a moral. Let the story carry it.] +``` + +**Why:** Starting at the emotional peak (in medias res) skips the warm-up the scroll punishes. Raw feeling out-travels expertise in every vertical. + +**Warning:** Do NOT write the first line in ALL CAPS even though many source posts did; all-caps openers read as AI/cringe. Carry the intensity with word choice, not caps. Only use a true story; half the top emotional posts in the corpus were generic reshares, and readers punish manufactured stakes. + +--- + +## F12 - Permission Slip + +**Reference:** 29k eng, comment-heavy. Primary goal: **comments**. + +``` +I don't know who needs to hear this today, but {reassuring truth aimed at one anonymous reader}. + +[2-4 lines that make the reassurance specific and earned, not a platitude.] + +[A small, concrete permission: "you're allowed to {X}".] + +[Soft close that invites the reader to self-identify.] +``` + +**Why:** Anonymous second-person reassurance makes readers tag themselves in the comments ("I needed this today"). Comments over-index hard. + +**Warning:** This is the most formulaic creator-economy opener in the set. Effective but visibly engineered. Use no more than once or twice a month, and only when the reassurance is something you actually believe, or it reads as hollow. + +--- + +## F13 - Bait-and-Switch Reversal + +**Reference:** 195k eng (top of the Startups/Tech corpus). Primary goal: **likes**. + +``` +Enough is enough. No more {beloved perk / standard practice} at {company / in my workflow}. + +We're also cutting {second thing}. + +[Beat of suspense: let the reader assume bad news.] + +[The reveal: it's actually an upgrade. Here's what we replaced it with and why it's better.] + +[What the change really stands for: the value underneath.] +``` + +**Why:** Fake bad news weaponizes loss aversion, then the positive reveal releases it. The whiplash is the engine. + +**Warning:** Only works if the reveal genuinely resolves positive. A real cut dressed as good news will get torn apart in the comments. + +--- + +## F14 - Named Gratitude / Tribute + +**Reference:** 109k eng, but from a celebrity tribute reshare. The format helps; the fame did the heavy lifting. Primary goal: **reposts**. + +``` +To {Name}, {Name}, and {Name}: thank you for {the specific quality or thing they did}. + +[2-4 lines naming what each person or the group actually did. Specific, not generic praise.] + +[Why it mattered to you / to the work.] + +[One-line close that honors them, not you.] +``` + +**Why:** Publicly naming real people invites everyone tagged or adjacent to repost and amplify. Celebrating others gets shared far more than self-promotion. + +**Warning:** Name real people for real reasons. Tactical name-dropping to borrow reach is transparent and backfires. + +--- + +## F15 - Explain-to-Kids Simplification + +**Reference:** 23k eng, 2,184 reposts. Primary goal: **saves** (LinkedIn exposes no public save count, so the high repost count stands in as the save-worthiness proxy here, not a sign this is a repost formula). + +``` +{Jargon term} explained to kids. + +Explanations for kids... and adults! + +{emoji} {TERM}: what does it stand for? +{emoji} {first part} = {plain-language meaning} +{emoji} {second part} = {plain-language meaning} +[continue the scannable, emoji-anchored glossary] + +[One-line "now you'll never forget it" close.] +``` + +**Why:** A scannable, emoji-anchored simplification of something dense is saved and reshared as a reference. Works for any jargon-heavy field (finance, law, medicine, engineering). + +**Warning:** Keep the simplification correct. Condescending or wrong explanations of your own field destroy authority. + +--- + +## F16 - Status-Strip Humility + +**Reference:** viral-tier on likes in the corpus (no exact count). Primary goal: **likes**. + +``` +Outside, I get called {impressive titles like founder, CEO, investor}. + +At home, none of that survives {the humbling moment}. + +[The scene that strips the status: a kid, a partner, a quiet failure.] + +[What the contrast taught you, in one or two lines.] +``` + +**Why:** Trading prestige for relatability converts authority into warmth. Senior people get likes by showing the human under the title. + +**Warning:** Don't humble-brag. The titles in line one should set up a genuine deflation, not a flex disguised as one. + +--- + +## Engagement-goal split + +Pick the formula by what you want the post to earn. This split held across all 10 verticals in the 2026 corpus: + +| Goal | Earned by | Formulas | +|---|---|---| +| **Comments** | questions, contrarian/unpopular takes, vulnerability, self-tagging | F4 Confession, F10 Contrarian, F12 Permission Slip, F9 Curiosity-Gap | +| **Reposts** | quotable maxims, tributes, "X isn't Y" distinctions | F14 Named Gratitude, F2 R.I.P., F8 Paid-vs-Free | +| **Likes** | emotional stories, celebrations, status-strip, spectacle | F11 Emotional Cold-Open, F13 Bait-and-Switch, F16 Status-Strip | +| **Saves** | simplifications, exact how-to, frameworks | F15 Explain-to-Kids, F7 Odd-Precision Money, F8 Paid-vs-Free | + +## Choosing which formula to use + +| Topic type | Best formula | Why | +|---|---|---| +| Platform/category argument | F1 Anaphora | Loss aversion stacks cleanly | +| Industry era ending | F2 R.I.P. / F10 Contrarian | Force side-picking | +| Personal year recap | F3 Year-over-Year / F4 Confession | Identity shift reads as earned | +| Product demo in public | F5 Self-Proving Meta | Structural self-proof | +| Big authority giveaway | F6 Comment-Gate / F8 Paid-vs-Free | List-building tier | +| Founder build-log | F7 Odd-Precision Money | Screenshot-bait ledger | +| Emergent/surprise story | F9 Curiosity-Gap | Scroll-lock hook | +| Real story with emotional stakes | F11 Emotional Cold-Open | In-medias-res beats the warm-up | +| Encouragement to a discouraged audience | F12 Permission Slip | Readers self-tag in comments | +| Policy/process change that's an upgrade | F13 Bait-and-Switch | Fake bad news then relief | +| Thanking mentors / team / a departing colleague | F14 Named Gratitude | Named people amplify it | +| Demystifying jargon | F15 Explain-to-Kids | Save-worthy reference | +| Senior person wanting warmth, not distance | F16 Status-Strip | Prestige traded for relatability | + +## Hook micro-rules + +- **"How I" beats "How to".** First-person experience ("How I cut CAC by 62%") outperforms generic instruction ("How to cut CAC") by 2-3x. Swap every "How to" hook to "How I" unless the post is a pure framework with no narrator. +- **Specific number in the first sentence** raises expand-rate by ~35%. $873.47 beats $900. 40,000 beats "a lot of". +- **Real failure in the first 3 lines** outperforms polished framing by **8.5x**. Lead with what broke. + +## Never do + +- Blend two hooks in one post (dilutes both) +- Use F5 Self-Proving Meta if you won't actually keep the promise +- Use F6 Comment-Gate more than once per month +- Pair F7 Money Ledger with made-up numbers; readers know +- Use F1 Anaphora to frame LinkedIn as inferior (algo penalty on LinkedIn) diff --git a/antigravity-awesome-skills/skills/loki-mode/examples/todo-app-generated/backend/package-lock.json b/antigravity-awesome-skills/skills/loki-mode/examples/todo-app-generated/backend/package-lock.json index bf210f5c..b8cd6751 100644 --- a/antigravity-awesome-skills/skills/loki-mode/examples/todo-app-generated/backend/package-lock.json +++ b/antigravity-awesome-skills/skills/loki-mode/examples/todo-app-generated/backend/package-lock.json @@ -8,7 +8,7 @@ "name": "todo-app-backend", "version": "1.0.0", "dependencies": { - "better-sqlite3": "^12.10.1", + "better-sqlite3": "^12.11.1", "cors": "^2.8.6", "express": "^4.18.2", "express-rate-limit": "^8.5.2" @@ -302,9 +302,9 @@ "license": "MIT" }, "node_modules/better-sqlite3": { - "version": "12.10.1", - "resolved": "https://registry.npmjs.org/better-sqlite3/-/better-sqlite3-12.10.1.tgz", - "integrity": "sha512-HfFtzCqnSfwB3+HroF6PSKzyh+7RfNMGPCzHFUZXRlvrPCb4P3cvxKZNN43Sr7IrkofqQZM+gIvffGpA8VvqgA==", + "version": "12.11.1", + "resolved": "https://registry.npmjs.org/better-sqlite3/-/better-sqlite3-12.11.1.tgz", + "integrity": "sha512-dq9AtApgg5PGFtBzPFSBl3HZQjHok5gaQCM6zh2Yk0aSmDCs1CbnVI8/HgASQkNKsWFpseIO9beg5xxpYhbIfA==", "hasInstallScript": true, "license": "MIT", "dependencies": { diff --git a/antigravity-awesome-skills/skills/loki-mode/examples/todo-app-generated/backend/package.json b/antigravity-awesome-skills/skills/loki-mode/examples/todo-app-generated/backend/package.json index 0c97a29d..16c02ba5 100644 --- a/antigravity-awesome-skills/skills/loki-mode/examples/todo-app-generated/backend/package.json +++ b/antigravity-awesome-skills/skills/loki-mode/examples/todo-app-generated/backend/package.json @@ -9,7 +9,7 @@ "dev": "ts-node src/index.ts" }, "dependencies": { - "better-sqlite3": "^12.10.1", + "better-sqlite3": "^12.11.1", "cors": "^2.8.6", "express": "^4.18.2", "express-rate-limit": "^8.5.2" diff --git a/antigravity-awesome-skills/skills/markdown-rendering/SKILL.md b/antigravity-awesome-skills/skills/markdown-rendering/SKILL.md new file mode 100644 index 00000000..5ee94504 --- /dev/null +++ b/antigravity-awesome-skills/skills/markdown-rendering/SKILL.md @@ -0,0 +1,72 @@ +--- +name: markdown-rendering +description: "Open Markdown reliably in cmux panes and recover from blank rendered surfaces." +category: productivity +risk: safe +source: community +source_repo: davidondrej/skills +source_type: community +date_added: "2026-07-07" +author: davidondrej +tags: [markdown, cmux, rendering] +tools: [claude, codex] +license: "MIT" +license_source: "https://github.com/davidondrej/skills/blob/main/LICENSE" +--- + +# Markdown Rendering in cmux + +## When to Use + +- Use when opening Markdown in cmux shows a blank pane or wrong layout. +- Use when you need to display a Markdown file in a stable cmux right pane. + +## The Problem + +`cmux markdown open` defaults to **spawning a brand-new pane** every time, even with `--direction right`. The common "fix" — moving the new markdown surface into the existing right pane with `move-surface` — **bugs out: the moved viewer renders BLANK.** The surface keeps `type=markdown` and looks healthy, but shows nothing. + +So you get stuck: either a stray extra pane, or a blank viewer after moving it. + +## The Rule + +You have exactly two reliable options. **Never `move-surface` a markdown viewer** — that is the path that bugs. + +### Option A — Open it right on the first try + +If there is no usable right pane yet, just let cmux create one and leave it where it lands: + +```bash +cmux markdown open /abs/path/file.md --direction right --focus false +``` + +Do NOT then move it. If it spawned where you want it, you're done. + +### Option B — Close existing right pane(s), then open fresh + +If there are other right panes in the way (and they're unused or irrelevant), **close them first**, then open the markdown fresh as a new right pane: + +```bash +# 1. find panes in THIS workspace +cmux list-panes --workspace "$CMUX_WORKSPACE_ID" + +# 2. close the unused/irrelevant right pane(s) by closing their surfaces +cmux list-pane-surfaces --pane pane:NN +cmux close-surface --surface surface:XX # repeat per surface in that pane + +# 3. THEN open the markdown fresh — it creates its own clean right pane +cmux markdown open /abs/path/file.md --direction right --focus false +``` + +## Hard Rules + +- **Never `move-surface` a markdown viewer.** It renders blank afterward. This is the core bug this skill exists for. +- Open it correctly the first time (Option A), OR close the conflicting right pane(s) and open a fresh right pane from scratch (Option B). +- Only close panes that are unused or irrelevant — never close a pane the user is working in. +- Always anchor to `$CMUX_WORKSPACE_ID`; never assume the visually focused workspace. +- Pass `--focus false` so you don't steal the user's focus. +- You can't screenshot/read a markdown surface to verify it. If unsure it rendered, ask the user. + +## Limitations + +- Adapted from `davidondrej/skills`; verify local paths, tools, credentials, and agent features before acting. +- For commands, remote access, scheduling, browser automation, or file-changing workflows, get explicit user approval and confirm the target environment first. diff --git a/antigravity-awesome-skills/skills/pi-custom-model/SKILL.md b/antigravity-awesome-skills/skills/pi-custom-model/SKILL.md new file mode 100644 index 00000000..b67fb799 --- /dev/null +++ b/antigravity-awesome-skills/skills/pi-custom-model/SKILL.md @@ -0,0 +1,68 @@ +--- +name: pi-custom-model +description: "Register custom Pi Agent model slugs so saved OpenRouter variants resolve correctly." +category: operations +risk: critical +source: community +source_repo: davidondrej/skills +source_type: community +date_added: "2026-07-07" +author: davidondrej +tags: [pi-agent, models, openrouter] +tools: [claude, codex] +license: "MIT" +license_source: "https://github.com/davidondrej/skills/blob/main/LICENSE" +disable-model-invocation: true +--- + +# Pi custom / variant model + +## When to Use +Pi's saved default only loads if the exact `provider/id` exists in its model registry. Pi ships a static bundled list per provider — so OpenRouter **routing-shortcut variants** (`:nitro` = sort by throughput, `:floor` = cheapest, `:exacto` = quality tool-use) and any brand-new slug are NOT in it. When the default doesn't resolve, Pi silently falls through to its built-in per-provider default (for openrouter that's `moonshotai/kimi-k2.6`) — looking like Pi "reset" your model. Fix = register the slug as a custom model so `find(provider, id)` matches. + +## Files (global) +- `~/.pi/agent/settings.json` — `defaultProvider`, `defaultModel`, `defaultThinkingLevel` +- `~/.pi/agent/models.json` — custom models, keyed by provider +- `~/.pi/agent/auth.json` — provider credentials (check the provider key exists) + +## Steps +1. **Confirm the slug is real** before adding it (e.g. check the OpenRouter model/variant exists). A typo'd id also silently falls back. +2. **Confirm auth.** The provider must have a key in `auth.json` (or an env var like `OPENROUTER_API_KEY`). No auth → the model is registered but unavailable → still falls back. +3. **Add the model to `models.json`** under `providers..models`. For a **built-in provider** (openrouter, anthropic, etc.) you only supply metadata — `api`, `baseUrl`, and auth are inherited from the bundled defaults. Example: + ```json + { + "providers": { + "openrouter": { + "models": [ + { + "id": "z-ai/glm-5.2:nitro", + "name": "Z.ai: GLM 5.2 (nitro)", + "reasoning": true, + "thinkingLevelMap": { "xhigh": "xhigh" }, + "input": ["text"], + "cost": { "input": 0.95, "output": 3, "cacheRead": 0.18, "cacheWrite": 0 }, + "contextWindow": 1048576, + "maxTokens": 32768, + "compat": { "supportsDeveloperRole": false, "thinkingFormat": "openrouter" } + } + ] + } + } + } + ``` + Copy `cost`/`contextWindow`/`compat` from the base model (the variant shares them) — find the bundled entry in `/node_modules/@earendil-works/pi-ai/dist/providers/.models.js`. Don't hardcode generic 128k/16k if the real model is bigger. +4. **Set the default** in `settings.json`: `defaultProvider` + `defaultModel` = the exact id. Leave `defaultThinkingLevel` as the user has it. +5. **Verify:** `pi --list-models | grep ` shows it, and JSON parses. Optionally smoke-test: `pi --provider

--model "" "which model are you?"`. + +## Quirks +- **Exact match only.** `find()` is exact `provider`+`id` — no fuzzy/colon-stripping for the *saved default* path. The slug in `settings.json` and `models.json` must be byte-identical. +- **Silent fallback.** Pi prints no error when the default doesn't resolve; it just shows a different model in the footer. That's the tell. +- **Don't edit `settings.json` alone.** Setting `defaultModel` to an unregistered slug does nothing — `models.json` is the actual fix. +- **`enabledModels`** (optional) pins the model picker so Ctrl+P cycling can't drift back: `"enabledModels": ["/:"]`. +- **Project override.** A repo's `.pi/settings.json` overrides global. If a default reverts only inside one project, check that file first. +- Restart Pi fully — the registry loads at startup. + +## Limitations + +- Adapted from `davidondrej/skills`; verify local paths, tools, credentials, and agent features before acting. +- For commands, remote access, scheduling, browser automation, or file-changing workflows, get explicit user approval and confirm the target environment first. diff --git a/antigravity-awesome-skills/skills/pi-web-search/SKILL.md b/antigravity-awesome-skills/skills/pi-web-search/SKILL.md new file mode 100644 index 00000000..612507ff --- /dev/null +++ b/antigravity-awesome-skills/skills/pi-web-search/SKILL.md @@ -0,0 +1,74 @@ +--- +name: pi-web-search +description: "Give Pi Agents a safe web-search and fetch workflow using the installed pi-web-access package." +category: research +risk: safe +source: community +source_repo: davidondrej/skills +source_type: community +date_added: "2026-07-07" +author: davidondrej +tags: [web-search, pi-agent, research] +tools: [claude, codex] +license: "MIT" +license_source: "https://github.com/davidondrej/skills/blob/main/LICENSE" +--- + +# Web Search + +## When to Use + +- Use when a Pi Agent task needs current web information, page fetches, PDFs, YouTube, or GitHub content. +- Use when Pi should use its own web-access package instead of another agent browser tool. + +The `pi-web-access` package is installed globally. Zero-config via Exa MCP (no API key), with fallback Exa → Perplexity → Gemini. + +## CRITICAL: always pass `workflow: "none"` + +Every `web_search` call MUST include `workflow: "none"`. This skips the interactive browser curator popup (the user does not want it opening). No exceptions — single query or batched `queries`, always set `workflow: "none"`. + +``` +web_search({ queries: ["query 1", "query 2"], workflow: "none" }) +``` + +## Tools + +- `web_search` — search the web; returns synthesized answers with citations. Can be called many times per turn. **Always pass `workflow: "none"`.** +- `code_search` — zero-key Exa code-context. Use for library/API/code lookups instead of generic `web_search`. +- `fetch_content` — fetch URL(s) → markdown; handles PDFs, YouTube, GitHub. +- `get_search_content` — big pages (>30k chars) are truncated in responses but stored in full; call this to pull the rest on demand so they don't blow context. + +## fetch_content specifics + +- **GitHub URLs are cloned, not scraped** — you get real files + a local path to explore with `read`/`bash` (private repos need the `gh` CLI). Use this for dev work. +- **PDFs** → auto-extracted to markdown in `~/Downloads/`, readable in sections (text-only, no OCR). +- **YouTube/video** → full raw transcripts + frame extraction. Needs a `GEMINI_API_KEY` (not zero-config); frame extraction also needs `ffmpeg`/`yt-dlp`. + +## Routing — match the user's phrasing + +Always use the `web_search` tool. These counts are HARD MINIMUMS — count your queries before answering and do not stop short: + +- **"web search"** → **at least 2** queries, varied keywords/angles, then synthesize. +- **"extensive web research"** → **at least 4** queries, totally different keywords and angles. +- **"deep research"** → **at least 8** queries, totally different keywords and angles, run across 2–3 successive batches (refine angles after each batch), to learn as much as possible about the topic. + +A single batched `web_search` call counts each query in `queries[]` toward the total. If your first batch is under the minimum, fire another batch before synthesizing. + +## Fallback / alternative: DeepAPI web search + +If the Exa → Perplexity → Gemini chain fails, or you need ranked results with URLs: + +```bash +test -n "$DEEPAPI_API_KEY" || { echo "DEEPAPI_API_KEY is not set"; exit 1; } +curl -s --max-time 60 "https://deepapi.co/v1/search/web" \ + -H "Authorization: Bearer $DEEPAPI_API_KEY" -H "Content-Type: application/json" \ + -H "Idempotency-Key: $(uuidgen)" \ + -d '{"query": "your search terms", "maxResults": 5, "maxCostUsd": "0.05"}' +``` + +Results are in `.output` (title, url, snippet per item). Query under 500 chars. Full details: `deepapi` skill. + +## Limitations + +- Adapted from `davidondrej/skills`; verify local paths, tools, credentials, and agent features before acting. +- For commands, remote access, scheduling, browser automation, or file-changing workflows, get explicit user approval and confirm the target environment first. diff --git a/antigravity-awesome-skills/skills/push-skill-to-github/SKILL.md b/antigravity-awesome-skills/skills/push-skill-to-github/SKILL.md new file mode 100644 index 00000000..da08487b --- /dev/null +++ b/antigravity-awesome-skills/skills/push-skill-to-github/SKILL.md @@ -0,0 +1,61 @@ +--- +name: push-skill-to-github +description: "Commit and push skill changes to the configured skills repository after review and validation." +category: development +risk: critical +source: community +source_repo: davidondrej/skills +source_type: community +date_added: "2026-07-07" +author: davidondrej +tags: [skills, git, publishing] +tools: [claude, codex] +license: "MIT" +license_source: "https://github.com/davidondrej/skills/blob/main/LICENSE" +--- + +# Push Skills to GitHub + +## When to Use + +- Use when skill changes are ready to commit and push to the configured skills repo. +- Use when the user asks to save or publish skill updates after validation. + +For committing any skill change to the user's private skills repo, git root **`~/.agents`** (this is also the canonical skill folder; `.claude` and `.pi/agent/skills` symlink to `~/.agents/skills`). Pushes here auto-publish a sanitized public mirror to `davidondrej/skills` — never push directly to that public repo. + +Use this after creating or editing a skill. If the skill is distributed to all agents, do that first (`distribute-skill-to-all-agents`), then run this to push the canonical copy. + +## Steps + +**Not in cmux?** (no `$CMUX_WORKSPACE_ID`): skip the cmux pane steps — just run the git commands from step 2 directly in any available terminal, then verify the push output. + +1. **Open a fresh cmux pane** in the current workspace, no focus steal: + ```bash + cmux new-pane --type terminal --direction right --workspace "$CMUX_WORKSPACE_ID" --focus false + cmux list-panes --workspace "$CMUX_WORKSPACE_ID" # note the NEW pane + its surface ref + ``` +2. **Stage, commit, push** in `~/.agents` (send to the new pane's surface): + ```bash + cmux send --surface surface:NEW 'cd ~/.agents && git add -A && git commit -m "" && git push' + cmux send-key --surface surface:NEW enter + ``` +3. **Verify** the push landed: + ```bash + sleep 2 + cmux read-screen --surface surface:NEW | tail -15 # expect "main -> main" + ``` +4. **Close the pane** once confirmed: + ```bash + cmux close-surface --surface surface:NEW + cmux list-panes --workspace "$CMUX_WORKSPACE_ID" # confirm the pane is gone + ``` + +## Notes +- Always run git from `~/.agents` (the repo root), not `~/.agents/skills`. +- Write a concise, specific commit message describing the skill change. +- Only push to GitHub when the user asks. Don't push speculatively. + +## Limitations + +- Adapted from `davidondrej/skills`; verify local paths, tools, credentials, and agent features before acting. +- For commands, remote access, scheduling, browser automation, or file-changing workflows, get explicit user approval and confirm the target environment first. diff --git a/antigravity-awesome-skills/skills/read-all-adrs/SKILL.md b/antigravity-awesome-skills/skills/read-all-adrs/SKILL.md new file mode 100644 index 00000000..334d5052 --- /dev/null +++ b/antigravity-awesome-skills/skills/read-all-adrs/SKILL.md @@ -0,0 +1,35 @@ +--- +name: read-all-adrs +description: "Read every ADR in a project before summarizing architectural context or decisions." +category: productivity +risk: safe +source: community +source_repo: davidondrej/skills +source_type: community +date_added: "2026-07-07" +author: davidondrej +tags: [adr, documentation, architecture] +tools: [claude, codex] +license: "MIT" +license_source: "https://github.com/davidondrej/skills/blob/main/LICENSE" +disable-model-invocation: true +--- + + + +## When to Use + +- Use when the user explicitly asks to load ADR context. +- Use when architectural decisions must be understood before changing or judging a project. + +Read EVERY single ADR `.md` file in this project's `docs/adr/` folder, start to +finish. + +Do not skim. Read each ADR completely before summarizing. + +Read every single ADR file, for this project, in full. + +## Limitations + +- Adapted from `davidondrej/skills`; verify local paths, tools, credentials, and agent features before acting. +- For commands, remote access, scheduling, browser automation, or file-changing workflows, get explicit user approval and confirm the target environment first. diff --git a/antigravity-awesome-skills/skills/research-prompt/SKILL.md b/antigravity-awesome-skills/skills/research-prompt/SKILL.md new file mode 100644 index 00000000..26760cc4 --- /dev/null +++ b/antigravity-awesome-skills/skills/research-prompt/SKILL.md @@ -0,0 +1,63 @@ +--- +name: research-prompt +description: "Turn vague research needs into one precise deep-research prompt with context and output criteria." +category: research +risk: safe +source: community +source_repo: davidondrej/skills +source_type: community +date_added: "2026-07-07" +author: davidondrej +tags: [research, prompting, briefs] +tools: [claude, codex] +license: "MIT" +license_source: "https://github.com/davidondrej/skills/blob/main/LICENSE" +--- + +# Research Prompt + +## When to Use + +- Use when the user wants a deep-research brief or researcher prompt. +- Use when a vague research question needs to become one precise self-contained paragraph. + +Goal: turn a vague research need into ONE self-contained paragraph that a researcher with zero prior knowledge of the project can act on with zero back-and-forth. + +## Rules + +- **One paragraph.** No headers, no bullet list in the deliverable. +- **Prompt the job, not the topic.** Give search handles (timeframe, ranking, source type, decision logic) — not just a subject. +- **Assume zero prior knowledge.** Write for a researcher who has never heard of the project. Open by explaining, in plain English, what the project/product is, why it exists, and the current situation — so they understand what's going on, what we need, and why we need it. +- **Lead with the goal + decision.** Right after that explainer, state the single question the research must answer and the decision/use it informs. +- **Embed all context.** Names, dates, product, prior known facts, constraints. The researcher must not need to ask anything or guess. +- **Number the sub-questions inline** (1, 2, 3…) so coverage is explicit. Keep to 3–6. One mission per prompt — don't cram unrelated questions. +- **State constraints.** What to include, what to avoid (e.g. "only non-Chinese competitors", "no marketing fluff"). +- **Source hierarchy.** Prefer primary sources (official docs, GitHub, papers, filings, changelogs); forums/X/Reddit are weak signal only, never factual proof. +- **Contradiction handling.** If sources conflict, separate confirmed facts / inference / unresolved uncertainty — don't force fake consensus. Flag low-confidence claims for verification. +- **Completion bar (define "done").** Don't stop at the first plausible answer. Corroborate each key claim with multiple independent primary sources where they exist; where sources are scarce, say so explicitly instead of padding. Keep going until every numbered sub-question is covered to this bar. +- **Gap round before finishing.** Require a final self-critique pass: list gaps, contradictions, and any single-source claims, then run another round of searches to close them — repeat until clean. +- **Constrain output hard, method loosely.** Be strict on the deliverable; leave the search path flexible so the researcher can explore. +- **Demand a fixed output per finding:** source link + specific claim + one-line "why it matters / why a viewer should care". +- Verifiable, citable facts only. No opinions. +- **Last sentence:** instruct them to output everything into a single detailed markdown file. + +## Process + +1. Pull context from the relevant project files / conversation (dates, names, known facts, audience, end use), and write a 1–2 sentence plain-English explainer of what the project is and why it exists for a reader who knows nothing. +2. Identify the ONE question the research answers. +3. Draft 3–6 numbered sub-questions that fully cover it. +4. Add include/avoid constraints + the per-finding output format. +5. Compress to one clean paragraph. Cut filler. + +## Template + +> [For a reader with zero prior knowledge: in 1–2 plain-English sentences, what the project/product is, why it exists, and the current situation.] Research [TOPIC + key identifying facts] to answer one question: [THE QUESTION] — for [DECISION / END USE]. Find: (1) …; (2) …; (3) …; (4) …. [Constraints: include X, avoid Y.] Prefer primary sources; treat forums/social as weak signal only; if sources conflict, separate fact from inference and flag what needs verification. Don't stop at the first plausible answer: corroborate each key claim with multiple independent primary sources where they exist (and say so explicitly where they don't), continuing until every numbered question is covered to that bar. Before finishing, do a self-critique pass — list gaps, contradictions, and any single-source claims, then run another round of searches to close them, repeating until clean. For each point, give the source link, the specific claim, and a one-line "why it matters". No marketing fluff — verifiable, citable facts only. Output everything into a single detailed markdown file. + +## Executing the prompt + +To run the finished prompt with an AI researcher, execute it via DeepAPI `POST /v1/research/deep` — follow the `deep-research` skill. + +## Limitations + +- Adapted from `davidondrej/skills`; verify local paths, tools, credentials, and agent features before acting. +- For commands, remote access, scheduling, browser automation, or file-changing workflows, get explicit user approval and confirm the target environment first. diff --git a/antigravity-awesome-skills/skills/run-deep-swe/SKILL.md b/antigravity-awesome-skills/skills/run-deep-swe/SKILL.md new file mode 100644 index 00000000..b56254d2 --- /dev/null +++ b/antigravity-awesome-skills/skills/run-deep-swe/SKILL.md @@ -0,0 +1,120 @@ +--- +name: run-deep-swe +description: "Run reproducible DeepSWE coding-agent benchmark evaluations through OpenRouter and mini-swe-agent." +category: agent-evaluation +risk: critical +source: community +source_repo: davidondrej/skills +source_type: community +date_added: "2026-07-07" +author: davidondrej +tags: [benchmark, deepswe, openrouter, evaluation] +tools: [claude, codex] +license: "MIT" +license_source: "https://github.com/davidondrej/skills/blob/main/LICENSE" +disable-model-invocation: true +--- + +# Run DeepSWE via OpenRouter + +## When to Use + +- Use when the user wants to benchmark a model on DeepSWE or mini-swe-agent tasks. +- Use when you need a reproducible coding-agent evaluation plan and output artifacts. + +DeepSWE (deepswe.datacurve.ai) is a 113-task Harbor-compatible coding-agent benchmark. It runs via **Pier** (Harbor fork) driving **mini-swe-agent** (model-agnostic). Any model reachable through OpenRouter can be scored. + +## Prerequisites — state-check first + +```bash +which uv git docker || echo "MISSING: install uv, git, docker" +docker info >/dev/null 2>&1 || echo "MISSING: Docker daemon not running (Pier's default sandbox)" +echo "OPENROUTER_API_KEY set? ${OPENROUTER_API_KEY:+YES}" +``` + +**Docker must be running** — Pier sandboxes each task in Docker by default (`--env modal` for cloud instead). + +`OPENROUTER_API_KEY` must already be present in the environment. If it is unset, +ask the user to configure their preferred secret-management path; do not read +shell startup files, print secrets, or invent a key. + +## Setup + +```bash +git clone https://github.com/datacurve-ai/deep-swe && cd deep-swe +uv tool install datacurve-pier # PyPI (preferred) +# or: uv tool install git+https://github.com/datacurve-ai/pier +# pier bundles mini-swe-agent as the --agent driver +``` + +Run all `pier` commands from inside `deep-swe/`, using relative `-p tasks/...`. + +## OpenRouter wiring (the part the docs don't spell out) + +mini-swe-agent has a native OpenRouter model class. Both routes below use `OPENROUTER_API_KEY` and the OpenRouter slug (`vendor/model`, e.g. `minimax/minimax-m3`): + +**Route A — native OpenRouter class (preferred, hits openrouter.ai/api/v1 directly):** +```bash +pier run -p deep-swe/tasks --agent mini-swe-agent \ + --model minimax/minimax-m3 --model-class openrouter +``` + +**Route B — LiteLLM provider prefix (fallback; same key):** +```bash +pier run -p deep-swe/tasks --agent mini-swe-agent \ + --model openrouter/minimax/minimax-m3 +``` + +Notes: +- Slug = the exact OpenRouter slug. Verify it at openrouter.ai/models before running. +- Free/zero-cost models: OpenRouter cost tracking can error. Set `export MSWEA_COST_TRACKING=ignore_errors`. +- Flag spelling can vary by version — confirm with `pier run --help` and `mini --help`. + +## Smoke test FIRST (1 task — do this before any full run) + +Always validate end-to-end wiring on a single task before spending tokens on the corpus: + +```bash +pier run -p deep-swe/tasks/ --agent mini-swe-agent \ + --model minimax/minimax-m3 --model-class openrouter +# list available task ids: +ls deep-swe/tasks +``` + +Pass criteria: run completes, model returns actions (not auth/format errors), a score/trajectory is emitted. If it 401s → key wrong. If "provider not provided"/"model not mapped" → fix slug or switch route. + +## Subset run (deterministic sample) + +```bash +pier run -p deep-swe/tasks --agent mini-swe-agent \ + --model minimax/minimax-m3 --model-class openrouter \ + --n-tasks 10 --sample-seed 0 +``` + +## Full 113-task corpus (costs tokens + time — confirm with user first) + +```bash +pier run -p deep-swe/tasks --agent mini-swe-agent \ + --model minimax/minimax-m3 --model-class openrouter +# add `--env modal` to run in parallel Modal sandboxes (needs Modal configured) +``` + +## Output & leaderboard + +- Trials land in `jobs///`. Inspect with `pier view jobs/`, `pier analyze jobs/`, or `pier critique run jobs/`. +- Report: the exact command used, pass/fail, score, and any blockers. +- Submit results for the official leaderboard to: **** + +## Failure modes + +| Symptom | Cause | Fix | +|---|---|---| +| HTTP 401 | bad/missing key | re-export `OPENROUTER_API_KEY` | +| "LLM Provider NOT provided" | missing slug prefix | use Route B `openrouter/...` or Route A with `--model-class openrouter` | +| "model isn't mapped"/cost error | unknown cost for model | `export MSWEA_COST_TRACKING=ignore_errors` | +| unknown flag | version drift | check `pier run --help` | + +## Limitations + +- Adapted from `davidondrej/skills`; verify local paths, tools, credentials, and agent features before acting. +- For commands, remote access, scheduling, browser automation, or file-changing workflows, get explicit user approval and confirm the target environment first. diff --git a/antigravity-awesome-skills/skills/setup-help/SKILL.md b/antigravity-awesome-skills/skills/setup-help/SKILL.md new file mode 100644 index 00000000..5f9a5e80 --- /dev/null +++ b/antigravity-awesome-skills/skills/setup-help/SKILL.md @@ -0,0 +1,50 @@ +--- +name: setup-help +description: "Walk a user through setup or installation one step at a time with the remaining steps visible." +category: productivity +risk: safe +source: community +source_repo: davidondrej/skills +source_type: community +date_added: "2026-07-07" +author: davidondrej +tags: [setup, onboarding, installation] +tools: [claude, codex] +license: "MIT" +license_source: "https://github.com/davidondrej/skills/blob/main/LICENSE" +disable-model-invocation: true +--- + +# setup-help + +## When to Use + +- Use when the user asks to set up, install, configure, or get something working step by step. +- Use when the setup has multiple steps and benefits from one-at-a-time guidance. + +Guide the user through any setup, one step at a time, in plain English. + +## Response format (every single response) + +1. **Current step** — ONE atomic action. A single click, field, or command — not a checklist. 1–2 lines max. If it needs sub-steps, it's too big: split it and push the rest into "Still remaining". Plain English. +2. A `----` divider. +3. **Still remaining** — a numbered list of the setup steps left after this one. Max 8 items, ever. + +Repeat this format for every response until setup is done. + +## Rules + +- Before the first step, build a complete canonical checklist from the user's outline, repo/docs, current screen, and any discovered prerequisites. +- The **Still remaining** list must never exceed 8 items — more is overwhelming. Track ALL unfinished checklist items internally; if more than 8 remain, show the nearest steps individually and merge the later ones into broader phase-level items so the list stays at 8 or fewer. Never silently drop a required step from internal tracking. +- If a new required step is discovered mid-setup, add it to **Still remaining** immediately in the correct order. +- Before every response, audit the current step plus **Still remaining** against the canonical checklist. If any unfinished step is missing, fix the list before replying. +- Only give instructions for the current step. Do not jump ahead. +- Keep it concise. Short sentences. No filler. +- After the user finishes a step, move the next "remaining" item up to "Current step". +- Update the "Still remaining" list each time as steps get done. +- When nothing remains, say setup is complete instead of showing the list. + +## Limitations + +- Adapted from `davidondrej/skills`; verify local paths, tools, credentials, and agent features before acting. +- For commands, remote access, scheduling, browser automation, or file-changing workflows, get explicit user approval and confirm the target environment first. diff --git a/antigravity-awesome-skills/skills/short/SKILL.md b/antigravity-awesome-skills/skills/short/SKILL.md new file mode 100644 index 00000000..292afa11 --- /dev/null +++ b/antigravity-awesome-skills/skills/short/SKILL.md @@ -0,0 +1,28 @@ +--- +name: short +description: "Rewrite the previous response more briefly while preserving the substance." +category: writing +risk: safe +source: community +source_repo: davidondrej/skills +source_type: community +date_added: "2026-07-07" +author: davidondrej +tags: [writing, editing, concise] +tools: [claude, codex] +license: "MIT" +license_source: "https://github.com/davidondrej/skills/blob/main/LICENSE" +disable-model-invocation: true +--- + +rewrite your last response to be simpler & shorter. do not do anything else. + +## When to Use + +- Use when the user asks for a shorter, simpler, or TLDR version of the previous response. +- Use when the current answer should be compressed without changing the substance. + +## Limitations + +- Adapted from `davidondrej/skills`; verify local paths, tools, credentials, and agent features before acting. +- For commands, remote access, scheduling, browser automation, or file-changing workflows, get explicit user approval and confirm the target environment first. diff --git a/antigravity-awesome-skills/skills/taisly-social-media-posting/SKILL.md b/antigravity-awesome-skills/skills/taisly-social-media-posting/SKILL.md new file mode 100644 index 00000000..56e02c86 --- /dev/null +++ b/antigravity-awesome-skills/skills/taisly-social-media-posting/SKILL.md @@ -0,0 +1,79 @@ +--- +name: taisly-social-media-posting +description: "Use Taisly Agent Kit to prepare and publish approved short-form video posts across TikTok, Instagram Reels, YouTube Shorts, X, and Facebook." +category: marketing +risk: critical +source: community +source_repo: taisly/agent +source_type: community +date_added: "2026-07-07" +author: taisly +tags: [social-media, video, publishing, mcp, cli, sdk, tiktok, instagram, youtube-shorts, x, facebook] +tools: [codex, claude] +license: "MIT" +license_source: "https://github.com/taisly/agent/blob/main/LICENSE" +--- + +# Taisly Social Media Posting + +## Overview + +Taisly Agent Kit provides an MCP server, CLI, SDK, and agent docs for publishing +approved short-form videos to TikTok, Instagram Reels, YouTube Shorts, X, and +Facebook. Use this skill to plan a posting workflow around Taisly, verify that +the user has the required account access, and keep publishing actions behind an +explicit confirmation gate. + +## When to Use + +- Use when the user wants an agent-assisted workflow for publishing short-form + videos with Taisly. +- Use when the user mentions `taisly/agent`, the Taisly MCP server, Taisly CLI, + or the Taisly SDK. +- Use when coordinating final approval, caption metadata, target platforms, and + posting status for social video distribution. + +## Workflow + +1. Confirm the exact target platforms and video asset paths or URLs. +2. Confirm that the user has already connected the relevant social accounts in + Taisly or has provided the intended MCP/CLI setup path. +3. Draft or review captions, hashtags, titles, descriptions, and platform + metadata before any publishing command is run. +4. Present a final posting summary with platforms, media, captions, visibility, + and timing. +5. Wait for explicit user approval before invoking any Taisly command, MCP tool, + SDK call, or other state-changing publishing action. + +## Examples + +```text +Use Taisly to prepare this product demo for TikTok, Reels, Shorts, X, and Facebook. +Review the caption and metadata first; do not publish until I approve. +``` + +```text +Set up a Taisly MCP publishing workflow for approved video assets in ./campaign. +``` + +## Safety Notes + +- Treat publish, schedule, delete, account-linking, and metadata update actions + as state-changing operations requiring explicit user approval. +- Never request, print, or store platform passwords, OAuth secrets, API keys, or + session tokens. Use the user's existing Taisly/MCP/CLI authentication flow. +- If the requested action could violate platform policies, brand review, legal + constraints, or creator permissions, pause and ask for confirmation. + +## Limitations + +- Platform availability, media requirements, and API behavior depend on the + upstream Taisly Agent Kit and connected platform accounts. +- This skill does not replace human review for legal, brand, copyright, or + platform-compliance decisions. +- Verify the current Taisly setup instructions from `taisly/agent` before + installing or running tools in a new environment. + +## Source + +- GitHub: [taisly/agent](https://github.com/taisly/agent) diff --git a/antigravity-awesome-skills/skills/vps-server-management/SKILL.md b/antigravity-awesome-skills/skills/vps-server-management/SKILL.md new file mode 100644 index 00000000..f44a9045 --- /dev/null +++ b/antigravity-awesome-skills/skills/vps-server-management/SKILL.md @@ -0,0 +1,72 @@ +--- +name: vps-server-management +description: "Manage authorized VPS hosts and server-side agents through cautious SSH and operations workflows." +category: operations +risk: critical +source: community +source_repo: davidondrej/skills +source_type: community +date_added: "2026-07-07" +author: davidondrej +tags: [vps, ssh, server-management] +tools: [claude, codex] +license: "MIT" +license_source: "https://github.com/davidondrej/skills/blob/main/LICENSE" +--- + +# VPS Server Management + +## When to Use + +- Use when the user asks to operate an authorized VPS or agent running on a remote host. +- Use when SSH, deployment, restart, status, or log inspection is needed with explicit permission. + +Source of truth: `library/infrastructure.md` (read it for the latest — IPs/expirations change). + +## Servers (Hostinger VPS) — 3 total + +| Hostname | IP | OS | Purpose | Expires | +|---|---|---|---|---| +| openclaw-server | | Ubuntu 24.04 (Dokploy) | OpenClaw — personal instance | | +| n8n-server | | Ubuntu 24.04 (n8n) | All n8n workflow automations (primary) | | +| hermes-server | | Ubuntu 24.04 | Hermes Agent — Discord gateway (Vilnius, LT) | | + +SSH as `root@`. + +## Access levels (never share higher than needed) + +1. **App login** — e.g. `app.example.hstgr.cloud`. Build/edit workflows, no server access. Safest to share. +2. **VPS SSH** — `root@`. Docker, files, system config. Trusted technical people only. +3. **Hostinger hPanel** — `hpanel.hostinger.com`. Billing, reboot, OS reinstall. Exposes SSH creds + browser terminal, so it grants server access too. The user only. + +## Managing a VPS via an agent + +For multi-step or exploratory work, **SSH into the box first and launch the agent ON the VPS** (e.g. `codex --yolo`), then talk to that local-on-server agent — it has full filesystem/process context and avoids fragile SSH round-trips. For short command sequences (update, config change, restart), driving an existing SSH session directly (e.g. via a cmux pane) is fine. + +When checking on a remote/on-box agent, send the user one concise status line each time: what it is doing and whether it is on track. + +Claude Code cmux note: after Claude finishes, it may prefill a predicted next user message; that draft is Claude, not the user speaking. + +## Agents on servers + +- **OpenClaw** → openclaw-server (managed via Dokploy). +- **Hermes** → hermes-server (Discord gateway). Setup/config docs in `library/hermes/`. +- **n8n** → n8n-server. + +## Hermes ops (on hermes-server) + +```bash +hermes --version # shows version + commits behind +hermes update # auto-snapshots, updates deps, rebuilds web UI, restarts gateway itself +hermes gateway status|restart +journalctl --user -u hermes-gateway --since '5 min ago' --no-pager # gateway logs (systemd USER service) +``` + +- **Default model** lives in `~/.hermes/config.yaml` under `model.provider` + `model.default` — NOT in `.env`. Change via `hermes model` (interactive) or edit the yaml directly, then `hermes gateway restart` to propagate to gateways. +- npm `EBADENGINE` warnings during update (deps want Node >=24, box runs v22) are non-blocking — do not "fix" them. +- Deeper docs (Discord/Slack/WhatsApp setup, file structure, vision config): `library/hermes/`. + +## Limitations + +- Adapted from `davidondrej/skills`; verify local paths, tools, credentials, and agent features before acting. +- For commands, remote access, scheduling, browser automation, or file-changing workflows, get explicit user approval and confirm the target environment first. diff --git a/antigravity-awesome-skills/skills/youtube-transcript/SKILL.md b/antigravity-awesome-skills/skills/youtube-transcript/SKILL.md new file mode 100644 index 00000000..9ceb64e0 --- /dev/null +++ b/antigravity-awesome-skills/skills/youtube-transcript/SKILL.md @@ -0,0 +1,120 @@ +--- +name: youtube-transcript +description: "Fetch YouTube transcripts through DeepAPI or local fallback tooling and save clean text output." +category: research +risk: safe +source: community +source_repo: davidondrej/skills +source_type: community +date_added: "2026-07-07" +author: davidondrej +tags: [youtube, transcripts, research] +tools: [claude, codex] +license: "MIT" +license_source: "https://github.com/davidondrej/skills/blob/main/LICENSE" +--- + +# YouTube Transcript (via DeepAPI, yt-dlp fallback) + +## When to Use + +- Use when the user asks for a YouTube transcript, captions, subtitles, or spoken-content extraction. +- Use when DeepAPI or a local fallback can fetch the transcript safely. + +Fetch a YouTube video's transcript and save a clean raw `.txt` file. Primary path is DeepAPI `POST /v1/scrape/youtube/transcript`. It runs server-side, so it avoids the local-IP bot flagging that plagues yt-dlp. + +## Save location +- If the user is in a real project/working dir → save there. +- Otherwise (no dir given, or cwd makes no sense) → save to `~/Downloads`. +- **Always name the file `Channel_Title` with spaces replaced by `_`** (e.g. `David_Ondrej_title_of_video.txt`). If metadata is unavailable, fall back to the video ID. + +## Primary path — DeepAPI + +`DEEPAPI_API_KEY` must already be present in the environment. Do not read shell +startup files or print secrets: + +```bash +test -n "$DEEPAPI_API_KEY" || { echo "DEEPAPI_API_KEY is not set"; exit 1; } +BASE=${DEEPAPI_API_BASE_URL:-https://deepapi.co} +``` + +Run the scrape (keep the Idempotency-Key; retries must reuse the SAME one): + +```bash +IDK=$(uuidgen) +curl -s --max-time 120 "$BASE/v1/scrape/youtube/transcript" \ + -H "Authorization: Bearer $DEEPAPI_API_KEY" \ + -H "Content-Type: application/json" \ + -H "Idempotency-Key: $IDK" \ + -d '{"url": "VIDEO_URL", "maxCostUsd": "0.05", "waitForFinishSecs": 60}' \ + > /tmp/yt_transcript.json +``` + +- Non-English videos: add `"language": "de"` (etc.) to the body. +- `status: running` → wait `next.afterSecs`, then `curl "$BASE$(jq -r '.next.path' /tmp/yt_transcript.json)" -H "Authorization: Bearer $KEY"` until `succeeded` or `failed`. + +Extract the text and save it: + +```bash +jq -r '.status' /tmp/yt_transcript.json # succeeded | running | failed +jq -r '.output[0].text' /tmp/yt_transcript.json > "$OUT/$NAME.txt" +jq -r '.debitMicrousd' /tmp/yt_transcript.json # cost (50000 = $0.05) +``` + +`.output[0].segments` also has timed segments (`startSecs`, `durationSecs`, `text`) if the user wants timestamps. Empty `output` = video has no captions; report it, don't retry. + +For the `Channel_Title` filename, get metadata with a quick `yt-dlp --print "%(channel)s|%(title)s" --skip-download "URL"`; if that fails, use the video ID. + +## When to fall back to yt-dlp + +- `DEEPAPI_API_KEY` missing from the environment. +- HTTP 402 `insufficient_credits` (tell the user to top up at deepapi.co/credits first; fall back only if they're unavailable). +- DeepAPI request `failed` twice. + +Tell the user whenever you fall back — a fallback means the product missed a real use case. + +## Fallback path — yt-dlp (local) + +```bash +OUT="$(pwd)" # or ~/Downloads if cwd makes no sense +META=$(yt-dlp --print "%(channel)s|%(title)s" --skip-download "URL") +NAME=$(echo "$META" | tr '| ' '__' | tr -cd '[:alnum:]_.-') # "Channel_Title", spaces -> _, strip unsafe chars +yt-dlp --skip-download --write-subs --write-auto-subs \ + --sub-langs "en.*" --sub-format json3 \ + -o "$OUT/$NAME.%(ext)s" "URL" +``` + +- Fall back `channel` → `uploader` → `uploader_id` if `channel` is null. +- `--skip-download` = captions only. `--write-subs` + `--write-auto-subs` = manual first, auto as fallback. +- **Always use `json3`, never VTT/SRT** — auto VTT repeats every line twice (rolling captions). + +Flatten json3 → raw text: + +```bash +python3 - "$OUT" <<'PY' +import json, html, re, glob, sys, pathlib +f = glob.glob(sys.argv[1] + "/*.json3") +if not f: sys.exit("no json3 file") +data = json.load(open(f[0], encoding="utf-8")) +parts = ["".join(s.get("utf8","") for s in e.get("segs") or []) for e in data.get("events", [])] +txt = re.sub(r"\s+", " ", html.unescape(" ".join(p.strip() for p in parts if p.strip()))).strip() +out = pathlib.Path(f[0]).with_suffix(".txt") +out.write_text(txt, encoding="utf-8"); print(out) +PY +``` + +### yt-dlp failure handling +- Non-English / unknown language: run `yt-dlp --list-subs "URL"` first, then set `--sub-langs`. +- Newer yt-dlp may need `deno` on PATH for YouTube extraction. +- On first failure: run `yt-dlp -U` once, retry once, then stop. +- **429 / "Sign in to confirm you're not a bot"** = IP flagged. STOP — do NOT retry in a loop (makes it worse). +- Never fall back to downloading audio for Whisper unless the user explicitly asks. + +## Output + +Report the saved path; print the text if short. If DeepAPI was used, also report the cost in dollars. + +## Limitations + +- Adapted from `davidondrej/skills`; verify local paths, tools, credentials, and agent features before acting. +- For commands, remote access, scheduling, browser automation, or file-changing workflows, get explicit user approval and confirm the target environment first. diff --git a/antigravity-awesome-skills/skills_index.json b/antigravity-awesome-skills/skills_index.json index 79ae90bc..7575ae3d 100644 --- a/antigravity-awesome-skills/skills_index.json +++ b/antigravity-awesome-skills/skills_index.json @@ -861,6 +861,28 @@ "reasons": [] } }, + { + "id": "agent-self-scheduling", + "path": "skills/agent-self-scheduling", + "category": "agent-orchestration", + "name": "agent-self-scheduling", + "description": "Schedule AI agent runs with cron, loops, or external clocks while avoiding unsafe tight autonomous timers.", + "risk": "critical", + "source": "community", + "date_added": "2026-07-07", + "plugin": { + "targets": { + "codex": "supported", + "claude": "supported" + }, + "setup": { + "type": "none", + "summary": "", + "docs": null + }, + "reasons": [] + } + }, { "id": "agent-squad", "path": "skills/agent-squad", @@ -2037,6 +2059,28 @@ "reasons": [] } }, + { + "id": "anti-sleep", + "path": "skills/anti-sleep", + "category": "operations", + "name": "anti-sleep", + "description": "Keep a Mac awake with caffeinate during long builds, downloads, or supervised automation runs.", + "risk": "critical", + "source": "community", + "date_added": "2026-07-07", + "plugin": { + "targets": { + "codex": "supported", + "claude": "supported" + }, + "setup": { + "type": "none", + "summary": "", + "docs": null + }, + "reasons": [] + } + }, { "id": "anti-sycophancy", "path": "skills/anti-sycophancy", @@ -7470,6 +7514,28 @@ "reasons": [] } }, + { + "id": "brain-to-docs", + "path": "skills/brain-to-docs", + "category": "productivity", + "name": "brain-to-docs", + "description": "Interview the user to turn project vision and decisions into README and ADR documentation.", + "risk": "critical", + "source": "community", + "date_added": "2026-07-07", + "plugin": { + "targets": { + "codex": "supported", + "claude": "supported" + }, + "setup": { + "type": "none", + "summary": "", + "docs": null + }, + "reasons": [] + } + }, { "id": "brainstorming", "path": "skills/brainstorming", @@ -7844,6 +7910,28 @@ "reasons": [] } }, + { + "id": "browser-harness", + "path": "skills/browser-harness", + "category": "browser-automation", + "name": "browser-harness", + "description": "Drive an existing browser through CDP for authenticated, visual, or interactive web automation.", + "risk": "critical", + "source": "community", + "date_added": "2026-07-07", + "plugin": { + "targets": { + "codex": "supported", + "claude": "supported" + }, + "setup": { + "type": "none", + "summary": "", + "docs": null + }, + "reasons": [] + } + }, { "id": "browser-testing-with-devtools", "path": "skills/browser-testing-with-devtools", @@ -9524,6 +9612,28 @@ "reasons": [] } }, + { + "id": "cmux", + "path": "skills/cmux", + "category": "development", + "name": "cmux", + "description": "Control cmux workspaces, panes, surfaces, and agent sessions safely from macOS terminal workflows.", + "risk": "critical", + "source": "community", + "date_added": "2026-07-07", + "plugin": { + "targets": { + "codex": "supported", + "claude": "supported" + }, + "setup": { + "type": "none", + "summary": "", + "docs": null + }, + "reasons": [] + } + }, { "id": "co-marketing", "path": "skills/co-marketing", @@ -10120,6 +10230,30 @@ "reasons": [] } }, + { + "id": "codex-subagent", + "path": "skills/codex-subagent", + "category": "agent-orchestration", + "name": "codex-subagent", + "description": "Launch Codex CLI as an isolated subagent for bounded coding, review, or verification tasks.", + "risk": "critical", + "source": "community", + "date_added": "2026-07-07", + "plugin": { + "targets": { + "codex": "blocked", + "claude": "blocked" + }, + "setup": { + "type": "none", + "summary": "", + "docs": null + }, + "reasons": [ + "target_specific_home_path" + ] + } + }, { "id": "cold-email", "path": "skills/cold-email", @@ -11994,6 +12128,28 @@ "reasons": [] } }, + { + "id": "cyber-audit", + "path": "skills/cyber-audit", + "category": "security", + "name": "cyber-audit", + "description": "Run read-only exposure checks for security advisories and write a structured local audit report.", + "risk": "safe", + "source": "community", + "date_added": "2026-07-07", + "plugin": { + "targets": { + "codex": "supported", + "claude": "supported" + }, + "setup": { + "type": "none", + "summary": "", + "docs": null + }, + "reasons": [] + } + }, { "id": "cyber-y2k", "path": "skills/design-it/cyber-y2k", @@ -12940,6 +13096,28 @@ "reasons": [] } }, + { + "id": "deepapi", + "path": "skills/deepapi", + "category": "research", + "name": "deepapi", + "description": "Use DeepAPI for supported scraping, research, and email workflows with explicit credentials and approval.", + "risk": "critical", + "source": "community", + "date_added": "2026-07-07", + "plugin": { + "targets": { + "codex": "supported", + "claude": "supported" + }, + "setup": { + "type": "none", + "summary": "", + "docs": null + }, + "reasons": [] + } + }, { "id": "defi-protocol-templates", "path": "skills/defi-protocol-templates", @@ -12984,6 +13162,30 @@ "reasons": [] } }, + { + "id": "delegating-to-agents", + "path": "skills/delegating-to-agents", + "category": "agent-orchestration", + "name": "delegating-to-agents", + "description": "Delegate bounded work to other AI agents while preserving context, ownership, and progress checks.", + "risk": "critical", + "source": "community", + "date_added": "2026-07-07", + "plugin": { + "targets": { + "codex": "blocked", + "claude": "blocked" + }, + "setup": { + "type": "none", + "summary": "", + "docs": null + }, + "reasons": [ + "target_specific_home_path" + ] + } + }, { "id": "dep", "path": "skills/agent-squad/dep", @@ -13916,6 +14118,30 @@ "reasons": [] } }, + { + "id": "distribute-skill-to-all-agents", + "path": "skills/distribute-skill-to-all-agents", + "category": "development", + "name": "distribute-skill-to-all-agents", + "description": "Distribute a skill across configured agent skill folders while respecting local symlink layouts.", + "risk": "critical", + "source": "community", + "date_added": "2026-07-07", + "plugin": { + "targets": { + "codex": "blocked", + "claude": "supported" + }, + "setup": { + "type": "none", + "summary": "", + "docs": null + }, + "reasons": [ + "target_specific_home_path" + ] + } + }, { "id": "distributed-debugging-debug-trace", "path": "skills/distributed-debugging-debug-trace", @@ -14712,6 +14938,28 @@ "reasons": [] } }, + { + "id": "effective-agent-skills", + "path": "skills/effective-agent-skills", + "category": "development", + "name": "effective-agent-skills", + "description": "Author and review high-quality agent skills with triggers, progressive disclosure, and safety notes.", + "risk": "safe", + "source": "community", + "date_added": "2026-07-07", + "plugin": { + "targets": { + "codex": "supported", + "claude": "supported" + }, + "setup": { + "type": "none", + "summary": "", + "docs": null + }, + "reasons": [] + } + }, { "id": "efficient-web-research", "path": "skills/efficient-web-research", @@ -15770,6 +16018,28 @@ "reasons": [] } }, + { + "id": "fable-safe-prompt", + "path": "skills/fable-safe-prompt", + "category": "agent-behavior", + "name": "fable-safe-prompt", + "description": "Rewrite allowed prompts to reduce false-positive safety triggers without bypassing policy or changing intent.", + "risk": "safe", + "source": "community", + "date_added": "2026-07-07", + "plugin": { + "targets": { + "codex": "supported", + "claude": "supported" + }, + "setup": { + "type": "none", + "summary": "", + "docs": null + }, + "reasons": [] + } + }, { "id": "faf-context", "path": "skills/faf-context", @@ -16628,6 +16898,28 @@ "reasons": [] } }, + { + "id": "folder-specific-claude-and-agents-md", + "path": "skills/folder-specific-claude-and-agents-md", + "category": "development", + "name": "folder-specific-claude-and-agents-md", + "description": "Create folder-scoped CLAUDE.md and AGENTS.md guidance for future agents working in that area.", + "risk": "critical", + "source": "community", + "date_added": "2026-07-07", + "plugin": { + "targets": { + "codex": "supported", + "claude": "supported" + }, + "setup": { + "type": "none", + "summary": "", + "docs": null + }, + "reasons": [] + } + }, { "id": "food-database-query", "path": "skills/food-database-query", @@ -18634,6 +18926,28 @@ "reasons": [] } }, + { + "id": "goal-loop", + "path": "skills/goal-loop", + "category": "agent-orchestration", + "name": "goal-loop", + "description": "Draft and explain persistent goal-loop prompts for long-running agent work with clear stop conditions.", + "risk": "safe", + "source": "community", + "date_added": "2026-07-07", + "plugin": { + "targets": { + "codex": "supported", + "claude": "supported" + }, + "setup": { + "type": "none", + "summary": "", + "docs": null + }, + "reasons": [] + } + }, { "id": "godot-4-migration", "path": "skills/godot-4-migration", @@ -21190,6 +21504,28 @@ "reasons": [] } }, + { + "id": "interview-style-doc-building", + "path": "skills/interview-style-doc-building", + "category": "productivity", + "name": "interview-style-doc-building", + "description": "Build structured strategy documents by asking one question at a time and patching the file.", + "risk": "critical", + "source": "community", + "date_added": "2026-07-07", + "plugin": { + "targets": { + "codex": "supported", + "claude": "supported" + }, + "setup": { + "type": "none", + "summary": "", + "docs": null + }, + "reasons": [] + } + }, { "id": "invariant-guard", "path": "skills/invariant-guard", @@ -22780,6 +23116,28 @@ ] } }, + { + "id": "linkedin-post-writer", + "path": "skills/linkedin-post-writer", + "category": "marketing", + "name": "linkedin-post-writer", + "description": "Draft LinkedIn posts from 16 tested hook formulas mapped to engagement goals (comments, reposts, likes, saves), with 2026 algorithm formatting rules and an AI-tell scrub pass before publishing.", + "risk": "none", + "source": "community", + "date_added": "2026-07-06", + "plugin": { + "targets": { + "codex": "supported", + "claude": "supported" + }, + "setup": { + "type": "none", + "summary": "", + "docs": null + }, + "reasons": [] + } + }, { "id": "linkedin-profile-optimizer", "path": "skills/linkedin-profile-optimizer", @@ -24264,6 +24622,28 @@ ] } }, + { + "id": "markdown-rendering", + "path": "skills/markdown-rendering", + "category": "productivity", + "name": "markdown-rendering", + "description": "Open Markdown reliably in cmux panes and recover from blank rendered surfaces.", + "risk": "safe", + "source": "community", + "date_added": "2026-07-07", + "plugin": { + "targets": { + "codex": "supported", + "claude": "supported" + }, + "setup": { + "type": "none", + "summary": "", + "docs": null + }, + "reasons": [] + } + }, { "id": "market-sizing-analysis", "path": "skills/market-sizing-analysis", @@ -28633,6 +29013,50 @@ "reasons": [] } }, + { + "id": "pi-custom-model", + "path": "skills/pi-custom-model", + "category": "operations", + "name": "pi-custom-model", + "description": "Register custom Pi Agent model slugs so saved OpenRouter variants resolve correctly.", + "risk": "critical", + "source": "community", + "date_added": "2026-07-07", + "plugin": { + "targets": { + "codex": "supported", + "claude": "supported" + }, + "setup": { + "type": "none", + "summary": "", + "docs": null + }, + "reasons": [] + } + }, + { + "id": "pi-web-search", + "path": "skills/pi-web-search", + "category": "research", + "name": "pi-web-search", + "description": "Give Pi Agents a safe web-search and fetch workflow using the installed pi-web-access package.", + "risk": "safe", + "source": "community", + "date_added": "2026-07-07", + "plugin": { + "targets": { + "codex": "supported", + "claude": "supported" + }, + "setup": { + "type": "none", + "summary": "", + "docs": null + }, + "reasons": [] + } + }, { "id": "pipecat-friday-agent", "path": "skills/pipecat-friday-agent", @@ -30133,6 +30557,28 @@ "reasons": [] } }, + { + "id": "push-skill-to-github", + "path": "skills/push-skill-to-github", + "category": "development", + "name": "push-skill-to-github", + "description": "Commit and push skill changes to the configured skills repository after review and validation.", + "risk": "critical", + "source": "community", + "date_added": "2026-07-07", + "plugin": { + "targets": { + "codex": "supported", + "claude": "supported" + }, + "setup": { + "type": "none", + "summary": "", + "docs": null + }, + "reasons": [] + } + }, { "id": "puzzle-activity-planner", "path": "skills/puzzle-activity-planner", @@ -30947,6 +31393,28 @@ "reasons": [] } }, + { + "id": "read-all-adrs", + "path": "skills/read-all-adrs", + "category": "productivity", + "name": "read-all-adrs", + "description": "Read every ADR in a project before summarizing architectural context or decisions.", + "risk": "safe", + "source": "community", + "date_added": "2026-07-07", + "plugin": { + "targets": { + "codex": "supported", + "claude": "supported" + }, + "setup": { + "type": "none", + "summary": "", + "docs": null + }, + "reasons": [] + } + }, { "id": "readme", "path": "skills/readme", @@ -31365,6 +31833,28 @@ "reasons": [] } }, + { + "id": "research-prompt", + "path": "skills/research-prompt", + "category": "research", + "name": "research-prompt", + "description": "Turn vague research needs into one precise deep-research prompt with context and output criteria.", + "risk": "safe", + "source": "community", + "date_added": "2026-07-07", + "plugin": { + "targets": { + "codex": "supported", + "claude": "supported" + }, + "setup": { + "type": "none", + "summary": "", + "docs": null + }, + "reasons": [] + } + }, { "id": "resolving-merge-conflicts", "path": "skills/resolving-merge-conflicts", @@ -31849,6 +32339,28 @@ "reasons": [] } }, + { + "id": "run-deep-swe", + "path": "skills/run-deep-swe", + "category": "agent-evaluation", + "name": "run-deep-swe", + "description": "Run reproducible DeepSWE coding-agent benchmark evaluations through OpenRouter and mini-swe-agent.", + "risk": "critical", + "source": "community", + "date_added": "2026-07-07", + "plugin": { + "targets": { + "codex": "supported", + "claude": "supported" + }, + "setup": { + "type": "none", + "summary": "", + "docs": null + }, + "reasons": [] + } + }, { "id": "runapi-cli", "path": "skills/runapi-cli", @@ -34015,6 +34527,28 @@ "reasons": [] } }, + { + "id": "setup-help", + "path": "skills/setup-help", + "category": "productivity", + "name": "setup-help", + "description": "Walk a user through setup or installation one step at a time with the remaining steps visible.", + "risk": "safe", + "source": "community", + "date_added": "2026-07-07", + "plugin": { + "targets": { + "codex": "supported", + "claude": "supported" + }, + "setup": { + "type": "none", + "summary": "", + "docs": null + }, + "reasons": [] + } + }, { "id": "setup-matt-pocock-skills", "path": "skills/setup-matt-pocock-skills", @@ -34279,6 +34813,28 @@ "reasons": [] } }, + { + "id": "short", + "path": "skills/short", + "category": "writing", + "name": "short", + "description": "Rewrite the previous response more briefly while preserving the substance.", + "risk": "safe", + "source": "community", + "date_added": "2026-07-07", + "plugin": { + "targets": { + "codex": "supported", + "claude": "supported" + }, + "setup": { + "type": "none", + "summary": "", + "docs": null + }, + "reasons": [] + } + }, { "id": "signup-flow-cro", "path": "skills/signup-flow-cro", @@ -36519,6 +37075,28 @@ "reasons": [] } }, + { + "id": "taisly-social-media-posting", + "path": "skills/taisly-social-media-posting", + "category": "marketing", + "name": "taisly-social-media-posting", + "description": "Use Taisly Agent Kit to prepare and publish approved short-form video posts across TikTok, Instagram Reels, YouTube Shorts, X, and Facebook.", + "risk": "critical", + "source": "community", + "date_added": "2026-07-07", + "plugin": { + "targets": { + "codex": "supported", + "claude": "supported" + }, + "setup": { + "type": "none", + "summary": "", + "docs": null + }, + "reasons": [] + } + }, { "id": "tanstack-query-expert", "path": "skills/tanstack-query-expert", @@ -40137,6 +40715,28 @@ "reasons": [] } }, + { + "id": "vps-server-management", + "path": "skills/vps-server-management", + "category": "operations", + "name": "vps-server-management", + "description": "Manage authorized VPS hosts and server-side agents through cautious SSH and operations workflows.", + "risk": "critical", + "source": "community", + "date_added": "2026-07-07", + "plugin": { + "targets": { + "codex": "supported", + "claude": "supported" + }, + "setup": { + "type": "none", + "summary": "", + "docs": null + }, + "reasons": [] + } + }, { "id": "vr-ar", "path": "skills/game-development/vr-ar", @@ -41789,6 +42389,28 @@ "reasons": [] } }, + { + "id": "youtube-transcript", + "path": "skills/youtube-transcript", + "category": "research", + "name": "youtube-transcript", + "description": "Fetch YouTube transcripts through DeepAPI or local fallback tooling and save clean text output.", + "risk": "safe", + "source": "community", + "date_added": "2026-07-07", + "plugin": { + "targets": { + "codex": "supported", + "claude": "supported" + }, + "setup": { + "type": "none", + "summary": "", + "docs": null + }, + "reasons": [] + } + }, { "id": "zapier-make-patterns", "path": "skills/zapier-make-patterns",