-
Notifications
You must be signed in to change notification settings - Fork 0
Update README.md #9
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change | ||||
|---|---|---|---|---|---|---|
| @@ -1,66 +1,13 @@ | ||||||
| # Groundkeeper | ||||||
| # groundkeeper | ||||||
|
|
||||||
| Groundkeeper is a deterministic, YAML-driven repository maintenance agent that runs primarily in GitHub Actions. It is designed to be safe, reviewable, and boring: every output is structured, validated, and generated under strict budgets and scope rules. | ||||||
| A deterministic, YAML-driven repository maintenance agent that runs as a GitHub Action. Safe, reviewable, and boring: every change is structured, validated, and generated under strict budgets and scope rules. | ||||||
|
|
||||||
| ## Philosophy & Safety | ||||||
| ## Quick Start (GitHub Action) | ||||||
|
|
||||||
| - **YAML is the source of truth** — `.github/agent.yml` defines scope, budgets, and runtime settings. | ||||||
| - **Report-only by default** — publishing is opt-in and gated by config. | ||||||
| - **Deterministic stages** — fixed stages with schema-validated I/O. | ||||||
| - **No hidden automation** — no auto-merge, no background services. | ||||||
| - **Scoped execution** — out-of-scope changes are rejected before LLM calls. | ||||||
|
|
||||||
| ## Features | ||||||
|
|
||||||
| - **Schema-validated configuration** via `packages/schemas/agent.schema.json` | ||||||
| - **Strict stage boundaries**: Preflight → Analysis → Plan → Patch → Verify → Publish | ||||||
| - **Prompt templates** per stage in `prompts/` | ||||||
| - **CLI + GitHub Action** wrapper for consistent automation | ||||||
|
|
||||||
| ## Repository Layout | ||||||
|
|
||||||
| - `packages/cli` — CLI entrypoint and command handling | ||||||
| - `packages/core` — stage runner, config validation, scope, and budgets | ||||||
| - `packages/runtimes` — LLM runtime adapters (OpenAI, Copilot) | ||||||
| - `packages/schemas` — agent config schema and stage I/O schemas | ||||||
| - `prompts/` — stage prompt templates (analysis, plan, patch, verify, publish) | ||||||
|
|
||||||
| ## Installation | ||||||
|
|
||||||
| ### As a CLI tool | ||||||
|
|
||||||
| ```bash | ||||||
| npm install -g groundkeeper | ||||||
| ``` | ||||||
|
|
||||||
| ### As a GitHub Action | ||||||
|
|
||||||
| Add to your workflow file (e.g., `.github/workflows/groundkeeper.yml`): | ||||||
|
|
||||||
| ```yaml | ||||||
| name: Repository Maintenance | ||||||
| on: | ||||||
| schedule: | ||||||
| - cron: '0 0 * * 0' # Weekly on Sunday | ||||||
| workflow_dispatch: | ||||||
|
|
||||||
| jobs: | ||||||
| maintenance: | ||||||
| runs-on: ubuntu-latest | ||||||
| steps: | ||||||
| - name: Run Groundkeeper | ||||||
| uses: efremidze/groundkeeper@v1 | ||||||
| with: | ||||||
| config: .github/agent.yml | ||||||
| github-token: ${{ secrets.GITHUB_TOKEN }} | ||||||
| ``` | ||||||
|
|
||||||
| ## Quick Start | ||||||
|
|
||||||
| 1. **Create `.github/agent.yml`**: | ||||||
| 1. **Create `.github/agent.yml`** in your repository: | ||||||
|
|
||||||
| ```yaml | ||||||
| $schema: ../packages/schemas/agent.schema.json | ||||||
| $schema: https://raw.githubusercontent.com/efremidze/groundkeeper/main/packages/schemas/agent.schema.json | ||||||
| version: '1.0' | ||||||
| mode: report-only | ||||||
|
|
||||||
|
|
@@ -72,6 +19,7 @@ scope: | |||||
| exclude: | ||||||
| - node_modules/** | ||||||
| - dist/** | ||||||
| - .git/** | ||||||
|
|
||||||
| budgets: | ||||||
| maxFiles: 100 | ||||||
|
|
@@ -92,150 +40,209 @@ publish: | |||||
| enabled: false | ||||||
| ``` | ||||||
|
|
||||||
| 2. **Run Groundkeeper**: | ||||||
| 2. **Create `.github/workflows/groundkeeper.yml`**: | ||||||
|
|
||||||
| ```bash | ||||||
| groundkeeper run --config .github/agent.yml | ||||||
| ``` | ||||||
|
|
||||||
| ## Usage | ||||||
|
|
||||||
| ### CLI Commands | ||||||
|
|
||||||
| #### `groundkeeper run` | ||||||
|
|
||||||
| Run the deterministic stage pipeline: | ||||||
| ```yaml | ||||||
| name: Repository Maintenance | ||||||
|
|
||||||
| ```bash | ||||||
| groundkeeper run [options] | ||||||
| on: | ||||||
| schedule: | ||||||
| - cron: '0 0 * * 0' # Weekly on Sunday | ||||||
| workflow_dispatch: | ||||||
|
|
||||||
| Options: | ||||||
| -c, --config <path> Path to configuration file (default: ".github/agent.yml") | ||||||
| -d, --directory <path> Working directory (default: current directory) | ||||||
| jobs: | ||||||
| groundkeeper: | ||||||
| runs-on: ubuntu-latest | ||||||
| permissions: | ||||||
| contents: read | ||||||
| pull-requests: write | ||||||
| issues: write | ||||||
|
|
||||||
| steps: | ||||||
| - uses: actions/checkout@v4 | ||||||
|
|
||||||
| - name: Run Groundkeeper | ||||||
| uses: efremidze/groundkeeper@v1 | ||||||
| with: | ||||||
| config: .github/agent.yml | ||||||
| github-token: ${{ secrets.GITHUB_TOKEN }} | ||||||
|
||||||
| github-token: ${{ secrets.GITHUB_TOKEN }} |
Copilot
AI
Jan 24, 2026
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The "Minimal Configuration (Report Only)" example is missing the runtime field, which is needed for the tool to function properly. Without specifying a runtime provider (openai or copilot), all LLM stages will be skipped and the tool won't perform any analysis. Consider adding the runtime field to make this a functional minimal example.
Copilot
AI
Jan 24, 2026
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The comment "# Optional: copilot for GitHub Copilot SDK" could be misleading. The provider field itself is what determines whether to use OpenAI or Copilot. Consider clarifying this comment to say something like "# Change to 'copilot' to use GitHub Copilot SDK" or remove the comment entirely since the valid values are already documented in the Configuration Schema section.
| # Optional: copilot for GitHub Copilot SDK | |
| # Change to 'copilot' to use GitHub Copilot SDK |
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The schema URL points to the
mainbranch on GitHub. This will only work if this schema file has already been pushed to the main branch. Users who copy this example before the changes are merged might encounter a 404 error. Consider using a relative path like../packages/schemas/agent.schema.jsonor adding a note that this URL only works after the schema is published.