feat: add Cline runtime support via .clinerules (#1605)

Adds a .clinerules file at the repo root so Cline (VS Code AI extension)
understands GSD's architecture, coding standards, and workflow constraints.

Closes #1509
This commit is contained in:
Tom Boucher
2026-04-03 12:41:04 -04:00
committed by GitHub
parent 522860ceef
commit 5f3d4e6127
2 changed files with 60 additions and 0 deletions

27
.clinerules Normal file
View File

@@ -0,0 +1,27 @@
# GSD — Get Shit Done
## What This Project Is
GSD is a structured AI development workflow system. It coordinates AI agents through planning phases, not direct code edits.
## Core Rule: Never Edit Outside a GSD Workflow
Do not make direct repo edits. All changes must go through a GSD workflow:
- `/gsd:plan-phase` → plan the work
- `/gsd:execute-phase` → build it
- `/gsd:verify-work` → verify results
## Architecture
- `get-shit-done/bin/lib/` — Core Node.js library (CommonJS .cjs, no external deps)
- `get-shit-done/workflows/` — Workflow definition files (.md)
- `agents/` — Agent definition files (.md)
- `commands/gsd/` — Slash command definitions (.md)
- `tests/` — Test files (.test.cjs, node:test + node:assert)
## Coding Standards
- **CommonJS only** — use `require()`, never `import`
- **No external dependencies in core** — only Node.js built-ins
- **Test framework** — `node:test` and `node:assert` ONLY, never Jest/Mocha/Chai
- **File extensions** — `.cjs` for all test and lib files
## Safety
- Use `execFileSync` (array args) not `execSync` (string interpolation)
- Validate user-provided paths with `validatePath()` from `get-shit-done/bin/lib/security.cjs`

View File

@@ -0,0 +1,33 @@
const { test, describe } = require('node:test');
const assert = require('node:assert');
const fs = require('fs');
const path = require('path');
describe('Cline runtime support', () => {
test('.clinerules file exists at repo root', () => {
const p = path.join(__dirname, '..', '.clinerules');
assert.ok(fs.existsSync(p), '.clinerules should exist at repo root');
});
test('.clinerules references GSD workflow enforcement', () => {
const content = fs.readFileSync(path.join(__dirname, '..', '.clinerules'), 'utf-8');
assert.ok(
content.includes('gsd') || content.includes('GSD') || content.includes('workflow'),
'.clinerules should mention GSD workflows'
);
});
test('.clinerules includes coding standards', () => {
const content = fs.readFileSync(path.join(__dirname, '..', '.clinerules'), 'utf-8');
assert.ok(content.includes('CommonJS') || content.includes('require'),
'.clinerules should mention CommonJS standard');
assert.ok(content.includes('node:test') || content.includes('node:assert'),
'.clinerules should mention test framework');
});
test('.clinerules includes architecture overview', () => {
const content = fs.readFileSync(path.join(__dirname, '..', '.clinerules'), 'utf-8');
assert.ok(content.includes('bin/lib') || content.includes('workflows') || content.includes('agents'),
'.clinerules should describe project architecture');
});
});