polish-repo
Polish an open-source repository with branding, community files, README overhaul, OG card, usage skill, PR checks, and publishing setup. Designed as a reusable template for Continue repos.
What this skill does
# Polish Repository
You are polishing an open-source repository to production quality. Follow each step in order, adapting to the project's language, ecosystem, and existing state.
## Step 1: Gather context
Before making any changes, understand what you're working with:
1. **Read the package manifest** — `package.json`, `go.mod`, `Cargo.toml`, `pyproject.toml`, etc. Note the project name, description, license field, and any existing scripts.
2. **Check for CI workflows** — look in `.github/workflows/` for existing build, test, and release pipelines.
3. **Check for branding assets** — look for banner images, logos, or OG cards in `.github/assets/`, `public/`, or the repo root. If none exist, download the shared Continue banner from `https://raw.githubusercontent.com/continuedev/continue/main/media/github-readme.png` and save it as `.github/assets/continue-banner.png`.
4. **Determine ecosystem** — npm/Node.js, Go, Rust, Python, etc. This affects publishing setup and contributing instructions.
5. **Read the existing README** — understand what documentation already exists so you preserve and improve it rather than losing content.
6. **Check for existing community files** — `LICENSE`, `CONTRIBUTING.md`, `SECURITY.md`, issue templates, PR templates.
## Step 2: README overhaul
Restructure the README with this template:
```markdown
<p align="center">
<a href="https://continue.dev">
<img src=".github/assets/continue-banner.png" width="800" alt="Continue" />
</a>
</p>
<h1 align="center">{project-name}</h1>
<p align="center">{one-line description}</p>
---
## Why?
[Before/after comparison or 2-3 sentences explaining the problem this solves]
## Table of Contents
[Links to all sections]
## Quick start
[Existing quick start content — preserve and improve]
[... all existing documentation sections ...]
## Contributing
[Link to CONTRIBUTING.md]
## License
[Link to LICENSE with copyright line]
---
<p align="center">Built by <a href="https://continue.dev">Continue</a></p>
```
Key principles:
- **No shields.io badges** — keep the header clean
- **Preserve all existing content** — don't lose documentation, just restructure
- **Add a "Why?" section** — show the before/after or explain the value proposition concisely
- **Add TOC** — for any README with more than 5 sections
- **Add Contributing + License sections** at the bottom
## Step 3: Community files
Create these files in `.github/` (skip any that already exist and are adequate):
### LICENSE (repo root)
All Continue repos use the **Apache-2.0** license. Create `LICENSE` at the repo root with the full Apache License 2.0 text and this copyright notice at the end:
```
Copyright (c) 2025 Continue Dev, Inc.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
```
Also ensure the `license` field in the package manifest (`package.json`, `Cargo.toml`, etc.) is set to `Apache-2.0`.
### CONTRIBUTING.md
Include:
- Dev setup instructions (clone, install, build, test)
- Project structure overview
- Conventional Commits convention (`feat:`, `fix:`, `docs:`, etc.)
- PR process
- Link to bug report template
### SECURITY.md
Include:
- Report to **[email protected]**
- 48-hour acknowledgment SLA
- Scope section specific to the project's attack surface (e.g., SSRF for fetch-based tools, injection for template engines)
- Out-of-scope items (upstream dependencies, requires existing access)
### Issue templates (`.github/ISSUE_TEMPLATE/`)
**`bug_report.yml`** — YAML form with:
- Version input
- Environment/framework version input
- Relevant dropdown (project-specific — e.g., detection method for next-geo, platform for CLI tools)
- Description textarea
- Repro steps textarea
- Logs textarea (with `render: shell`)
**`feature_request.yml`** — YAML form with:
- Problem textarea
- Proposed solution textarea
- Alternatives considered textarea
**`config.yml`** — Disable blank issues:
```yaml
blank_issues_enabled: false
```
### PULL_REQUEST_TEMPLATE.md
```markdown
## Description
<!-- What does this PR do? Why? -->
## Type of change
- [ ] Bug fix
- [ ] New feature
- [ ] Documentation
- [ ] Refactor
- [ ] Other (describe below)
## Checklist
- [ ] Tests added/updated
- [ ] Types are correct
- [ ] Commit messages follow Conventional Commits
- [ ] README updated (if applicable)
```
### release.yml
Categorize GitHub release notes:
```yaml
changelog:
categories:
- title: New Features
labels:
- enhancement
- title: Bug Fixes
labels:
- bug
- title: Documentation
labels:
- documentation
- title: Other
labels:
- "*"
```
### What to skip
- **FUNDING.yml** — Continue is VC-backed, not seeking sponsorships
- **CODE_OF_CONDUCT.md** — Only add if the project has an active community with multiple external contributors
## Step 4: OG card
Create `.github/assets/og-card.html` — a self-contained 1280x640 HTML file that can be screenshotted for the GitHub social preview.
Copy the watercolor background image from another Continue repo's `.github/assets/og-bg.png` (e.g., `next-geo`) into `.github/assets/` to use as the ambient background.
**Design — dark theme with watercolor background and Continue logo:**
- **Background:** Dark navy (`#1a1a2e`) as the base color
- **Watercolor image:** Full-bleed `og-bg.png` behind everything via `background: url('./og-bg.png') center/cover no-repeat`
- **Gradient overlay:** Left-to-right gradient darkening the left side for text readability: `rgba(10, 10, 30, 0.7)` on the left fading to `rgba(10, 10, 30, 0.15)` on the right
- **Typography:** IBM Plex Sans (light 300 weight for the title, regular 400 for tagline) + IBM Plex Mono (400 for labels and the install command). Load from Google Fonts.
- **Title:** Large (~80px), light weight, tight tracking (-2px), color `rgba(255, 255, 255, 0.95)`
- **Tagline:** Below the title, ~24px, `rgba(255, 255, 255, 0.6)`
- **Label:** Small monospace "CONTINUE" label above the title, uppercase, wide tracking (0.2em), `rgba(255, 255, 255, 0.5)`
- **Install pill:** Monospace install command (e.g., `npm install {package}`) in a pill with `rgba(255, 255, 255, 0.08)` background and `rgba(255, 255, 255, 0.15)` border
- **Continue logo:** Large (~520px) Continue SVG icon on the right side, vertically centered, white fill — serves as the primary visual element
- **Layout:** Text content on the left (padded 100px), logo on the right
- **Overall feel:** Dark, atmospheric, professional — the watercolor background adds visual richness while the gradient keeps text readable
Reference implementation: `next-geo/.github/assets/og-card.html`
After creating the HTML, also **pre-crop** the background image to exactly 1280x640 so headless rendering doesn't depend on `object-fit`:
```bash
sips --resampleWidth 1280 .github/assets/og-bg.png --out /tmp/og-bg-resized.png
sips --cropOffset 0 0 -c 640 1280 /tmp/og-bg-resized.png --out .github/assets/og-bg-card.png
```
Reference `og-bg-card.png` in the HTML `<img>` tag with explicit `width: 1280px; height: 640px` — no `object-fit` needed.
Then generate the screenshot with Puppeteer (not Chrome's `--screenshot` flag, which leaves rendering artifacts):
```bash
npx -y puppeteer browsers install chrome
node -e "
import puppeteer from 'puppeteer';
const browser = await puppeteer.launch({ headless: true });
const page = await browser.newPage();
await page.setViewport({ width: 1280, height: 640, deviceScaleFactor: 1 });
await page.goto('file://$(pwd)/.github/assets/og-card.html', { waitUntil: 'networkidle0' });
await page.screenshot({ path: '/tmp/og-card.png', clip: { x: 0, y: 0, width: 1280, height: 640 } });
await browser.close();
"
sips -s format jpeg -s formatOptions 85 /tmp/og-card.png --out .github/assets/og-card.jpg
```
**Important:** Verify the image visually before committinRelated in General
modeling-omnistudio-epc-catalog
IncludedSalesforce Industries CME EPC product-modeling skill for Product2-based catalog creation. Use when creating EPC products, configuring product attributes, building offer bundles with Product Child Items, or reviewing EPC DataPack JSON metadata for product catalog changes. TRIGGER when: user creates or updates Product2 EPC records, AttributeAssignment payloads, AttributeMetadata/AttributeDefaultValues, Offer bundles, or ProductChildItem relationships. DO NOT TRIGGER when: designing OmniScripts/FlexCards/Integration Procedures (use building-omnistudio-omniscript, building-omnistudio-flexcard, or building-omnistudio-integration-procedure), implementing Apex business logic (use generating-apex), or troubleshooting deployment pipelines (use deploying-metadata).
relationship-science-coach
IncludedUse this skill for direct, practical adult relationship coaching: couples conflict, repair, trust, marriage, dating, flirting, attachment patterns, emotional connection, sex, desire differences, eroticism, kink negotiation, affection, love languages, breakups, and long-term passion. Draw on Gottman, EFT and Hold Me Tight, attachment science, modern sex research, Perel, Nagoski, Kerner, Schnarch, Love and Stosny, and flexible love-language tools. Be concrete and low-hedge. Redirect only for imminent danger, abuse, coercive control, minors, non-consent, self-harm, stalking, or medical/legal/psychiatric decisions.
building-sf-integrations
IncludedSalesforce integration architecture and runtime plumbing with 120-point scoring. Use this skill to set up Named Credentials, External Credentials, External Services, REST/SOAP callout patterns, Platform Events, and Change Data Capture. TRIGGER when: user sets up Named Credentials, External Services, REST/SOAP callouts, Platform Events, CDC, or touches .namedCredential-meta.xml files. DO NOT TRIGGER when: Connected App/OAuth config (use configuring-connected-apps), Apex-only logic (use generating-apex), or data import/export (use handling-sf-data).
venue-templates
IncludedAccess comprehensive LaTeX templates, formatting requirements, and submission guidelines for major scientific publication venues (Nature, Science, PLOS, IEEE, ACM), academic conferences (NeurIPS, ICML, CVPR, CHI), research posters, and grant proposals (NSF, NIH, DOE, DARPA). This skill should be used when preparing manuscripts for journal submission, conference papers, research posters, or grant proposals and need venue-specific formatting requirements and templates.
let-fate-decide
IncludedDraws the 12 Houses of the Zodiac Tarot spread to inject entropy into planning when prompts are vague, ambiguous, or casually delegated. Interprets the spread to guide next steps. Use when the user says 'let fate decide', 'YOLO', 'whatever', 'idk', or other nonchalant phrases, makes Yu-Gi-Oh references, or when you are about to arbitrarily pick between multiple reasonable approaches. Prefer over ask-questions-if-underspecified when the user's tone is casual or playful rather than precision-seeking.
net-ops
IncludedCross-platform network troubleshooting (Windows, macOS, Linux) via local or remote shell. Use for: DNS broken, can't resolve hostnames, nslookup/dig works but apps fail, NRPT, WFP, scutil, /etc/resolver, systemd-resolved, /etc/resolv.conf, NetworkManager, VPN DNS leak residue (ProtonVPN/Mullvad/WireGuard/AnyConnect), AV/firewall blocking DNS or DoH, Tailscale DNS interaction, intermittent connectivity, remote diagnostics over SSH.