Codync
A free, open-source 1:1 alternative to Grok Bot and Muse. Message Claude Code, Codex, Cursor and 40+ coding agents as persistent bots from your iPhone, Mac or Linux desktop. Group chats, threads, appr
Find open issues from active GitHub projects that fit your language, skills and level. Personal recommendations, difficulty ratings, XP for merged pull requests, and a desktop app that takes you from
Developer toolsGitHub @dizziedblissOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
Repository information has not been collected yet.
No updates detected yet. GitHub releases will appear here.
A Platform to make opensource contributions easier and also help developers gain industrial development experience
Taken from the repository README
Loading the full README.
Read the full README ↗Tutorials teach you to code. Nothing teaches you to develop: read a stranger's codebase, find your way round an issue tracker, get a pull request merged by someone who doesn't know you. Meanwhile millions of open issues sit on GitHub waiting for exactly that person.
SkillIssues connects the two. It keeps every open issue of hundreds of thousands of active repositories fresh, works out which ones fit you, helps you set up a workspace, and pays you XP when GitHub says your fix was merged.
good first issue,
difficulty/easy, …). No label means unknown, never easyOn the web: skillissues.dizziedbliss.lol. Browse without an account; sign in with GitHub to save issues, claim them and earn XP.
On the desktop: download from the download page or the latest release. The app asks before it downloads an update, every time.
Run SkillIssues-Installer.exe. It downloads the newest version from this repository's releases,
checks it against the release's SHA-512, and installs it, for you or for everyone on the PC. Run it
again later to update, repair or remove SkillIssues. No internet while installing? The release also
has SkillIssues-Setup-<version>.exe, the full offline installer.
Neither is code-signed yet, so SmartScreen will warn about an unrecognised app. Choose More info → Run anyway.
Open the .dmg (Apple silicon) and drag SkillIssues to Applications.
The app isn't signed, so the first time, right-click it and choose Open. Updates open the release page instead of installing themselves.
chmod +x SkillIssues-*.AppImage
./SkillIssues-*.AppImage
Where your system has no keyring, the app keeps your sign-in in memory only and asks again each launch. It never writes a token to disk unencrypted.
[!WARNING] Side effects may include merged pull requests, maintainers who know your name, and an uncontrollable urge to fix "just one more"
good first issue. If symptoms persist, open a discussion and tell the rest of us.
flowchart LR
Kaggle[/"repository dataset"/] -->|repoimport| PG[("Postgres")]
Search[/"GitHub search"/] -->|discovery| Ingestd
Archive[/"GH Archive<br/>hourly events"/] --> Ingestd
GH["GitHub GraphQL"] <-->|crawl| Ingestd["ingestd"]
Ingestd --> PG
PG --> API["go-api"]
API --> Web["web · Vercel"]
API --> Desktop["desktop · Electron"]
Desktop -->|"fork, push, PR<br/>with your token"| GH
ingestd keeps the catalog. Repositories come from a public dataset and from GitHub
search. Their open issues come from a crawl that commits each page together with its bookmark,
so a crash never skips one. Changes arrive from GH Archive's hourly event files, which cost no
API budget. Every eligible repository gets the same treatment: there's no priority queue for
big projects.go-api serves the catalog in index order, so page 500 costs the same as page 1. It holds
no GitHub credential at all.The full picture: ARCHITECTURE.md and the ingestion design.
You need Docker with Compose v2, and a GitHub token for GITHUB_TOKEN. The crawler reads only
public data, so a token with no scopes is enough.
git clone https://github.com/dizziedbliss/SkillIssues.git
cd SkillIssues
cp .env.example .env # set GITHUB_TOKEN; everything else has a dev default
docker compose up -d --build
docker compose ps # migrate and metrics-role exit 0; everything else running
The migrate service applies the schema; nothing needs setting up by hand.
The catalog starts empty. Repositories come from the Kaggle dataset
github-repository-metadata-with-5-stars (repo_metadata.json, ~3 GB). Put it at
data/repo_metadata.json, then:
cd backend
DATABASE_URL=postgresql://skillissues:skillissues@localhost:5432/skillissues \
go run ./cmd/repoimport --file ../data/repo_metadata.json
Only eligible repositories are stored. A full pass takes about 16 minutes and is safe to re-run;
ingestd starts crawling their issues on its own.
| What | URL |
|---|---|
| Web app | http://localhost:5173 |
| API | http://localhost:8000 (/health, /metrics) |
| ingestd | http://localhost:8002/sync/status |
| flowd (live flow stream) | curl -N 'http://localhost:8003/stream?format=ndjson' |
| Grafana | http://localhost:3000 (admin / admin unless GRAFANA_ADMIN_PASSWORD is set) |
| Prometheus | http://localhost:9090 |
docker compose logs -f go-api ingestd
You'll need Node.js 22 and npm 11. web, desktop and packages/* are one npm workspace with
one lockfile, so install once, at the root:
npm ci
cd desktop
npm run dev # expects the API at http://localhost:8000
Go 1.27 (what CI and the images use; go.mod needs 1.26 or later):
cd backend && go vet ./... && gofmt -l . && go build ./... && go test -short ./...
cd web && npm run typecheck && npm run build
cd desktop && npm run check && npm run build && npm test
The database tests run against a migrated Postgres when TEST_DATABASE_URL is set, and pass
with Redis stopped.
Three layers: bootstrap values and secrets come from the environment (.env), and everything
operational lives in the settings table, validated by the database and changeable while the
system runs:
# read everything
curl localhost:8000/admin/config -H "Authorization: Bearer $ADMIN_SYNC_TOKEN"
# give the crawler four workers, right now, no restart
curl -XPUT localhost:8000/admin/config/ingest.routine_workers \
-H "Authorization: Bearer $ADMIN_SYNC_TOKEN" -d '{"value": 4}'
Every change is recorded in settings_audit. Every key, with its default and bounds:
docs/settings.md.
[!TIP]
psqlworks too, and hits the same validation trigger. That's handy when a bad value has made the API itself unhealthy.
A theme is a TOML file of design tokens, plus an optional stylesheet. Start from any built-in and change only what you name:
[meta]
name = "Night shift"
base = "tokyo-night"
[colors]
accent = "#ff7a59"
[dark]
background = "#0b0d14"
Write one in Settings → Themes: the editor checks it as you type and shows a live preview. Share it, and it appears in the Community tab. Stylesheets are checked against an allowlist on the server and in your browser, because a theme somebody shares is code running on your page. The full reference: the themes guide.
| Changelog | What changed in each website and desktop version |
| Getting started | Your first issue, from sign-in to merge |
| How XP works | What earns XP, levels, streaks, badges, quests |
| For maintainers | How your repository gets listed, and how to ask for it not to be |
| Public API | Reading the catalog from your own code |
| docs/api.md | Every route, with its auth and responses |
| docs/database.md | Every table and column, and where its values come from |
| ARCHITECTURE.md | How the pieces fit |
Bug reports, fixes, docs, tests, translations and accessibility improvements are all welcome. Read CONTRIBUTING.md and the Code of Conduct, then open an issue (there's a form for each kind, including "my repository isn't indexed" and "exclude my repository") or a pull request.
SkillIssues is built with AI coding tools, mostly Claude, with every change directed, read and tested by a person before it merges. You're welcome to use them too: Using AI tools in CONTRIBUTING.md has the rules, and CLAUDE.md is the brief for coding agents, with a guide in each part of the code.
Found a security problem? Please don't open an issue: use private vulnerability reporting. See SECURITY.md.
We'd love to hear from you. Ideas, questions, a theme you're proud of, your first merged pull request: bring them to Discussions.