Open to opportunities · Türkiye

Celalettin Durğaç

Computer Programmer & IT Specialist

I build open-source developer tools for the AI era.

Small, sharp tools that measure how AI agents change a codebase, give agents better context with less noise, and catch problems before they ship. Written in TypeScript, Python, Go and Rust.

75public repositories
14developer tools
33+22browser games & web apps
MITlicensed, CI on every push
  • TypeScript
  • Python
  • Go
  • Rust
  • JavaScript
  • MCP
  • CI/CD · GitHub Actions
  • Linux
  • Git

Featured work

Measuring AI in real codebases

Three tools that answer questions every team using AI agents is asking: how much of the code did AI write, does it last, and do agent pull requests get merged. Each runs on any GitHub repository and prints real numbers.

Developer tools

MCP servers, linters and CLIs

Single-purpose tools that fit into CI, cron and pre-commit. Every one ships with tests, a release and real example output.

MCP server · CLITypeScript

shush

Cuts the noise from command output before it reaches an AI agent. Passing tests, progress bars and install logs go; every error and summary stays, and the full output is one call away. MCP server and CLI. On its benchmark: 20,299 → 6,215 tokens (−69%).

Example output
$ shush go test -v ./...
    calc_test.go:26: Slug("Çay Saati") = "çay-saati", want "cay-saati"
--- FAIL: TestSlugTurkish (0.00s)
FAIL	example.com/calc	0.002s
[shush] exit 1 · 880 → 57 tokens (-94%) · hidden: 65 passing test lines
MCP serverTypeScript

turkiye-mcp

An MCP server with 17 Türkiye-specific tools for Claude, Cursor, VS Code and other clients: official TCMB exchange rates, live earthquakes, the holiday calendar and business-day math, IBAN/TCKN/VKN validation, provinces, prayer times and weather. No API keys.

Example output
// ~/.cursor/mcp.json
{
  "mcpServers": {
    "turkiye": { "command": "npx", "args": ["-y", "github:celaldrg/turkiye-mcp"] }
  }
}
Agent toolingPython

skillcheck

Linter for Agent Skills, the SKILL.md folders that Claude Code, Codex, Cursor and Copilot load on demand: name and description rules, strict frontmatter with line numbers, broken file links, context-size warnings. Zero dependencies; JSON and GitHub annotation output.

Example output
$ skillcheck examples/skills examples/broken
ok    pdf-forms  (8 lines, ~73 tokens)
FAIL  Release_Notes  (2 lines, ~16 tokens)
      SKILL.md:2  error    name-format        name 'Release_Notes' must be lowercase
      SKILL.md:7  error    broken-link        'templates/notes.md' does not exist
3 skill(s), 3 error(s), 2 warning(s)
Agent toolingGo

llmslint

Linter for llms.txt, the file that points AI agents at your docs: structure, link format, relative and dead URLs, size of the Optional section. Works on a file, URL or whole domain; JSON and CI modes.

Example output
$ llmslint testdata/bad.txt          # lines trimmed
bad.txt:2: error [h1-first] the H1 title must be the first thing in the file
bad.txt:2: warning [summary] no blockquote summary ("> ...") after the title
bad.txt:6: warning [absolute-url] /install.html is relative
bad.txt:7: warning [duplicate-url] /install.html is already listed on line 6
CLITypeScript

lockdiff

Readable diffs for lockfiles. Turns a 3,000-line package-lock.json change into what a reviewer needs: upgraded, downgraded, added and removed packages, major bumps first. Ten formats (npm, pnpm, yarn, Cargo, Go, Poetry, uv, Pipenv, Composer, Bundler), Markdown for PR comments, zero dependencies.

Example output
$ lockdiff 14.0.0 14.1.1        # ripgrep, rows trimmed
Cargo.lock (cargo)  41 upgraded · 11 added · 9 removed · 2 major
  ↑ upgraded   grep                0.2.13 → 0.3.2   major
  ↑ upgraded   grep-printer        0.1.7 → 0.2.2    major
  ↑ upgraded   aho-corasick        1.1.2 → 1.1.3    patch
  + added      windows_* (8)       0.52.6
