Skip to content

docs: add graze-cli/GRAZE.md instruction file (fixes #20)#39

Closed
OriginalGary wants to merge 1 commit intomainfrom
fix/structured-coding-with-ai-20
Closed

docs: add graze-cli/GRAZE.md instruction file (fixes #20)#39
OriginalGary wants to merge 1 commit intomainfrom
fix/structured-coding-with-ai-20

Conversation

@OriginalGary
Copy link
Copy Markdown
Contributor

@OriginalGary OriginalGary commented Apr 26, 2026

Closes https://github.com/Open-Paws/structured-coding-with-ai/issues/20\n\n- Created graze-cli/GRAZE.md with all 5 sections per AC\n- Verified installation instructions (npm package tracked in graze-cli#74)\n- India bootcamp providers match c4c-bootcamp\n- Cross-ref already in README.md

Summary by CodeRabbit

  • Documentation
    • Added a comprehensive Graze‑CLI guide covering purpose and differences from upstream, step‑by‑step installation for global and no‑install workflows, supported free‑tier providers and API variable names, operational best practices (hooks, prompt behavior, token limits), troubleshooting for common failure modes with mitigation commands, and links plus a last‑updated timestamp.

@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented Apr 26, 2026

Warning

Rate limit exceeded

@OpenGaryBot has exceeded the limit for the number of commits that can be reviewed per hour. Please wait 2 minutes and 18 seconds before requesting another review.

Your organization is not enrolled in usage-based pricing. Contact your admin to enable usage-based pricing to continue reviews beyond the rate limit, or try again in 2 minutes and 18 seconds.

⌛ How to resolve this issue?

After the wait time has elapsed, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

We recommend that you space out your commits to avoid hitting the rate limit.

🚦 How do rate limits work?

CodeRabbit enforces hourly rate limits for each developer per organization.

Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout.

Please see our FAQ for further information.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro

Run ID: 7bbfc417-5a21-4601-beb6-bbfa8c7fd39e

📥 Commits

Reviewing files that changed from the base of the PR and between 1d1597f and 3e66eb1.

📒 Files selected for processing (2)
  • README.md
  • graze-cli/GRAZE.md
📝 Walkthrough

Walkthrough

Adds a new graze-cli/GRAZE.md instruction guide for the Open Paws Graze-CLI fork and updates README.md to reference the new directory; documents installation, free-tier provider setup, advocacy-specific workflow rules, failure modes, and links. (Factual summary; no code changes.)

Changes

Cohort / File(s) Summary
Graze-CLI Documentation
graze-cli/GRAZE.md
New instruction guide for the Open Paws Graze-CLI fork. Covers purpose, installation (global dev workflow and npx/Colab no-install), free-tier providers (Gemini, Groq, SambaNova, Colab secrets), required API env vars, provider readiness commands, advocacy workflow rules (pre-commit desloppify scan, speciesist language checks, economic test question, guild quest submission, two-state prompt behavior, token max-tokens), common failure modes and mitigations, links, timestamp.
README update
README.md
Directory structure updated to include graze-cli/ and reference graze-cli/GRAZE.md.

Estimated code review effort

🎯 1 (Trivial) | ⏱️ ~3 minutes


Caution

Pre-merge checks failed

Please resolve all errors before merging. Addressing warnings is optional.

  • Ignore

❌ Failed checks (1 error)

Check name Status Explanation Resolution
No Speciesist Idioms ❌ Error GRAZE.md contains speciesist 'herd infrastructure metaphors' at lines 51 and 66 describing provider management, violating the no-animal-violence ruleset. Replace 'graze herd status' and 'graze herd list' with provider-appropriate terminology like 'graze provider status' or document upstream constraint and propose change to Open-Paws fork.
✅ Passed checks (7 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed Title directly matches PR objective: adds graze-cli/GRAZE.md documentation file and closes issue #20.
Linked Issues check ✅ Passed PR fulfills all five required sections [#20]: What/Why (advocacy CLI), Installation (@open-paws/graze), Provider setup (Gemini/Groq/SambaNova/Colab), Advocacy workflow (desloppify, semgrep, economic test, quest submission), and Failure modes (model refusal, euphemisms, token discipline).
Out of Scope Changes check ✅ Passed Both file changes are in scope: graze-cli/GRAZE.md adds required advocacy guidance; README.md cross-reference is mandated by issue #20 acceptance criteria.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
No Hardcoded Secrets Or Credentials ✅ Passed PR contains no hardcoded API keys, tokens, or credentials. Documents environment variable names and official provider URLs only.
No Tier 3 Data Committed ✅ Passed Pull request contains no Tier 3 data commitments; GRAZE.md documents advocacy workflow rules and provider setup without activist identities, contact information, location data, legal files, or NGO financials.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch fix/structured-coding-with-ai-20
  • 🛠️ fix NAV violations: Commit on current branch
  • 🛠️ fix NAV violations: Create PR

Comment @coderabbitai help to get the list of available commands and usage tips.

coderabbitai[bot]
coderabbitai Bot previously requested changes Apr 26, 2026
Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 3

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@graze-cli/GRAZE.md`:
- Around line 16-32: The markdown violates lint rules (MD022/MD031/MD047):
ensure there is a blank line above and below each heading and fenced code block
and add a trailing newline at EOF in GRAZE.md; specifically, update the sections
titled "Global install (recommended for Guild devs)" and "Colab / no-install
(India bootcamp)" so there is an empty line before the triple-backtick fences
and after them, and ensure the file ends with a final newline; apply the same
blank-line fixes to the other affected block around lines mentioned (the block
covering the alternate section at 63-68).
- Line 50: The repo's semgrep config mismatch prevents CI from running: either
add the missing local rule file named semgrep-no-animal-violence.yaml to the
repo so CodeRabbit and references in CLAUDE.md/AGENTS.md point to a real local
config, or update CodeRabbit configuration and the docs in CLAUDE.md, AGENTS.md
and GRAZE.md to consistently use the remote registry config `semgrep
--config=p/open-paws/semgrep-rules-no-animal-violence`; pick one approach and
apply it across the referenced artifacts (CodeRabbit CI settings, GRAZE.md,
CLAUDE.md, AGENTS.md) so all three places reference the same, existing semgrep
config.
- Around line 63-67: The repo's discovery lacks a link to graze-cli/GRAZE.md;
either add an entry in the root README that links to graze-cli/GRAZE.md (so
references at lines mentioning graze-cli point directly to the GRAZE.md) or
create a new README.md inside the graze-cli directory that summarizes the CLI
and includes a link back to graze-cli/GRAZE.md and the root README; update
whichever file you choose (root README or graze-cli/README.md) to include
descriptive text and the link so the GRAZE.md becomes discoverable.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro

Run ID: fe38ef06-7feb-42d8-884f-2df343e3bfdf

📥 Commits

Reviewing files that changed from the base of the PR and between b2a6c47 and ad98d26.

📒 Files selected for processing (1)
  • graze-cli/GRAZE.md

Comment thread graze-cli/GRAZE.md
Comment thread graze-cli/GRAZE.md Outdated

## Advocacy Workflow Rules

1. **Pre-commit**: Always `desloppify scan .` + `semgrep --config=p/open-paws/semgrep-rules-no-animal-violence`
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🔴 Critical

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo "Finding semgrep-no-animal-violence.yaml in repo..."
fd -i 'semgrep-no-animal-violence\.yaml$' || true

echo "Checking current command in graze-cli/GRAZE.md..."
rg -n 'semgrep --config' graze-cli/GRAZE.md

Repository: Open-Paws/structured-coding-with-ai

Length of output: 295


🏁 Script executed:

# Search for all semgrep-related config files
echo "=== Finding all semgrep configs ==="
fd -i 'semgrep.*\.(yaml|yml|json)$'

echo ""
echo "=== Checking for semgrep references in codebase ==="
rg -i 'semgrep.*config' --type md --type yaml --type json -A 2 -B 2

echo ""
echo "=== Checking .semgrep directory ==="
ls -la .semgrep 2>/dev/null || echo "No .semgrep directory"

echo ""
echo "=== Looking at repo root for config files ==="
ls -la | grep -E '(semgrep|config)'

Repository: Open-Paws/structured-coding-with-ai

Length of output: 1947


🏁 Script executed:

echo "=== .pre-commit-config.yaml ==="
cat .pre-commit-config.yaml

echo ""
echo "=== Searching for desloppify references ==="
rg -i 'desloppify' -A 2 -B 2

echo ""
echo "=== Checking for p/open-paws references ==="
rg 'p/open-paws' -A 2 -B 2

Repository: Open-Paws/structured-coding-with-ai

Length of output: 24617


🏁 Script executed:

# Search for any mention of semgrep-no-animal-violence.yaml in code/comments
echo "=== Searching for semgrep-no-animal-violence references ==="
rg 'semgrep-no-animal-violence' -i --type md --type yaml

echo ""
echo "=== Checking if .gitignore excludes any semgrep config ==="
cat .gitignore 2>/dev/null | grep -i semgrep || echo "No semgrep-related gitignore rules"

echo ""
echo "=== Checking no-animal-violence-pre-commit repo references ==="
rg 'no-animal-violence-pre-commit' -i

echo ""
echo "=== Looking for any YAML config files at repo root or .semgrep ==="
find . -maxdepth 2 -name '*.yaml' -o -name '*.yml' | head -20

Repository: Open-Paws/structured-coding-with-ai

Length of output: 766


🏁 Script executed:

cat .coderabbit.yaml

Repository: Open-Paws/structured-coding-with-ai

Length of output: 3797


Fix CI misconfiguration: missing semgrep config file blocks enforcement.

GRAZE.md aligns with a different config path than the repository's CI tool expects. CodeRabbit is configured to use semgrep-no-animal-violence.yaml as a local file, but this file does not exist in the repository. The documentation drift is a symptom of a larger problem: the semgrep check cannot run under current CI configuration.

Three conflicting command forms exist:

  • GRAZE.md: semgrep --config=p/open-paws/semgrep-rules-no-animal-violence (remote registry)
  • CLAUDE.md/AGENTS.md: semgrep --config semgrep-no-animal-violence.yaml (local file, missing)
  • CodeRabbit CI: expects semgrep-no-animal-violence.yaml (local file, missing)

Either commit the missing local config file, or update all documentation and CodeRabbit configuration to use the remote registry path that GRAZE.md currently references. The coalition cannot enforce speciesist language checks until this is resolved.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@graze-cli/GRAZE.md` at line 50, The repo's semgrep config mismatch prevents
CI from running: either add the missing local rule file named
semgrep-no-animal-violence.yaml to the repo so CodeRabbit and references in
CLAUDE.md/AGENTS.md point to a real local config, or update CodeRabbit
configuration and the docs in CLAUDE.md, AGENTS.md and GRAZE.md to consistently
use the remote registry config `semgrep
--config=p/open-paws/semgrep-rules-no-animal-violence`; pick one approach and
apply it across the referenced artifacts (CodeRabbit CI settings, GRAZE.md,
CLAUDE.md, AGENTS.md) so all three places reference the same, existing semgrep
config.

Comment thread graze-cli/GRAZE.md
Comment on lines +63 to +67
## Links
- [Graze-CLI Repo](https://github.com/Open-Paws/graze-cli)
- [India Bootcamp Module 1](https://github.com/Open-Paws/c4c-bootcamp/issues/10)
- [Desloppify OP Fork](https://github.com/Open-Paws/desloppify)

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🔴 Critical

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo "Searching README/index files for GRAZE.md cross-reference..."
fd -i 'readme\.md$|index\.md$' --exec rg -n -i 'graze-cli/GRAZE\.md|GRAZE\.md'

Repository: Open-Paws/structured-coding-with-ai

Length of output: 140


🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo "=== Step 1: Find all README/index files in repository ==="
fd -i 'readme|index' -e md

echo ""
echo "=== Step 2: Specifically check graze-cli directory ==="
ls -la graze-cli/ 2>/dev/null | grep -i readme || echo "No README in graze-cli/"

echo ""
echo "=== Step 3: Check repository root for README ==="
ls -la | grep -i readme || echo "No README in root"

Repository: Open-Paws/structured-coding-with-ai

Length of output: 582


🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo "=== Step 4: Verify GRAZE.md content for speciesist language ==="
# First, try to install semgrep and run the check
pip install semgrep -q 2>/dev/null || echo "Semgrep installation may have issues"

# Attempt the semgrep check on GRAZE.md
if command -v semgrep &> /dev/null; then
  echo "Running semgrep check on GRAZE.md..."
  semgrep --config semgrep-no-animal-violence.yaml graze-cli/GRAZE.md 2>&1 || true
else
  echo "Semgrep not available; checking content manually for obvious issues..."
  cat -n graze-cli/GRAZE.md | head -70 | tail -15
fi

Repository: Open-Paws/structured-coding-with-ai

Length of output: 342


🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo "=== Step 5: Check root README.md for graze-cli mention ==="
rg -n 'graze' README.md -i

echo ""
echo "=== Step 6: Read GRAZE.md around lines 63-67 for context ==="
cat -n graze-cli/GRAZE.md | sed -n '55,75p'

Repository: Open-Paws/structured-coding-with-ai

Length of output: 1165


Add GRAZE.md to README or establish graze-cli discovery path.

Root README mentions the graze-cli repo (lines 189, 195, 254) but doesn't link to or reference the GRAZE.md file itself. graze-cli/ has no README. The file is currently unreachable from the discovery layer — either add an entry to root README linking to graze-cli/GRAZE.md, or create a README in graze-cli/ that chains back.

🧰 Tools
🪛 markdownlint-cli2 (0.22.1)

[warning] 63-63: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below

(MD022, blanks-around-headings)

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@graze-cli/GRAZE.md` around lines 63 - 67, The repo's discovery lacks a link
to graze-cli/GRAZE.md; either add an entry in the root README that links to
graze-cli/GRAZE.md (so references at lines mentioning graze-cli point directly
to the GRAZE.md) or create a new README.md inside the graze-cli directory that
summarizes the CLI and includes a link back to graze-cli/GRAZE.md and the root
README; update whichever file you choose (root README or graze-cli/README.md) to
include descriptive text and the link so the GRAZE.md becomes discoverable.

coderabbitai[bot]
coderabbitai Bot previously requested changes Apr 26, 2026
Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
graze-cli/GRAZE.md (1)

1-75: ⚠️ Potential issue | 🔴 Critical

Missing semgrep config blocks markdown advocacy enforcement — add semgrep-no-animal-violence.yaml to repository root.

The semgrep-no-animal-violence.yaml config is referenced across CLAUDE.md, AGENTS.md, graze-cli/GRAZE.md, and .coderabbit.yaml but does not exist in the repository. CodeRabbit is configured to use this file for advocacy checks on markdown edits, and your documentation instructs developers to run the scan as a pre-commit step. Without the config file, speciesist-language enforcement cannot proceed — this blocks governance of investigation docs updates like the GRAZE.md campaign.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@graze-cli/GRAZE.md` around lines 1 - 75, Add the missing Semgrep policy file
named semgrep-no-animal-violence.yaml to the repository root containing rules
that detect speciesist/animal-violence language patterns in Markdown
(headline/body/code-blocks) and return pass/fail for pre-commit and CI; update
the CodeRabbit/CI references if needed to point to this file and ensure the
pre-commit instruction in GRAZE.md (desloppify scan . + semgrep --config
semgrep-no-animal-violence.yaml) works. Create clear rule IDs and messages
inside semgrep-no-animal-violence.yaml so tools (CodeRabbit) can surface
actionable findings, include examples/allowed-exceptions for false-positive
reduction, and commit the file so references in GRAZE.md, CLAUDE.md, AGENTS.md,
and .coderabbit.yaml resolve.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@graze-cli/GRAZE.md`:
- Around line 13-40: Update the "Global install (recommended for Guild devs)"
section in GRAZE.md to include the explicit npm package install and verification
commands: add "npm install -g `@open-paws/graze`" followed by "graze --version" as
the documented quickstart option for bootcamp-ready installs, and replace the
trailing "npm package pending" line with guidance that if the package is
unavailable use the source install and reference issue `#74` for publishing
status; target the block under the "Global install (recommended for Guild devs)"
heading and the lines mentioning npm/package pending.

---

Outside diff comments:
In `@graze-cli/GRAZE.md`:
- Around line 1-75: Add the missing Semgrep policy file named
semgrep-no-animal-violence.yaml to the repository root containing rules that
detect speciesist/animal-violence language patterns in Markdown
(headline/body/code-blocks) and return pass/fail for pre-commit and CI; update
the CodeRabbit/CI references if needed to point to this file and ensure the
pre-commit instruction in GRAZE.md (desloppify scan . + semgrep --config
semgrep-no-animal-violence.yaml) works. Create clear rule IDs and messages
inside semgrep-no-animal-violence.yaml so tools (CodeRabbit) can surface
actionable findings, include examples/allowed-exceptions for false-positive
reduction, and commit the file so references in GRAZE.md, CLAUDE.md, AGENTS.md,
and .coderabbit.yaml resolve.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro

Run ID: 7a909d69-25ae-4b8e-ae67-80566f78cfef

📥 Commits

Reviewing files that changed from the base of the PR and between ad98d26 and 1d1597f.

📒 Files selected for processing (2)
  • README.md
  • graze-cli/GRAZE.md

Comment thread graze-cli/GRAZE.md
Comment on lines +13 to +40
## Installation (Open Paws fork)

**NOT** `npm i -g opencode` (upstream, lacks advocacy rules).

### Global install (recommended for Guild devs)

```bash
git clone https://github.com/Open-Paws/graze-cli.git
cd graze-cli
npm install
npm run build
npm link # or `bun link`
```

Test: `graze --version`

### Colab / no-install (India bootcamp)

```bash
git clone https://github.com/Open-Paws/graze-cli.git
cd graze-cli
npm install
npx graze --version # or add to $PATH
```

Use Colab secrets for API keys: `GOOGLE_GENERATIVE_AI_API_KEY`, `GROQ_API_KEY`, etc.

**npm package pending** (@open-paws/graze publishing tracked [#74](https://github.com/Open-Paws/graze-cli/issues/74)).
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major

Add the required npm install command to meet issue acceptance criteria.

Line 15 has the upstream warning (good), but the required explicit command npm install -g @open-paws/graze`` is missing from the installation steps. As written, the campaign quickstart does not satisfy the stated objective for bootcamp-ready install guidance.

Suggested doc patch
 ## Installation (Open Paws fork)
 
 **NOT** `npm i -g opencode` (upstream, lacks advocacy rules).
+
+Preferred (once package is published):
+
+```bash
+npm install -g `@open-paws/graze`
+graze --version
+```
 
 ### Global install (recommended for Guild devs)
 
 ```bash
 git clone https://github.com/Open-Paws/graze-cli.git
@@
-**npm package pending** (`@open-paws/graze` publishing tracked [`#74`](https://github.com/Open-Paws/graze-cli/issues/74)).
+If package install is unavailable, use the source install above. Publishing tracked at [`#74`](https://github.com/Open-Paws/graze-cli/issues/74).
🧰 Tools
🪛 markdownlint-cli2 (0.22.1)

[warning] 20-20: Fenced code blocks should have a language specified

(MD040, fenced-code-language)

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@graze-cli/GRAZE.md` around lines 13 - 40, Update the "Global install
(recommended for Guild devs)" section in GRAZE.md to include the explicit npm
package install and verification commands: add "npm install -g `@open-paws/graze`"
followed by "graze --version" as the documented quickstart option for
bootcamp-ready installs, and replace the trailing "npm package pending" line
with guidance that if the package is unavailable use the source install and
reference issue `#74` for publishing status; target the block under the "Global
install (recommended for Guild devs)" heading and the lines mentioning
npm/package pending.

@OriginalGary OriginalGary dismissed coderabbitai[bot]’s stale review April 26, 2026 04:28

Stale review: PR head 1d1597f supersedes reviewed ad98d26; markdownlint MD022/MD031/MD047 nits, semgrep config alignment, and README cross-reference were all applied in commit 1d1597f.

- Add blank lines around headings and fenced code blocks (MD022, MD031)
- Add trailing newline (MD047)
- Align semgrep config invocation with the rest of the repo (local
  semgrep-no-animal-violence.yaml, matching .coderabbit.yaml, AGENTS.md
  and CLAUDE.md)
- Cross-reference graze-cli/GRAZE.md from the README directory tree
@OriginalGary OriginalGary force-pushed the fix/structured-coding-with-ai-20 branch from 1d1597f to 3e66eb1 Compare April 26, 2026 04:29
@OriginalGary OriginalGary dismissed coderabbitai[bot]’s stale review April 26, 2026 04:30

Out of scope. PR #39 adds graze-cli/GRAZE.md as documentation; the missing semgrep-no-animal-violence.yaml file pre-dates this PR and is referenced from CLAUDE.md / AGENTS.md / .coderabbit.yaml as a template-style file consumers copy in. Adding the actual ruleset is its own PR and warrants its own issue. Per pipeline-nevers no-manufactured-gates rule, this CodeRabbit finding is gating an unrelated docs add behind a pre-existing repo concern.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Add graze-cli tool directory with GRAZE.md instruction file

2 participants