From b01212cfd409f39d56782a90c6cec0aafec6fca4 Mon Sep 17 00:00:00 2001 From: Yogesh Rao Date: Mon, 18 May 2026 12:50:48 +0530 Subject: [PATCH] feat: improve api-setup skill score from 39% to 93% MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Hey @angiejones 👋 I ran your skills through `tessl skill review` at work and found some targeted improvements for `api-setup`. Here's the full before/after: | Skill | Before | After | Change | |-------|--------|-------|--------| | api-setup | 39% | 93% | +54% | | beads | 73% | — | — | | code-review | 40% | — | — | | frontend-design | 66% | — | — | | goose-blog-post | 62% | — | — | | rp-why | 33% | — | — | | testing-strategy | 39% | — | — |
What changed in api-setup - Description: Expanded from a vague one-liner to a specific description with concrete actions (scaffold, generate config, set up auth, verify connection) and a Use when... clause with natural trigger terms - Workflow steps: Each step now includes copy-paste-ready commands (./setup.sh, python3 -m json.tool, curl connection test) instead of abstract instructions - Integrated validation: JSON syntax validation is now a gated step before testing the connection, rather than a post-hoc checklist - Config example: Added an inline JSON config example so the agent can see the exact structure without needing to open the template file - Bundle file references: Added explicit links to setup.sh and templates/config.template.json for progressive disclosure - Removed generic troubleshooting: Stripped basic advice that any agent already knows — keeps the skill focused on project-specific guidance - Added tags: rest and configuration for better marketplace discoverability
I also stress-tested your api-setup skill against a few real-world task evals and it held up really well on scaffolding a multi-endpoint REST integration with Bearer token auth. Kudos for that. Honest disclosure — I work at @tesslio where we build tooling around skills like these. Not a pitch — just saw room for improvement and wanted to contribute. Want to self-improve your skills? Just point your agent (Claude Code, Codex, etc.) at this Tessl guide (https://docs.tessl.io/evaluate/optimize-a-skill-using-best-practices) and ask it to optimize your skill. Ping me — @yogesh-tessl — if you hit any snags. --- Submit a Skill Skill Info - Skill name (folder name): api-setup - Short description: Scaffold a new REST API integration by generating a config file, setting up authentication, and verifying the connection - Author / handle: goose (original) / @yogesh-tessl (improvements) - Version: 1.0 Structure Checklist - [x] Skill is in a top-level folder (api-setup/) - [x] The folder contains a SKILL.md file - [x] SKILL.md includes valid YAML frontmatter (name, description, author, version, tags) - [x] Supporting files (scripts/templates) live inside the skill folder Security Acknowledgement - [x] This skill does not contain malicious behavior - [x] This skill does not attempt to exfiltrate secrets, tokens, or credentials - [x] This skill does not contain obfuscated payloads - [x] I understand that all submissions run through automated security scanning - [x] I understand this PR may be rejected if it fails validation or security review Additional Notes This PR only modifies api-setup/SKILL.md — no changes to supporting files (setup.sh, templates/). The diff is intentionally small (77 lines) to make review quick and painless. Thanks in advance 🙏 --- api-setup/SKILL.md | 77 ++++++++++++++++++++++++++++++---------------- 1 file changed, 50 insertions(+), 27 deletions(-) diff --git a/api-setup/SKILL.md b/api-setup/SKILL.md index b66c521..cfc2eaf 100644 --- a/api-setup/SKILL.md +++ b/api-setup/SKILL.md @@ -1,55 +1,78 @@ --- name: api-setup -description: Set up API integration with configuration and helper scripts +description: "Scaffold a new REST API integration by generating a config file, setting up authentication, and verifying the connection. Use when the user asks to connect to an external API, configure API keys, set up API endpoints, or create a new API client integration." author: goose version: "1.0" tags: - api - integration - setup + - rest + - configuration --- # API Setup -This skill helps you set up a new API integration with our standard configuration. +Scaffold and configure a new API integration using the project's standard directory structure and config template. + +## Preconditions + +- The target API provider's documentation is accessible +- An API key or credentials have been obtained from the provider's dashboard ## Steps -1. Run `setup.sh ` to create the integration directory -2. Copy `templates/config.template.json` to your integration directory -3. Update the config with your API credentials -4. Test the connection +1. **Create the integration directory** -## Configuration + ```bash + ./setup.sh + ``` -The config template includes: + This creates `integrations//` and copies `templates/config.template.json` into it as `config.json`. -- `api_key`: Your API key (get from the provider's dashboard) -- `endpoint`: API endpoint URL -- `timeout`: Request timeout in seconds (default: 30) +2. **Configure the integration** -## Verification + Edit `integrations//config.json` with the provider's details: + + ```json + { + "api_key": "sk-live-abc123...", + "endpoint": "https://api.example.com/v1", + "timeout": 30, + "retry_attempts": 3 + } + ``` -After setup, verify: + - `api_key`: The provider's API key — never commit real keys to version control + - `endpoint`: Base URL for the API (check the provider's docs for the correct version path) + - `timeout`: Request timeout in seconds — increase for slow or high-latency APIs + - `retry_attempts`: Automatic retries on transient failures (5xx, timeouts) -- [ ] Config file is valid JSON -- [ ] API key is set and not a placeholder -- [ ] Test connection succeeds +3. **Validate the config** -## Troubleshooting + ```bash + python3 -m json.tool integrations//config.json + ``` -### Connection Timeout + Fix any JSON syntax errors before proceeding. -If you experience connection timeouts: +4. **Test the connection** -1. Check your network connection -2. Verify the endpoint URL is correct -3. Increase the timeout value in config + ```bash + curl -s -o /dev/null -w "%{http_code}" \ + -H "Authorization: Bearer $(jq -r .api_key integrations//config.json)" \ + "$(jq -r .endpoint integrations//config.json)/health" + ``` + + A `200` response confirms the integration is working. A `401`/`403` means the API key is invalid or lacks required permissions. + +## Verification -### Authentication Errors +- [ ] `python3 -m json.tool integrations//config.json` exits cleanly +- [ ] `api_key` is a real key, not the `YOUR_API_KEY_HERE` placeholder +- [ ] Test connection returns HTTP 200 -If you get 401/403 errors: +## Bundle Files -1. Verify your API key is correct -2. Check if the key has the required permissions -3. Ensure the key hasn't expired +- [`setup.sh`](setup.sh) — Creates the integration directory and copies the config template +- [`templates/config.template.json`](templates/config.template.json) — Default config structure with placeholders