Compare commits
19 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 0bc6365a8e | |||
| a7eaa00323 | |||
| 5b1ff3ee35 | |||
| f1c5d4a7dc | |||
| 6e3ea1a3b4 | |||
| f47c7cdc3a | |||
| 63b2747995 | |||
| a705117b05 | |||
| 99d8ef7821 | |||
| 75e54432fa | |||
| 44f00a1512 | |||
| 2b63b25e45 | |||
| a653f30a21 | |||
| f22d0aaf19 | |||
| 478df0b75d | |||
| af7de2a618 | |||
| b4be9d402d | |||
| 8b25f234aa | |||
| b7fe62b48c |
@@ -0,0 +1,11 @@
|
||||
{
|
||||
"mcpServers": {
|
||||
"gitea": {
|
||||
"type": "http",
|
||||
"url": "https://git-mcp.farh.net/mcp",
|
||||
"headers": {
|
||||
"Authorization": "Bearer ${GITEA_TOKEN}"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
+123
@@ -0,0 +1,123 @@
|
||||
# Contributing to CartSnitch Organization
|
||||
|
||||
This document outlines the process for making changes to the `.github` organization repository.
|
||||
|
||||
## When to Modify This Repository
|
||||
|
||||
Changes to this repository are appropriate for:
|
||||
|
||||
- Adding or updating organization profile content (`profile/README.md`)
|
||||
- Adding new agents or modifying existing agent configurations
|
||||
- Adding, removing, or updating shared skills
|
||||
- Modifying Renovate configuration
|
||||
- Updating company metadata
|
||||
- Adding documentation about organization-wide practices
|
||||
|
||||
## When NOT to Modify This Repository
|
||||
|
||||
Do NOT use this repository for:
|
||||
|
||||
- Application code changes (use the appropriate application repository)
|
||||
- Infrastructure changes (use `cartsnitch/infra`)
|
||||
- Documentation for specific applications (add to the application's repo)
|
||||
|
||||
## Change Process
|
||||
|
||||
### 1. Create a Branch
|
||||
|
||||
Create a feature branch from `main`:
|
||||
|
||||
```bash
|
||||
git checkout main
|
||||
git pull origin main
|
||||
git checkout -b feature/your-change-name
|
||||
```
|
||||
|
||||
### 2. Make Your Changes
|
||||
|
||||
Make the necessary changes following the guidelines below.
|
||||
|
||||
#### Adding a New Agent
|
||||
|
||||
1. Create a new folder in `company/agents/<agent-name>/`
|
||||
2. Add the agent configuration to `company/.paperclip.yaml`
|
||||
3. Create at minimum:
|
||||
- `AGENTS.md` - Agent instructions and role definition
|
||||
- `MEMORY.md` - Initial memory/knowledge base (can start empty)
|
||||
|
||||
#### Adding a New Skill
|
||||
|
||||
1. Create or identify the appropriate `company/skills/<source>/` folder
|
||||
2. Add the skill definition to `company/.paperclip.yaml`
|
||||
3. Ensure skill files exist in the appropriate subdirectory
|
||||
|
||||
#### Updating Organization Profile
|
||||
|
||||
1. Edit `profile/README.md`
|
||||
2. Ensure any new links are valid
|
||||
3. Maintain consistent formatting
|
||||
|
||||
### 3. Commit Your Changes
|
||||
|
||||
Commit with a clear, descriptive message:
|
||||
|
||||
```bash
|
||||
git add .
|
||||
git commit -m "Add <agent-name> agent configuration"
|
||||
```
|
||||
|
||||
### 4. Submit a Pull Request
|
||||
|
||||
Open a PR against `main`:
|
||||
|
||||
```bash
|
||||
git push origin feature/your-change-name
|
||||
gh pr create --base main --title "Add <agent-name> agent" --body "Description of changes"
|
||||
```
|
||||
|
||||
### 5. Review and Merge
|
||||
|
||||
- PRs require approval from the CTO (Savannah Savings) or CEO (Coupon Carl)
|
||||
- After approval, the PR can be merged
|
||||
- Merges to `main` are automatically deployed to the organization
|
||||
|
||||
## Guidelines
|
||||
|
||||
### Agent Naming
|
||||
|
||||
- Use kebab-case for agent names (e.g., `barcode-betty`, `checkout-charlie`)
|
||||
- Agent names should be descriptive of the role
|
||||
|
||||
### Agent Configuration
|
||||
|
||||
When adding or updating agents in `.paperclip.yaml`:
|
||||
|
||||
- Include a clear `capabilities` description
|
||||
- Set appropriate `icon` for the UI
|
||||
- Configure heartbeat settings appropriately for the role:
|
||||
- Engineers/QA: 14400 seconds (4 hours)
|
||||
- CEO: 28800 seconds (8 hours)
|
||||
- UAT (Deal Dottie): 300 seconds (5 minutes) for rapid response
|
||||
|
||||
### Paperclip Configuration Schema
|
||||
|
||||
The `.paperclip.yaml` uses schema version `paperclip/v1`. When editing:
|
||||
|
||||
- Ensure valid YAML syntax
|
||||
- Follow the existing structure and conventions
|
||||
- Include all required fields for agent definitions
|
||||
|
||||
### Skill Documentation
|
||||
|
||||
When adding new skills:
|
||||
|
||||
- Ensure the skill folder contains a `SKILL.md` file
|
||||
- Include a brief description of the skill's purpose
|
||||
- Reference the external source if applicable
|
||||
|
||||
## Contacts
|
||||
|
||||
For questions about this repository or the change process:
|
||||
|
||||
- **CTO (Savannah Savings)**: Technical decisions, agent configuration
|
||||
- **CEO (Coupon Carl)**: Organizational decisions, high-level direction
|
||||
@@ -0,0 +1,116 @@
|
||||
# CartSnitch Organization Repository
|
||||
|
||||
This is the [CartSnitch](https://github.com/cartsnitch) organization health repository. It contains organization-wide configuration, company metadata, agent definitions, and shared skills.
|
||||
|
||||
## Repository Purpose
|
||||
|
||||
- **Organization Profile**: Public-facing profile at `profile/README.md`
|
||||
- **Company Metadata**: Internal company information at `company/`
|
||||
- **Agent Definitions**: Paperclip agent configurations at `company/agents/`
|
||||
- **Shared Skills**: Reusable skills at `company/skills/`
|
||||
- **Dependency Management**: Renovate configuration at `renovate-config.json`
|
||||
|
||||
## Folder Structure
|
||||
|
||||
```
|
||||
.github/
|
||||
├── profile/
|
||||
│ ├── README.md # Organization public profile (shown on github.com/cartsnitch)
|
||||
│ └── cartsnitch-logo.png # Organization logo
|
||||
├── company/
|
||||
│ ├── README.md # Company overview and agent/skill inventory
|
||||
│ ├── .paperclip.yaml # Paperclip configuration (agents, skills, company settings)
|
||||
│ ├── agents/ # Per-agent configuration and instructions
|
||||
│ │ ├── <agent-name>/
|
||||
│ │ │ ├── AGENTS.md # Agent-specific instructions
|
||||
│ │ │ ├── MEMORY.md # Agent memory/knowledge base
|
||||
│ │ │ └── ... # Agent-specific files (life/, memory/, etc.)
|
||||
│ └── skills/ # Shared skill definitions
|
||||
│ ├── farhoodliquor/ # Third-party skills (playwright-ephemeral, shannon, github-app-token)
|
||||
│ ├── fluxcd/ # Flux CD skills (gitops-knowledge, gitops-repo-audit)
|
||||
│ ├── minimax-ai/ # MiniMax AI skills
|
||||
│ └── paperclipai/ # Paperclip platform skills (paperclip, para-memory-files, etc.)
|
||||
├── renovate-config.json # Renovate dependency update configuration
|
||||
└── cartsnitch-logo.png # Organization logo (also in profile/)
|
||||
```
|
||||
|
||||
## Key Components
|
||||
|
||||
### Organization Profile (`profile/`)
|
||||
|
||||
The `profile/README.md` is displayed on the CartSnitch GitHub organization page at https://github.com/cartsnitch. It includes:
|
||||
- Organization branding and logo
|
||||
- Links to key repositories
|
||||
- Tech stack overview
|
||||
- Getting started information for developers
|
||||
|
||||
### Paperclip Configuration (`company/.paperclip.yaml`)
|
||||
|
||||
This file defines:
|
||||
- All agents in the CartSnitch organization (role, capabilities, adapter config, runtime settings)
|
||||
- Company branding settings (brand color, logo)
|
||||
- Agent sidebar ordering
|
||||
|
||||
### Agent Definitions (`company/agents/`)
|
||||
|
||||
Each agent has its own folder containing:
|
||||
- `AGENTS.md` - Agent-specific instructions and role definition
|
||||
- `MEMORY.md` - Agent's persistent knowledge base
|
||||
- Additional agent-specific files (heartbeat configs, github settings, etc.)
|
||||
|
||||
### Skills (`company/skills/`)
|
||||
|
||||
Shared skills are organized by source:
|
||||
- `farhoodliquor/` - Third-party skills from Farhood Liquor
|
||||
- `fluxcd/` - Flux CD operational skills
|
||||
- `minimax-ai/` - MiniMax AI capabilities
|
||||
- `paperclipai/` - Paperclip platform skills
|
||||
|
||||
## Maintenance
|
||||
|
||||
### Updating Agent Configurations
|
||||
|
||||
Agent configurations are defined in `company/.paperclip.yaml`. To update an agent:
|
||||
|
||||
1. Edit the agent section in `.paperclip.yaml`
|
||||
2. Update the agent's `AGENTS.md` file if role/capabilities changed
|
||||
3. Submit changes via PR following the contribution guidelines
|
||||
|
||||
### Adding New Agents
|
||||
|
||||
New agents should be added to `company/.paperclip.yaml` with:
|
||||
- Unique agent name
|
||||
- Role (engineer, qa, ceo, cto, cmo)
|
||||
- Icon selection
|
||||
- Capabilities description
|
||||
- Adapter configuration
|
||||
- Runtime settings (heartbeat interval, max concurrent runs)
|
||||
- Required environment inputs
|
||||
|
||||
### Managing Skills
|
||||
|
||||
Skills are imported from external sources:
|
||||
- `paperclipai/*` skills are sourced from the Paperclip repository
|
||||
- `fluxcd/*` skills are sourced from the Flux CD agent-skills repository
|
||||
- `farhoodliquor/*` skills are sourced from Farhood Liquor skills repository
|
||||
- `minimax-ai/*` skills are sourced from MiniMax AI skills repository
|
||||
|
||||
To add or update a skill, edit `company/.paperclip.yaml` and ensure the skill files exist in the appropriate `company/skills/` subdirectory.
|
||||
|
||||
### Renovate Configuration
|
||||
|
||||
The `renovate-config.json` defines dependency update behavior for all CartSnitch repositories. Updates are automated via Mend Renovate with:
|
||||
- Weekly schedule (Monday before 7am)
|
||||
- Auto-merge enabled for minor/patch updates
|
||||
- Manual review required for major updates
|
||||
- Grouped updates for related packages (ESLint, TypeScript, testing, Docker, Kubernetes)
|
||||
|
||||
## Related Repositories
|
||||
|
||||
| Repository | Purpose |
|
||||
|------------|---------|
|
||||
| [cartsnitch](https://github.com/cartsnitch/cartsnitch) | Main application and consumer interface |
|
||||
| [api](https://github.com/cartsnitch/api) | Backend API and services |
|
||||
| [common](https://github.com/cartsnitch/common) | Shared libraries and utilities |
|
||||
| [infra](https://github.com/cartsnitch/infra) | Infrastructure and deployment |
|
||||
| [receiptwitness](https://github.com/cartsnitch/receiptwitness) | Receipt parsing and processing |
|
||||
+157
-71
@@ -6,24 +6,19 @@ agents:
|
||||
capabilities: "Principal engineer responsible for core product engineering. Designs and implements features that help consumers maximize grocery savings."
|
||||
adapter:
|
||||
config:
|
||||
dangerouslySkipPermissions: true
|
||||
model: "minimax/MiniMax-M2.7"
|
||||
graceSec: 15
|
||||
serviceAccountName: "cartsnitch-developer"
|
||||
timeoutSec: 3600
|
||||
type: "opencode_local"
|
||||
type: "claude_k8s"
|
||||
runtime:
|
||||
heartbeat:
|
||||
enabled: true
|
||||
intervalSec: 14400
|
||||
maxConcurrentRuns: 1
|
||||
inputs:
|
||||
env:
|
||||
AGENT_HOME:
|
||||
description: "Optional default for AGENT_HOME on agent barcode-betty"
|
||||
kind: "plain"
|
||||
default: "/paperclip/instances/default/companies/52204f8e-f1cc-4f45-b5bf-455ccefee08d/agents/71f37521-8e62-4d27-bd9c-cfd52b5b3a07/instructions"
|
||||
portability: "system_dependent"
|
||||
requirement: "optional"
|
||||
ANTHROPIC_AUTH_TOKEN:
|
||||
description: "Optional default for ANTHROPIC_AUTH_TOKEN on agent barcode-betty"
|
||||
description: "Provide ANTHROPIC_AUTH_TOKEN for agent barcode-betty"
|
||||
kind: "secret"
|
||||
default: ""
|
||||
requirement: "optional"
|
||||
@@ -32,11 +27,41 @@ agents:
|
||||
kind: "plain"
|
||||
default: "https://api.minimax.io/anthropic"
|
||||
requirement: "optional"
|
||||
ANTHROPIC_DEFAULT_HAIKU_MODEL:
|
||||
description: "Optional default for ANTHROPIC_DEFAULT_HAIKU_MODEL on agent barcode-betty"
|
||||
kind: "plain"
|
||||
default: "MiniMax-M2.7"
|
||||
requirement: "optional"
|
||||
ANTHROPIC_DEFAULT_OPUS_MODEL:
|
||||
description: "Optional default for ANTHROPIC_DEFAULT_OPUS_MODEL on agent barcode-betty"
|
||||
kind: "plain"
|
||||
default: "MiniMax-M2.7"
|
||||
requirement: "optional"
|
||||
ANTHROPIC_DEFAULT_SONNET_MODEL:
|
||||
description: "Optional default for ANTHROPIC_DEFAULT_SONNET_MODEL on agent barcode-betty"
|
||||
kind: "plain"
|
||||
default: "MiniMax-M2.7"
|
||||
requirement: "optional"
|
||||
ANTHROPIC_MODEL:
|
||||
description: "Optional default for ANTHROPIC_MODEL on agent barcode-betty"
|
||||
kind: "plain"
|
||||
default: "MiniMax-M2.7"
|
||||
requirement: "optional"
|
||||
ANTHROPIC_SMALL_FAST_MODEL:
|
||||
description: "Optional default for ANTHROPIC_SMALL_FAST_MODEL on agent barcode-betty"
|
||||
kind: "plain"
|
||||
default: "MiniMax-M2.7"
|
||||
requirement: "optional"
|
||||
API_TIMEOUT_MS:
|
||||
description: "Optional default for API_TIMEOUT_MS on agent barcode-betty"
|
||||
kind: "plain"
|
||||
default: "3000000"
|
||||
requirement: "optional"
|
||||
CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC:
|
||||
description: "Optional default for CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC on agent barcode-betty"
|
||||
kind: "plain"
|
||||
default: "1"
|
||||
requirement: "optional"
|
||||
GITHUB_APP_ID:
|
||||
description: "Optional default for GITHUB_APP_ID on agent barcode-betty"
|
||||
kind: "plain"
|
||||
@@ -53,30 +78,30 @@ agents:
|
||||
default: "/secrets/cartsnitch/cartsnitch-engineer.pem"
|
||||
portability: "system_dependent"
|
||||
requirement: "optional"
|
||||
HOME:
|
||||
description: "Optional default for HOME on agent barcode-betty"
|
||||
kind: "plain"
|
||||
default: "$AGENT_HOME"
|
||||
requirement: "optional"
|
||||
checkout-charlie:
|
||||
role: "qa"
|
||||
icon: "bug"
|
||||
capabilities: "Senior QA engineer responsible for test strategy, quality assurance, and release validation. Ensures the product reliably delivers value to grocery shoppers."
|
||||
adapter:
|
||||
config:
|
||||
dangerouslySkipPermissions: true
|
||||
model: "minimax/MiniMax-M2.7"
|
||||
graceSec: 15
|
||||
serviceAccountName: "cartsnitch-developer"
|
||||
timeoutSec: 3600
|
||||
type: "opencode_local"
|
||||
type: "claude_k8s"
|
||||
runtime:
|
||||
heartbeat:
|
||||
enabled: true
|
||||
intervalSec: 14400
|
||||
maxConcurrentRuns: 1
|
||||
inputs:
|
||||
env:
|
||||
AGENT_HOME:
|
||||
description: "Optional default for AGENT_HOME on agent checkout-charlie"
|
||||
kind: "plain"
|
||||
default: "/paperclip/instances/default/companies/52204f8e-f1cc-4f45-b5bf-455ccefee08d/agents/b8b294e3-a12d-4bff-b321-6f020792b21c/instructions"
|
||||
portability: "system_dependent"
|
||||
requirement: "optional"
|
||||
ANTHROPIC_AUTH_TOKEN:
|
||||
description: "Optional default for ANTHROPIC_AUTH_TOKEN on agent checkout-charlie"
|
||||
description: "Provide ANTHROPIC_AUTH_TOKEN for agent checkout-charlie"
|
||||
kind: "secret"
|
||||
default: ""
|
||||
requirement: "optional"
|
||||
@@ -85,11 +110,41 @@ agents:
|
||||
kind: "plain"
|
||||
default: "https://api.minimax.io/anthropic"
|
||||
requirement: "optional"
|
||||
ANTHROPIC_DEFAULT_HAIKU_MODEL:
|
||||
description: "Optional default for ANTHROPIC_DEFAULT_HAIKU_MODEL on agent checkout-charlie"
|
||||
kind: "plain"
|
||||
default: "MiniMax-M2.7"
|
||||
requirement: "optional"
|
||||
ANTHROPIC_DEFAULT_OPUS_MODEL:
|
||||
description: "Optional default for ANTHROPIC_DEFAULT_OPUS_MODEL on agent checkout-charlie"
|
||||
kind: "plain"
|
||||
default: "MiniMax-M2.7"
|
||||
requirement: "optional"
|
||||
ANTHROPIC_DEFAULT_SONNET_MODEL:
|
||||
description: "Optional default for ANTHROPIC_DEFAULT_SONNET_MODEL on agent checkout-charlie"
|
||||
kind: "plain"
|
||||
default: "MiniMax-M2.7"
|
||||
requirement: "optional"
|
||||
ANTHROPIC_MODEL:
|
||||
description: "Optional default for ANTHROPIC_MODEL on agent checkout-charlie"
|
||||
kind: "plain"
|
||||
default: "MiniMax-M2.7"
|
||||
requirement: "optional"
|
||||
ANTHROPIC_SMALL_FAST_MODEL:
|
||||
description: "Optional default for ANTHROPIC_SMALL_FAST_MODEL on agent checkout-charlie"
|
||||
kind: "plain"
|
||||
default: "MiniMax-M2.7"
|
||||
requirement: "optional"
|
||||
API_TIMEOUT_MS:
|
||||
description: "Optional default for API_TIMEOUT_MS on agent checkout-charlie"
|
||||
kind: "plain"
|
||||
default: "3000000"
|
||||
requirement: "optional"
|
||||
CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC:
|
||||
description: "Optional default for CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC on agent checkout-charlie"
|
||||
kind: "plain"
|
||||
default: "1"
|
||||
requirement: "optional"
|
||||
GITHUB_APP_ID:
|
||||
description: "Optional default for GITHUB_APP_ID on agent checkout-charlie"
|
||||
kind: "plain"
|
||||
@@ -106,17 +161,21 @@ agents:
|
||||
default: "/secrets/cartsnitch/cartsnitch-qa.pem"
|
||||
portability: "system_dependent"
|
||||
requirement: "optional"
|
||||
HOME:
|
||||
description: "Optional default for HOME on agent checkout-charlie"
|
||||
kind: "plain"
|
||||
default: "$AGENT_HOME"
|
||||
requirement: "optional"
|
||||
coupon-carl:
|
||||
role: "ceo"
|
||||
icon: "crown"
|
||||
adapter:
|
||||
config:
|
||||
dangerouslySkipPermissions: true
|
||||
effort: "high"
|
||||
maxTurnsPerRun: 300
|
||||
model: "claude-opus-4-6"
|
||||
graceSec: 15
|
||||
model: "claude-sonnet-4-6"
|
||||
serviceAccountName: "cartsnitch-developer"
|
||||
timeoutSec: 3600
|
||||
type: "claude_local"
|
||||
type: "claude_k8s"
|
||||
runtime:
|
||||
heartbeat:
|
||||
intervalSec: 28800
|
||||
@@ -125,12 +184,6 @@ agents:
|
||||
canCreateAgents: true
|
||||
inputs:
|
||||
env:
|
||||
AGENT_HOME:
|
||||
description: "Optional default for AGENT_HOME on agent coupon-carl"
|
||||
kind: "plain"
|
||||
default: "/paperclip/instances/default/companies/52204f8e-f1cc-4f45-b5bf-455ccefee08d/agents/f2395b62-cb26-4595-b026-d506fde1c2c1/instructions"
|
||||
portability: "system_dependent"
|
||||
requirement: "optional"
|
||||
GITHUB_APP_ID:
|
||||
description: "Optional default for GITHUB_APP_ID on agent coupon-carl"
|
||||
kind: "plain"
|
||||
@@ -147,29 +200,30 @@ agents:
|
||||
default: "/secrets/cartsnitch/cartsnitch-ceo.pem"
|
||||
portability: "system_dependent"
|
||||
requirement: "optional"
|
||||
HOME:
|
||||
description: "Optional default for HOME on agent coupon-carl"
|
||||
kind: "plain"
|
||||
default: "$AGENT_HOME"
|
||||
requirement: "optional"
|
||||
deal-dottie:
|
||||
role: "qa"
|
||||
icon: "microscope"
|
||||
capabilities: "User Acceptance Tester — validates features from an end-user perspective using browser automation before anything reaches production"
|
||||
adapter:
|
||||
config:
|
||||
model: "claude-sonnet-4-6"
|
||||
graceSec: 15
|
||||
serviceAccountName: "cartsnitch-developer"
|
||||
timeoutSec: 3600
|
||||
type: "claude_local"
|
||||
type: "claude_k8s"
|
||||
runtime:
|
||||
heartbeat:
|
||||
intervalSec: 300
|
||||
enabled: true
|
||||
intervalSec: 14400
|
||||
maxConcurrentRuns: 1
|
||||
inputs:
|
||||
env:
|
||||
AGENT_HOME:
|
||||
description: "Optional default for AGENT_HOME on agent deal-dottie"
|
||||
kind: "plain"
|
||||
default: "/paperclip/instances/default/companies/52204f8e-f1cc-4f45-b5bf-455ccefee08d/agents/ff0b8079-5823-4c4f-ad40-6a5147246594/instructions"
|
||||
portability: "system_dependent"
|
||||
requirement: "optional"
|
||||
ANTHROPIC_AUTH_TOKEN:
|
||||
description: "Optional default for ANTHROPIC_AUTH_TOKEN on agent deal-dottie"
|
||||
description: "Provide ANTHROPIC_AUTH_TOKEN for agent deal-dottie"
|
||||
kind: "secret"
|
||||
default: ""
|
||||
requirement: "optional"
|
||||
@@ -229,29 +283,28 @@ agents:
|
||||
default: "/secrets/cartsnitch/cartsnitch-qa.pem"
|
||||
portability: "system_dependent"
|
||||
requirement: "optional"
|
||||
HOME:
|
||||
description: "Optional default for HOME on agent deal-dottie"
|
||||
kind: "plain"
|
||||
default: "$AGENT_HOME"
|
||||
requirement: "optional"
|
||||
markdown-martha:
|
||||
role: "cmo"
|
||||
icon: "target"
|
||||
capabilities: "Leads all marketing initiatives, brand, content, and customer research. Owns public messaging, market positioning, and product strategy for CartSnitch. First gate for all feature requests — reviews and accepts, backlogs, or denies incoming product requests before they reach engineering."
|
||||
adapter:
|
||||
config:
|
||||
dangerouslySkipPermissions: true
|
||||
maxTurnsPerRun: 300
|
||||
graceSec: 15
|
||||
model: "claude-haiku-4-5-20251001"
|
||||
serviceAccountName: "cartsnitch-developer"
|
||||
timeoutSec: 3600
|
||||
type: "claude_local"
|
||||
type: "claude_k8s"
|
||||
runtime:
|
||||
heartbeat:
|
||||
intervalSec: 14400
|
||||
maxConcurrentRuns: 1
|
||||
inputs:
|
||||
env:
|
||||
AGENT_HOME:
|
||||
description: "Optional default for AGENT_HOME on agent markdown-martha"
|
||||
kind: "plain"
|
||||
default: "/paperclip/instances/default/companies/52204f8e-f1cc-4f45-b5bf-455ccefee08d/agents/9becc57b-c4a8-4420-9f73-c037ba26b410/instructions"
|
||||
portability: "system_dependent"
|
||||
requirement: "optional"
|
||||
GITHUB_APP_ID:
|
||||
description: "Optional default for GITHUB_APP_ID on agent markdown-martha"
|
||||
kind: "plain"
|
||||
@@ -268,13 +321,18 @@ agents:
|
||||
default: "/secrets/cartsnitch/cartsnitch-engineer.pem"
|
||||
portability: "system_dependent"
|
||||
requirement: "optional"
|
||||
HOME:
|
||||
description: "Optional default for HOME on agent markdown-martha"
|
||||
kind: "plain"
|
||||
default: "$AGENT_HOME"
|
||||
requirement: "optional"
|
||||
MINIMAX_API_HOST:
|
||||
description: "Optional default for MINIMAX_API_HOST on agent markdown-martha"
|
||||
kind: "plain"
|
||||
default: "https://api.minimax.io"
|
||||
requirement: "optional"
|
||||
MINIMAX_API_KEY:
|
||||
description: "Optional default for MINIMAX_API_KEY on agent markdown-martha"
|
||||
description: "Provide MINIMAX_API_KEY for agent markdown-martha"
|
||||
kind: "secret"
|
||||
default: ""
|
||||
requirement: "optional"
|
||||
@@ -284,23 +342,17 @@ agents:
|
||||
capabilities: "Owns technical roadmap, system architecture, engineering execution, and code quality. First engineer. Builds the product that helps consumers get the most value from grocery spending."
|
||||
adapter:
|
||||
config:
|
||||
dangerouslySkipPermissions: true
|
||||
maxTurnsPerRun: 300
|
||||
graceSec: 15
|
||||
model: "claude-opus-4-6"
|
||||
serviceAccountName: "cartsnitch-developer"
|
||||
timeoutSec: 3600
|
||||
type: "claude_local"
|
||||
type: "claude_k8s"
|
||||
runtime:
|
||||
heartbeat:
|
||||
intervalSec: 14400
|
||||
maxConcurrentRuns: 1
|
||||
inputs:
|
||||
env:
|
||||
AGENT_HOME:
|
||||
description: "Optional default for AGENT_HOME on agent savannah-savings"
|
||||
kind: "plain"
|
||||
default: "/paperclip/instances/default/companies/52204f8e-f1cc-4f45-b5bf-455ccefee08d/agents/22731e25-f40f-48bd-a16e-28e1bbef5946/instructions"
|
||||
portability: "system_dependent"
|
||||
requirement: "optional"
|
||||
GITHUB_APP_ID:
|
||||
description: "Optional default for GITHUB_APP_ID on agent savannah-savings"
|
||||
kind: "plain"
|
||||
@@ -317,30 +369,29 @@ agents:
|
||||
default: "/secrets/cartsnitch/cartsnitch-cto.pem"
|
||||
portability: "system_dependent"
|
||||
requirement: "optional"
|
||||
HOME:
|
||||
description: "Optional default for HOME on agent savannah-savings"
|
||||
kind: "plain"
|
||||
default: "$AGENT_HOME"
|
||||
requirement: "optional"
|
||||
stockboy-steve:
|
||||
role: "engineer"
|
||||
icon: "shield"
|
||||
capabilities: "Security engineer responsible for security code review in the SDLC and scheduled penetration testing against Prod/Demo. Board-authorized for offensive security analysis of the CartSnitch production and demo environments."
|
||||
adapter:
|
||||
config:
|
||||
dangerouslySkipPermissions: true
|
||||
model: "minimax/MiniMax-M2.7"
|
||||
graceSec: 15
|
||||
serviceAccountName: "cartsnitch-developer"
|
||||
timeoutSec: 3600
|
||||
type: "opencode_local"
|
||||
type: "claude_k8s"
|
||||
runtime:
|
||||
heartbeat:
|
||||
intervalSec: 14400
|
||||
maxConcurrentRuns: 1
|
||||
inputs:
|
||||
env:
|
||||
AGENT_HOME:
|
||||
description: "Optional default for AGENT_HOME on agent stockboy-steve"
|
||||
kind: "plain"
|
||||
default: "/paperclip/instances/default/companies/52204f8e-f1cc-4f45-b5bf-455ccefee08d/agents/01dfbf79-c93d-4224-a7d9-05b2779e425e/instructions"
|
||||
portability: "system_dependent"
|
||||
requirement: "optional"
|
||||
ANTHROPIC_AUTH_TOKEN:
|
||||
description: "Optional default for ANTHROPIC_AUTH_TOKEN on agent stockboy-steve"
|
||||
description: "Provide ANTHROPIC_AUTH_TOKEN for agent stockboy-steve"
|
||||
kind: "secret"
|
||||
default: ""
|
||||
requirement: "optional"
|
||||
@@ -349,11 +400,41 @@ agents:
|
||||
kind: "plain"
|
||||
default: "https://api.minimax.io/anthropic"
|
||||
requirement: "optional"
|
||||
ANTHROPIC_DEFAULT_HAIKU_MODEL:
|
||||
description: "Optional default for ANTHROPIC_DEFAULT_HAIKU_MODEL on agent stockboy-steve"
|
||||
kind: "plain"
|
||||
default: "MiniMax-M2.7"
|
||||
requirement: "optional"
|
||||
ANTHROPIC_DEFAULT_OPUS_MODEL:
|
||||
description: "Optional default for ANTHROPIC_DEFAULT_OPUS_MODEL on agent stockboy-steve"
|
||||
kind: "plain"
|
||||
default: "MiniMax-M2.7"
|
||||
requirement: "optional"
|
||||
ANTHROPIC_DEFAULT_SONNET_MODEL:
|
||||
description: "Optional default for ANTHROPIC_DEFAULT_SONNET_MODEL on agent stockboy-steve"
|
||||
kind: "plain"
|
||||
default: "MiniMax-M2.7"
|
||||
requirement: "optional"
|
||||
ANTHROPIC_MODEL:
|
||||
description: "Optional default for ANTHROPIC_MODEL on agent stockboy-steve"
|
||||
kind: "plain"
|
||||
default: "MiniMax-M2.7"
|
||||
requirement: "optional"
|
||||
ANTHROPIC_SMALL_FAST_MODEL:
|
||||
description: "Optional default for ANTHROPIC_SMALL_FAST_MODEL on agent stockboy-steve"
|
||||
kind: "plain"
|
||||
default: "MiniMax-M2.7"
|
||||
requirement: "optional"
|
||||
API_TIMEOUT_MS:
|
||||
description: "Optional default for API_TIMEOUT_MS on agent stockboy-steve"
|
||||
kind: "plain"
|
||||
default: "3000000"
|
||||
requirement: "optional"
|
||||
CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC:
|
||||
description: "Optional default for CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC on agent stockboy-steve"
|
||||
kind: "plain"
|
||||
default: "1"
|
||||
requirement: "optional"
|
||||
GITHUB_APP_ID:
|
||||
description: "Optional default for GITHUB_APP_ID on agent stockboy-steve"
|
||||
kind: "plain"
|
||||
@@ -370,6 +451,11 @@ agents:
|
||||
default: "/secrets/cartsnitch/cartsnitch-engineer.pem"
|
||||
portability: "system_dependent"
|
||||
requirement: "optional"
|
||||
HOME:
|
||||
description: "Optional default for HOME on agent stockboy-steve"
|
||||
kind: "plain"
|
||||
default: "$AGENT_HOME"
|
||||
requirement: "optional"
|
||||
company:
|
||||
brandColor: "#0061ff"
|
||||
logoPath: "images/company-logo.png"
|
||||
@@ -381,4 +467,4 @@ sidebar:
|
||||
- "barcode-betty"
|
||||
- "checkout-charlie"
|
||||
- "deal-dottie"
|
||||
- "stockboy-steve"
|
||||
- "stockboy-steve"
|
||||
+1
-1
@@ -55,4 +55,4 @@ pnpm paperclipai company import this-github-url-or-folder
|
||||
See [Paperclip](https://paperclip.ing) for more information.
|
||||
|
||||
---
|
||||
Exported from [Paperclip](https://paperclip.ing) on 2026-04-15
|
||||
Exported from [Paperclip](https://paperclip.ing) on 2026-04-21
|
||||
@@ -2,17 +2,6 @@
|
||||
name: "Barcode Betty"
|
||||
title: "Principal Engineer"
|
||||
reportsTo: "savannah-savings"
|
||||
skills:
|
||||
- "paperclipai/paperclip/paperclip"
|
||||
- "paperclipai/paperclip/paperclip-create-agent"
|
||||
- "paperclipai/paperclip/paperclip-create-plugin"
|
||||
- "paperclipai/paperclip/para-memory-files"
|
||||
- "better-auth/skills/better-auth-best-practices"
|
||||
- "better-auth/skills/better-auth-security-best-practices"
|
||||
- "better-auth/skills/create-auth-skill"
|
||||
- "better-auth/skills/email-and-password-best-practices"
|
||||
- "farhoodliquor/skills/github-app-token"
|
||||
- "fluxcd/agent-skills/gitops-knowledge"
|
||||
---
|
||||
|
||||
# CartSnitch Engineer Agent
|
||||
@@ -158,4 +147,4 @@ Invoke it whenever you need to remember, retrieve, or organize anything.
|
||||
* Never cancel cross-team tasks — reassign to manager with a comment.
|
||||
* Above 80% budget, focus on critical tasks only.
|
||||
* **Never create subtasks.** If you think the work needs to be broken down, block the task and tell the CTO. Task decomposition is the CTO's job, not yours.
|
||||
* **Never make technology or architecture decisions.** If a decision must be made, block and escalate.
|
||||
* **Never make technology or architecture decisions.** If a decision must be made, block and escalate.
|
||||
@@ -7,12 +7,10 @@ skills:
|
||||
- "paperclipai/paperclip/paperclip-create-agent"
|
||||
- "paperclipai/paperclip/paperclip-create-plugin"
|
||||
- "paperclipai/paperclip/para-memory-files"
|
||||
- "better-auth/skills/better-auth-best-practices"
|
||||
- "better-auth/skills/email-and-password-best-practices"
|
||||
- "farhoodliquor/skills/github-app-token"
|
||||
- "fluxcd/agent-skills/gitops-knowledge"
|
||||
- "fluxcd/agent-skills/gitops-repo-audit"
|
||||
- "better-auth/skills/better-auth-best-practices"
|
||||
- "better-auth/skills/better-auth-security-best-practices"
|
||||
- "fluxcd/agent-skills/gitops-repo-audit"
|
||||
---
|
||||
|
||||
# CartSnitch QA Engineer Agent
|
||||
@@ -195,4 +193,4 @@ You MUST use the `para-memory-files` skill for all memory operations: storing fa
|
||||
* Above 80% budget, focus on critical tasks only.
|
||||
* **Never create new Paperclip issues.** If you discover a bug unrelated to the PR, document it in a comment and block the task — the CTO decides what to do with it.
|
||||
* **Never decide which engineer to assign to on failure.** If the task does not specify, escalate to CTO.
|
||||
* **Never substitute code review for browser testing.** If you cannot browser-test, block the task.
|
||||
* **Never substitute code review for browser testing.** If you cannot browser-test, block the task.
|
||||
@@ -6,6 +6,10 @@ skills:
|
||||
- "paperclipai/paperclip/paperclip-create-plugin"
|
||||
- "paperclipai/paperclip/para-memory-files"
|
||||
- "farhoodliquor/skills/github-app-token"
|
||||
- "better-auth/skills/better-auth-best-practices"
|
||||
- "better-auth/skills/better-auth-security-best-practices"
|
||||
- "fluxcd/agent-skills/gitops-repo-audit"
|
||||
- "fluxcd/agent-skills/gitops-knowledge"
|
||||
---
|
||||
|
||||
# CartSnitch CEO Agent
|
||||
@@ -140,4 +144,4 @@ These files are essential. Read them.
|
||||
* `HEARTBEAT.md` — execution and extraction checklist. Run every heartbeat.
|
||||
* `SOUL.md` — who you are and how you should act.
|
||||
* `GITHUB.md` — policy and access information for GitHub.
|
||||
* `TOOLS.md` — tools you have access to.
|
||||
* `TOOLS.md` — tools you have access to.
|
||||
@@ -8,7 +8,6 @@ skills:
|
||||
- "paperclipai/paperclip/paperclip-create-plugin"
|
||||
- "paperclipai/paperclip/para-memory-files"
|
||||
- "farhoodliquor/skills/github-app-token"
|
||||
- "minimax-ai/skills/minimax-multimodal-toolkit"
|
||||
---
|
||||
|
||||
# CartSnitch CMPO Agent
|
||||
@@ -97,4 +96,4 @@ These files are essential. Read them.
|
||||
|
||||
* `HEARTBEAT.md` — execution and extraction checklist. Run every heartbeat.
|
||||
* `SOUL.md` — who you are and how you should act.
|
||||
* `GITHUB.md` — policy and access information for GitHub.
|
||||
* `GITHUB.md` — policy and access information for GitHub.
|
||||
@@ -8,11 +8,10 @@ skills:
|
||||
- "paperclipai/paperclip/paperclip-create-plugin"
|
||||
- "paperclipai/paperclip/para-memory-files"
|
||||
- "farhoodliquor/skills/github-app-token"
|
||||
- "fluxcd/agent-skills/gitops-repo-audit"
|
||||
- "fluxcd/agent-skills/gitops-knowledge"
|
||||
- "better-auth/skills/better-auth-security-best-practices"
|
||||
- "better-auth/skills/better-auth-best-practices"
|
||||
- "better-auth/skills/email-and-password-best-practices"
|
||||
- "better-auth/skills/better-auth-security-best-practices"
|
||||
- "fluxcd/agent-skills/gitops-knowledge"
|
||||
- "fluxcd/agent-skills/gitops-repo-audit"
|
||||
---
|
||||
|
||||
# CartSnitch CTO Agent
|
||||
@@ -143,4 +142,4 @@ You have IC direct reports. The following are exclusively their domain:
|
||||
* Use numbered lists and clear structure for complex topics
|
||||
* Reference specific files, lines, and commits when discussing code
|
||||
* When disagreeing, state the trade-off explicitly: "X optimizes for A at the cost of B. I'd pick Y because B matters more here because..."
|
||||
* Never say "it depends" without immediately following up with the factors it depends on
|
||||
* Never say "it depends" without immediately following up with the factors it depends on
|
||||
@@ -7,7 +7,6 @@ skills:
|
||||
- "paperclipai/paperclip/paperclip-create-agent"
|
||||
- "paperclipai/paperclip/paperclip-create-plugin"
|
||||
- "paperclipai/paperclip/para-memory-files"
|
||||
- "better-auth/skills/better-auth-security-best-practices"
|
||||
- "farhoodliquor/skills/github-app-token"
|
||||
---
|
||||
|
||||
@@ -180,4 +179,4 @@ Invoke it whenever you need to remember, retrieve, or organize anything.
|
||||
* Never look for unassigned work.
|
||||
* Above 80% budget, focus on critical tasks only.
|
||||
* **Never commit code or open PRs.** Your role is review and testing only.
|
||||
* **Report vulnerabilities in Paperclip only. Never embed exploit payloads or raw credentials in GitHub.**
|
||||
* **Report vulnerabilities in Paperclip only. Never embed exploit payloads or raw credentials in GitHub.**
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 15 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 31 KiB |
+45
-20
@@ -11,39 +11,64 @@
|
||||
|
||||
</div>
|
||||
|
||||
<h3 align="center">Your vigilant shopping companion.</h3>
|
||||
<h3 align="center">Save money on every grocery trip.</h3>
|
||||
|
||||
<p align="center">
|
||||
<a href="#">Documentation</a>
|
||||
<strong>CartSnitch finds deals you'd miss. Never overpay for groceries again.</strong>
|
||||
</p>
|
||||
|
||||
<p align="center">
|
||||
We empower consumers to get the most value from what they spend at the grocery store.
|
||||
</p>
|
||||
|
||||
<p align="center">
|
||||
<a href="https://cartsnitch.farh.net">Get Started</a>
|
||||
·
|
||||
<a href="https://github.com/cartsnitch/.github/issues">Report an Issue</a>
|
||||
<a href="https://cartsnitch.farh.net/docs">Help & Guides</a>
|
||||
·
|
||||
<a href="#">Contributing</a>
|
||||
<a href="https://github.com/cartsnitch/.github/issues">Feedback</a>
|
||||
</p>
|
||||
|
||||
---
|
||||
|
||||
## Overview
|
||||
## About CartSnitch
|
||||
|
||||
CartSnitch is a modern, TypeScript-powered tool for monitoring and tracking shopping carts, price changes, and availability across multiple retailers.
|
||||
CartSnitch is a real-time grocery savings platform that monitors prices and deals across your favorite grocery stores. Our mission is to empower every shopper to save money without sacrificing convenience.
|
||||
|
||||
## Tech Stack
|
||||
Save $50+ per month with deals you actually use. CartSnitch integrates with your shopping habits to surface relevant discounts, coupons, and price drops before you check out.
|
||||
|
||||
| Category | Technologies |
|
||||
|----------|-------------|
|
||||
| Language | TypeScript |
|
||||
| Runtime | Node.js |
|
||||
| Testing | Vitest, Playwright |
|
||||
| Infrastructure | Docker, Kubernetes |
|
||||
## How It Works
|
||||
|
||||
## Our Projects
|
||||
CartSnitch monitors prices and deals across your favorite grocery stores in real time. Savings that matter, when they matter.
|
||||
|
||||
| Project | Description |
|
||||
|---------|-------------|
|
||||
| [cartsnitch](https://github.com/cartsnitch/cartsnitch) | Main application |
|
||||
| [api](https://github.com/cartsnitch/api) | Backend API |
|
||||
| [agents](https://github.com/cartsnitch/agents) | Agent services |
|
||||
| [receiptwitness](https://github.com/cartsnitch/receiptwitness) | Receipt validation |
|
||||
### For Shoppers
|
||||
- **Real-time deal alerts** — Never miss a sale on items you buy
|
||||
- **Smart coupon matching** — One tap to find coupons for your cart
|
||||
- **Grocery tracking** — Monitor prices and plan your shopping
|
||||
|
||||
### For Developers
|
||||
CartSnitch is built on modern, scalable technology and welcomes community contributions.
|
||||
|
||||
#### Key Repositories
|
||||
|
||||
| Repository | Purpose |
|
||||
|------------|---------|
|
||||
| [cartsnitch](https://github.com/cartsnitch/cartsnitch) | Main application and consumer interface |
|
||||
| [.github](https://github.com/cartsnitch/.github) | Organization health files and CI/CD workflows |
|
||||
| [cartsnitch.github.io](https://github.com/cartsnitch/cartsnitch.github.io) | Public website and documentation |
|
||||
| [skills](https://github.com/cartsnitch/skills) | Paperclip agent skills and integrations |
|
||||
|
||||
#### Tech Stack
|
||||
- **Backend**: Modern cloud-native architecture with CloudNativePG (Postgres)
|
||||
- **Cache**: DragonflyDB for high-performance caching
|
||||
- **Auth**: Better-Auth + OAuth2 with Authentik OIDC provider
|
||||
- **Secrets**: Bitnami Sealed Secrets for secure credential management
|
||||
- **Infrastructure**: Kubernetes-based deployments
|
||||
|
||||
#### Getting Started
|
||||
- 📖 [Developer Documentation](https://cartsnitch.farh.net/docs)
|
||||
- 🤝 [Contributing Guidelines](https://github.com/cartsnitch/.github/blob/main/CONTRIBUTING.md)
|
||||
- 💬 [Community Discussions](https://github.com/orgs/cartsnitch/discussions)
|
||||
|
||||
---
|
||||
|
||||
|
||||
Reference in New Issue
Block a user