Where to Find the Core Ruleset for Ponytail: Complete File Location Guide

Ponytail's core "lazy senior dev" ruleset is stored as identical Markdown files in three locations: .windsurf/rules/ponytail.md, .qoder/rules/ponytail.md, and .clinerules/ponytail.md, depending on the host environment.

This guide shows you exactly where to locate the core ruleset for Ponytail in the DietrichGebert/ponytail repository. Whether you're integrating Ponytail into a new host, debugging behavior, or building a custom adapter, knowing the precise file paths ensures you load the correct "lazy senior developer" guidelines.

Default Ruleset Location for Windsurf

The primary core ruleset for Ponytail lives at .windsurf/rules/ponytail.md. This is the default path used by Windsurf-compatible hosts and most integrations that follow the standard repository structure.

When a host environment initializes Ponytail, it checks this location first. The file contains the complete behavioral guidelines that shape Ponytail's terse, efficiency-focused persona.

Alternative Ruleset Locations by Platform

Ponytail maintains three identical copies of its ruleset to support different host environments. Each serves the same single source of truth but resides in a directory recognized by its respective platform:

All three files are kept in sync to ensure consistent behavior across platforms.

How to Load the Ruleset Programmatically

Node.js Implementation

Use a fallback chain to locate the core ruleset for Ponytail without hard-coding a single path:

import { readFile } from "fs/promises";
import path from "path";

async function loadRuleset() {
  const repoRoot = path.resolve(import.meta.dirname, "..");
  const locations = [
    ".windsurf/rules/ponytail.md",
    ".qoder/rules/ponytail.md",
    ".clinerules/ponytail.md",
  ];

  for (const rel of locations) {
    const abs = path.join(repoRoot, rel);
    try {
      const txt = await readFile(abs, "utf8");
      console.log(`Loaded rules from ${rel}:\n`, txt);
      return txt;
    } catch {}
  }
  throw new Error("Ponytail ruleset not found");
}

loadRuleset().catch(console.error);

Python Implementation

For Python-based hosts or plugins, traverse the same priority order:

import pathlib

def get_ruleset():
    repo_root = pathlib.Path(__file__).parent.parent
    for rel in [".windsurf/rules/ponytail.md",
                ".qoder/rules/ponytail.md",
                ".clinerules/ponytail.md"]:
        p = repo_root / rel
        if p.is_file():
            return p.read_text(encoding="utf-8")
    raise FileNotFoundError("Ponytail ruleset missing")

rules = get_ruleset()
print(rules[:200])

Both implementations follow the recommended priority: Windsurf location first, then Qoder, then CLI fallback.

Verifying Ruleset Identity

All three files contain identical content. To confirm you're viewing the authentic core ruleset for Ponytail, check for these characteristic elements:

  • "Lazy senior developer" persona definition
  • Concise, no-nonsense behavioral guidelines
  • Efficiency-first coding principles

If your loaded file deviates from this structure, you may have a corrupted or outdated copy.

Summary

Frequently Asked Questions

What happens if multiple ruleset files exist?

Only one file is needed. Host implementations typically check .windsurf/rules/ponytail.md first, then fall back to .qoder/rules/ponytail.md and finally .clinerules/ponytail.md. The first readable file wins—subsequent files are ignored.

Can I customize the ruleset for my own use?

You're free to modify a local copy, but changes won't persist upstream. For project-specific behavior, wrap Ponytail's core rules with additional context rather than editing the base files directly.

Why are there three identical files instead of one shared location?

Each host environment (Windsurf, Qoder, generic CLI) scans a conventional directory for its rules. Maintaining three copies ensures zero-configuration loading across platforms without requiring hosts to know about each other's conventions.

Have a question about this repo?

These articles cover the highlights, but your codebase questions are specific. Give your agent direct access to the source. Share this with your agent to get started:

Share the following with your agent to get started:
curl -s "https://instagit.com/install.md"

Works with
Claude Codex Cursor VS Code OpenClaw Any MCP Client

Maintain an open-source project? Get it listed too →