CLIGo

csvglance

Know a CSV before you load it: type, missing values, distinct count, range, mean and top values for every column in one streaming pass. Detects delimiters, gzip and decimal commas, flags columns that will break an import. Parallel; about a second per million rows.

Example output
$ csvglance airport-codes.csv   # columns trimmed
airport-codes.csv · 86,286 rows · 13 columns · comma-separated · 8.4 MB · 87ms
#  COLUMN        TYPE    FILLED  DISTINCT  RANGE            TOP VALUES
2  type          string  100%    7         len 6 … 14       small_airport (42.8k), heliport (23.3k)
4  elevation_ft  int     82.6%   6,485     -1,266 … 17,372  10 (597), 20 (469)
6  iso_country   string  100%    247       len 2            US (32.7k), BR (8,113)
CLIRust

todoage

How old are your TODOs? Finds TODO, FIXME and HACK comments and uses git blame to show who wrote each one and how long ago, oldest first. JSON output and a CI gate for stale ones. Real output on ripgrep:

Example output
$ todoage --limit 3
# columns/lines trimmed to fit
AGE      AUTHOR         LOCATION                        TAG   TEXT
8y 6mo   Andrew Gallant crates/searcher/src/sink.rs:607 TODO  In theory, it should be possible to amortize
8y 2mo   Andrew Gallant tests/regression.rs:179         TODO  (burntsushi) Darwin doesn't like this test
8y 2mo   Andrew Gallant tests/regression.rs:192         TODO  (burntsushi) Figure out how to make this test work
CLIGo

certpeek

Checks TLS certificates for one host or hundreds at once: expiry, hostname, trust chain and TLS version. Table or JSON output and exit codes for cron and CI. One binary, standard library only.

Example output
$ certpeek github.com expired.badssl.com wrong.host.badssl.com
# columns/lines trimmed to fit
STATUS    TARGET                 EXPIRES     DAYS   NOTES
CRITICAL  expired.badssl.com     2015-04-12  -4215  expired
OK        github.com             2026-11-29  34
CRITICAL  wrong.host.badssl.com  2026-12-28  63     hostname mismatch
CLI · pre-commitPython

envguard

A linter for .env files: syntax errors, duplicates, keys missing from .env.example, and real credentials committed to example files by mistake. Zero dependencies, with a pre-commit hook and GitHub Actions annotations.

Example output
$ envguard
# columns/lines trimmed to fit
error   .env:4          unterminated-quote   value of STRIPE_SECRET_KEY opens a ' quote that never closes
error   .env.example:6  secret-in-example    AWS_ACCESS_KEY_ID in .env.example looks like a real credential (AWS access key)
warning .env:6          duplicate-key        SENTRY_DSN is also defined on line 5; the last one wins
envguard: .env and .env.example: 3 errors, 4 warnings
Library · CLIPython

turkcekit

Turkish text done right in Python: correct İ/ı casing, URL slugs, Turkish alphabetical sorting, numbers and lira amounts in words, 1.234,50 ₺ formatting. Zero dependencies, CLI included.

Example output
>>> import turkcekit as tk
>>> tk.upper("istanbul ılık")
'İSTANBUL ILIK'
>>> tk.slugify("Ağaç Ev & Bahçe Fiyatları 2026")
'agac-ev-bahce-fiyatlari-2026'
>>> tk.sorted_tr(["zeytin", "çay", "ırmak", "irmik", "ördek", "ozan"])
['çay', 'ırmak', 'irmik', 'ozan', 'ördek', 'zeytin']
Curated listMarkdown

awesome-turkiye-dev

Resources for developers in Türkiye: open-source projects, Turkish NLP, APIs and open data, communities, learning, podcasts, events and jobs. Links are checked automatically.

Playable in the browser

Games, visualizers and web apps

