-
Notifications
You must be signed in to change notification settings - Fork 373
AGENTS.md: add Agent Workflow Configuration seam #770
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: master
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 | ||||||
|---|---|---|---|---|---|---|---|---|
|
|
@@ -6,6 +6,74 @@ React on Rails demo app — a Rails application with React, Redux, Tailwind CSS, | |||||||
|
|
||||||||
| - `prompts/`: shared prompt templates for Codex, GPT, and other non-Claude tools | ||||||||
|
|
||||||||
| ## Agent Workflow Configuration | ||||||||
|
|
||||||||
| Shared workflow skills from | ||||||||
| [`shakacode/agent-workflows`](https://github.com/shakacode/agent-workflows) are | ||||||||
| repo-agnostic: they carry the workflow logic but defer every repo-specific | ||||||||
| command, branch, label, path, and policy to this section. When a shared skill | ||||||||
| says "run the repo's local validation" or "use the hosted-CI trigger," the | ||||||||
| concrete value is here. This is a small tutorial app, so many advanced | ||||||||
| process concepts (hosted-CI gating, benchmarks, merge ledgers, coordination | ||||||||
| backends) genuinely do not apply and are marked `n/a` with a pointer to the | ||||||||
| real file or workflow. Validate this seam with | ||||||||
| `agent-workflow-seam-doctor --root . --shared <agent-workflows-root>`. Where a | ||||||||
| value is already documented elsewhere in this file, this section references that | ||||||||
| section instead of duplicating it. | ||||||||
|
|
||||||||
| - **Base branch**: `master` (fetch and compare via `origin/master`; all CI | ||||||||
| workflows in `.github/workflows/` trigger on `push`/`pull_request` to `master`). | ||||||||
| - **Pre-push local validation**: `bin/ci` — runs setup, RuboCop, ESLint, the test | ||||||||
| asset build, RSpec, and Jest in order (steps defined in `config/ci.rb`). The | ||||||||
| equivalent Rake entrypoint is `bundle exec rake ci:all`. Run tool-version-sensitive | ||||||||
| commands through `bin/conductor-exec` (see the **Conductor Compatibility** section). | ||||||||
| - **CI change detector**: n/a — there is no suite-routing detector; every PR runs | ||||||||
| all three workflows (`.github/workflows/rspec_test.yml`, `lint_test.yml`, | ||||||||
| `js_test.yml`) in full. | ||||||||
| - **Hosted-CI trigger**: n/a — no `+ci-*` PR-comment commands or hosted-CI labels. | ||||||||
| CI runs automatically on push and pull_request to `master`. The separate | ||||||||
| `@claude` PR/issue mention triggers the Claude Code agent via | ||||||||
| `.github/workflows/claude.yml`. | ||||||||
| - **CI parity environment**: n/a — no `act` or local-runner image is documented. | ||||||||
| Reproduce CI-only failures from the exact GitHub Actions jobs in | ||||||||
| `.github/workflows/*.yml`: `runs-on: ubuntu-latest`, Ruby `3.4.6`, Node `22.x`, | ||||||||
| `services.postgres: postgres:11-alpine` (`rspec_test.yml`), and the listed env | ||||||||
| vars (`RAILS_ENV=test`, `NODE_ENV=test`, `DATABASE_URL`, `DRIVER=selenium_chrome`, | ||||||||
| `RENDERER_PASSWORD`). Record any unverified runner/service gap as `UNKNOWN`. | ||||||||
| - **Secret redaction patterns**: redact values for environment variables or log | ||||||||
| fields whose names contain `SECRET`, `TOKEN`, `KEY`, `PASSWORD`, `CREDENTIAL`, | ||||||||
| `PASSPHRASE`, or `PRIVATE`, plus the repo-specific names `CLAUDE_CODE_OAUTH_TOKEN`, | ||||||||
| `RENDERER_PASSWORD`, `GITHUB_TOKEN`, `GH_TOKEN`, and `DATABASE_URL` (contains | ||||||||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
|
||||||||
| credentials). These patterns favor conservative over-redaction of logs, prompts, | ||||||||
| and issue comments. The repo-specific entries are public identifier names, not | ||||||||
| values; list them so agents redact exact aliases even when generic patterns match. | ||||||||
| - **Benchmark labels**: n/a — no performance-benchmark workflow or labels in this repo. | ||||||||
| - **Follow-up issue prefix**: n/a — no follow-up-issue convention is documented; | ||||||||
| default to not opening new issues. | ||||||||
| - **Changelog**: `/CHANGELOG.md`, user-visible changes only. There is no changelog | ||||||||
| automation (no Rake task or script); edit the file by hand following its existing | ||||||||
| reverse-chronological dated-section format. | ||||||||
| - **Lint / format**: `bundle exec rake lint` (full suite: RuboCop, ESLint, scss_lint); | ||||||||
| `bin/rubocop` or `bundle exec rake "lint:rubocop[fix]"` (Ruby, with autofix); | ||||||||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested fix: split the two commands so their intent is clear.
Suggested change
|
||||||||
| `bundle exec rubocop -a` (Ruby autofix); `yarn lint:eslint` (JS check), | ||||||||
| `yarn lint` (ESLint autofix + Prettier write); `yarn lint:prettier` (Prettier | ||||||||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. The
Worth either fixing the underlying |
||||||||
| check, `.js`/`.jsx`). See the **Build and Test Commands** section. | ||||||||
| - **Merge ledger**: n/a — no machine-checkable per-PR merge-readiness script exists. | ||||||||
| - **Docs checks**: n/a — no markdown link checker or docs-sidebar verifier in this repo. | ||||||||
| - **Tests**: RSpec via `bin/rspec` or `bundle exec rake ci:rspec`; Jest (client JS) | ||||||||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
task rspec: %i[environment build_rescript rspec_tests]It always runs
Suggested change
|
||||||||
| via `yarn test:client` or `bundle exec rake ci:js`. The full local gate is | ||||||||
| `bin/ci` / `bundle exec rake ci:all`. No separate e2e suite is configured. | ||||||||
| - **Build / type checks**: build test assets with `yarn build:test` (and | ||||||||
| `yarn res:build` for ReScript). Type checks: n/a — TypeScript is a dependency but | ||||||||
| there is no `tsc`/type-check script; ReScript is compiled by `yarn res:build`. | ||||||||
| - **Review gate**: `claude-review` — the automated Claude Code review in | ||||||||
| `.github/workflows/claude-code-review.yml` runs on every PR (opened, synchronize, | ||||||||
| ready_for_review, reopened) and posts inline/PR comments. | ||||||||
| - **Approval-exempt change categories**: n/a — no standing approval-exemption policy | ||||||||
| is documented; treat all changes as requiring normal review. | ||||||||
| - **Coordination backend**: n/a — this repo uses no shared agent-coordination backend; | ||||||||
| rely on GitHub PR/issue state and assignment for coordination. | ||||||||
|
|
||||||||
| ## Build and Test Commands | ||||||||
|
|
||||||||
| ```bash | ||||||||
|
|
||||||||
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.
bundle exec rake ci:allandbin/ciare not equivalent; calling them interchangeable will mislead agents.Key differences verified against
config/ci.rbandlib/tasks/ci.rake:bin/cibundle exec rake ci:allbin/setup --skip-serverbuild_rescript rspec_tests lint js_tests)generate_packs && res:build && build:testres:buildbin/conductor-exec bin/rspecsh "rspec"An agent that substitutes
rake ci:allforbin/ciin a clean environment will skip setup and run tests before lint.