3.9 KiB
name, description
| name | description |
|---|---|
| steward-steering | Critical project steering rules for Steward development. Prevents accidental commits of sensitive files and ensures git pushes are explicitly approved before executing. |
Steward Project Steering
This skill enforces critical guardrails for working on the Steward project. Follow these rules strictly.
Rule 1: Never Commit Sensitive Files
Files That Must NEVER Be Committed to Git
These files contain secrets, tokens, API keys, or personal configuration:
mcp.json- Contains MCP server tokens and credentials.env- Contains environment variables with secretsconfig.yaml- If it contains actual (non-example) values with secrets- Any file containing: API keys, tokens, passwords, private URLs, auth credentials
Files That ARE Safe to Commit
.env.example- Template showing which env vars are needed (no actual values)mcp.json.example- Template showing MCP structure (no actual tokens)config.example.yaml- Template/example configuration (no real values)CONFIGURATION.md- Documentation- Source code, tests, docker-compose templates
Before Committing
- Run
git statusand review all staged files - For each file, ask: "Does this contain secrets, tokens, or sensitive config?"
- If YES: Do NOT commit it. Either:
- Remove it from staging:
git reset <file> - Add it to
.gitignoreif not already there - Create an
.exampleversion without secrets
- Remove it from staging:
- If NO: Safe to commit
If You Accidentally Commit Secrets
Do NOT try to fix with git filter-repo or history rewrites. Instead:
- Tell the user immediately
- User must manually rotate/revoke any compromised tokens
- Use
git rm --cached <file>to stop tracking it - Add to
.gitignore - Amend the commit or create a new one
- Force push to origin only if the branch hasn't been merged to main
Rule 2: Git Push Requires Explicit Approval
When You Can Commit WITHOUT Approval
You can commit to the current branch anytime (this is local, safe):
git add <files>
git commit -m "message"
When You MUST Ask Before Pushing
Any git push command requires explicit user approval first:
-
Tell the user:
Ready to push branch feature/my-feature to origin. Should I proceed? -
Wait for user to explicitly say "yes" or "push it" (or equivalent approval)
-
Only then execute:
git push origin feature/my-feature
Exceptions (No Approval Needed)
git push --tagsto push individual tags (assuming the tag commit is already approved)- Tags that point to already-approved commits
Why This Rule Exists
- Git pushes are permanent and trigger CI/CD
- Force pushes rewrite history
- Accidental pushes before review waste CI resources
- Better to ask than regret
Rule 3: Use .gitignore for Sensitive Patterns
When sensitive files are generated locally (like mcp.json, .env), ensure they're in .gitignore:
# .gitignore
mcp.json # Actual config with secrets
.env # Local environment file
config.yaml # If it contains real values
Then create .example versions:
mcp.json.example # Template with placeholders
.env.example # Shows required variables
config.example.yaml # Shows structure
Users copy: cp mcp.json.example mcp.json then edit locally.
Checklist Before Each Push
- All staged files reviewed for secrets
.gitignoreincludes sensitive files.examplefiles created where needed- All tests pass (
pytest) - Ruff checks pass (
ruff check) - Commit messages follow conventional commits
- User has explicitly approved the push
When Unsure
If you're unsure whether a file should be committed:
- Ask the user
- Error on the side of caution (don't commit)
- Create an
.exampleversion instead
This is a low-cost insurance policy against leaking secrets.