Small games and tools that run in any browser, phone included. Vanilla JavaScript, no build step, logic covered by node --test unit tests.

Browser games · 33

  • Chess

    Full rules and an alpha-beta engine with three levels. PGN export.

  • Sapan

    Physics slingshot game on Matter.js, five levels of crumbling castles.

  • Sudoku

    Puzzles with a guaranteed unique solution, notes, hints, three difficulties.

  • 2048

    Sliding tiles with animations, multi-step undo and saved games.

  • Scientific Calculator

    Own expression parser, no eval: functions, DEG/RAD, history.

  • Minesweeper

    Safe first click, flags, chording, long-press to flag on mobile.

  • Kanat

    One-tap flying game with original art and a saved high score.

  • Breakout

    Brick breaker with three levels and power-ups such as multi-ball.

  • Snake

    Four speeds, walls or wrap mode, swipe controls and a D-pad.

  • Tic-Tac-Toe

    Unbeatable minimax AI, checked against every possible game.

  • Reversi

    Rules checked against perft counts, a three-level engine with a perfect endgame solve.

  • Mangala

    The traditional Turkish mancala game with its real rules and a three-level opponent.

  • Four in a Row

    Negamax with alpha-beta and a transposition table, running in a Web Worker.

  • Memory

    Card-matching game: three board sizes, solo or two players on one device, 18 original SVG symbols and 3D flips.

  • Maze

    Perfect mazes from three generators (backtracker, Prim, Kruskal with union-find), five levels and a BFS solution path.

  • 15 Puzzle

    Sliding puzzle from 3×3 to 5×5: every shuffle is solvable, IDA* hints on 3×3 and a picture mode.

  • Tavla

    Turkish backgammon against the computer (two levels) or a friend: bar entry, hitting, doubles, bearing off and mars.

  • Dama

    Turkish draughts with flying kings and forced maximum captures, and an alpha-beta opponent in a Web Worker.

  • Adam Asmaca

    Hangman with English and Turkish word lists that knows ı from i, an animated SVG drawing, hints and streaks.

  • Dokuz Taş

    Nine men's morris with placing, moving and flying phases, a three-level computer opponent and drag, tap or keys.

  • Gomoku

    Five in a row on a wooden 15×15 board: freestyle or exactly-five rule, alpha-beta AI with three levels in a Web Worker.

  • Pişti

    The classic Turkish card game against the computer: piştis, full scoring with a round summary, matches to 51, 101 or 151.

  • Space Shooter

    Vertical arcade shooter: ten scripted waves, a three-phase boss, a blaster plus three weapons that level up.

  • Word Search

    20 categories in English and Turkish, three sizes up to 15×15 in all 8 directions, every word hidden exactly once; drag, tap or keys.

  • Nonogram

    Paint-by-numbers logic puzzles: 20 hand-made pictures up to 15×15 and endless random ones, each with exactly one solution and no guessing.

  • Bulls and Cows

    Crack the secret number, or let a minimax solver crack yours (any 4-digit one in at most 7 guesses); 3 to 5 digits, notes and answer checking.

  • Amiral Battı

    Sea battle against the computer: drag five ships onto your sea, three AI levels, optional salvo and touching-ship rules, saved battles.

  • Solitaire

    Klondike with Draw 1 or 3, numbered deals, a solver that can deal only winnable games, unlimited undo, hints and auto-complete.

  • Dots and Boxes

    3×3 to 7×7 boards against a friend or a computer whose Hard level counts chains, plays the long-chain rule and double-deals.

  • Batak

    The Turkish trick-taking game with bidding, against three computer players that bid, pick trumps and remember the cards played.

  • Okey

    The Turkish tile game against three computer players that read the discards, with a draggable two-row rack, seven pairs and false jokers.

  • Air Hockey

    Neon air hockey with swept collisions, a computer opponent on three levels that predicts wall bounces, and two players on one screen.

  • Go

    Go on 9x9, 13x13 and 19x19 with superko, handicap, area scoring and a Monte Carlo tree search computer player in a Web Worker.

Visualizers, simulations and tools · 22

  • Sorting Visualizer

    Ten sorting algorithms step by step, with live counters, narration and complexity notes.

  • Pathfinding Visualizer

    A*, Dijkstra, BFS, greedy search and DFS on a grid you draw, plus two maze generators.

  • Game of Life

    Conway's Life on a canvas you draw on: zoom and pan, B/S rule presets such as HighLife and Day & Night, eight classic patterns.

  • Typing Test

    Typing speed test with English and Turkish word lists: WPM, accuracy, consistency and a per-second chart.

  • Pixel Art Editor

    Pixel sprites with mouse, pen or touch: fill, line, rectangle, mirror drawing, undo and PNG export up to 16×.

  • Focus Timer

    Focus sessions with short and long breaks, drift-free timing, a task list with estimates and a 7-day chart.

  • Drum Machine

    An 8-track, 16-step drum machine with synthesized drums, swing, patterns A–D, a song chain and share links.

  • Web Piano

    A piano for touch and keyboard: four synth sounds, sustain, a recorder that keeps 8 takes and a Learn mode.

  • Kanban Board

    A private Kanban board: drag and drop for mouse, touch and keyboard, WIP limits, filters and undo/redo.

  • Color Palette Generator

    Harmonious palettes in OKLCH with locks, WCAG contrast checks, 50–950 shade scales and CSS, JSON or Tailwind export.

  • Markdown Editor

    Live-preview Markdown with its own parser: synced scrolling, code highlighting, a table of contents and .md/.html export.

  • QR Code Generator

    QR codes encoded from scratch with Reed–Solomon error correction: links, Wi-Fi, e-mail, SMS and vCards, PNG or SVG.

  • Unit Converter

    136 units in 14 categories with exact definitions; type “5 ft 3 in to cm”, see every unit at once, keep favorites.

  • Password Generator

    Unbiased passwords and English or Turkish passphrases, an honest strength meter with crack times, and a checker for your own password.

  • JSON Formatter

    Exact line and column errors, 20-digit numbers kept as written, a relaxed mode that repairs, a fast tree with JSONPath queries, and a diff.

  • Loan Calculator

    Equal installments or equal principal with tax, fees, grace months and extra payments; schedule, chart, two offers and an affordability solver.

  • Regex Tester

    Live highlighting with colored named groups, a plain-language explanation of every token, replace and split previews, shareable links.

  • Function Plotter

    Its own parser, up to six functions with sliders, symbolic derivatives, roots, extrema, intersections and shaded integrals.

  • Fractal Explorer

    Mandelbrot, Julia, Burning Ship, Tricorn and Multibrot, rendered progressively on Web Workers, with a live Julia picker.

  • Text Diff

    Line, word and character diffs with a linear-space Myers algorithm, a side-by-side view, unified patches and a patch applier.

  • Mini Sheet

    A small spreadsheet with its own formula parser (no eval), 25 functions, a dependency graph, undo/redo and CSV import and export.

  • Fourier Drawing

    Draw any closed shape and watch a chain of rotating circles trace it, computed with an FFT; choose the number of terms and export SVG.

About

Practical tools, honest numbers

I'm a computer programmer and IT specialist from Türkiye. I like tools that do one job well: a single binary or a zero-dependency package, real example output in the README, and tests on every push.

Most of my recent work is about AI coding agents: measuring what they change in a codebase, and giving them cleaner context through MCP servers and linters.

  • 01
    Tools for AI agents · MCP servers and analytics that give agents better context with less noise
  • 02
    Developer tooling · small CLIs that fit into CI, cron and pre-commit
  • 03
    Turkish developer ecosystem · open data, local APIs and curated resources

Education & experience

  1. Associate degree, Computer Programming

    Isparta University of Applied Sciences

  2. IT Intern

    Turkish Aerospace

Let's work together

Issues and pull requests are welcome on every project. Issues labeled good first issue are a good place to start. For anything else, reach out on LinkedIn.