CLAUDE.md
Rama main · réplica de lectura del repositorio original.
# CLAUDE.md — Way-CMS
## Overview
Web-based CMS for editing HTML/CSS files downloaded from the Wayback Archive. Features a file browser, syntax highlighting, live preview, multi-tenant support, and Docker deployment.
## Tech Stack
- Python (Flask)
- Nginx (static site serving)
- CodeMirror (editor)
- Docker / Docker Compose
- pytest (testing)
- Codecov (coverage)
## Development
```bash
# Run locally with Docker Compose
docker-compose up -d
# Production (uses Docker Hub image)
docker-compose -f docker-compose.prod.yml up -d
# Run tests
pytest tests/
```
## Architecture
- `cms/` — Flask application (routes, auth, models, templates, static assets)
- `nginx/` — Nginx config for serving the public site
- `tests/` — Test suite
- `scripts/` — Utility scripts
- `docs/` — Documentation and images
## Key Rules
- Docker image published to Docker Hub as `drumsergio/way-cms` with semver tags
- Never hardcode credentials; auth uses bcrypt hashing
- Production compose uses pre-built Docker Hub image, dev compose builds from source
- Multi-tenant mode (v2.0.0+) uses role-based access control and magic link auth
*Generated by [LynxPrompt](https://lynxprompt.com) CLI*
<!-- BEGIN BEADS INTEGRATION v:1 profile:minimal hash:6cd5cc61 -->
## Beads Issue Tracker
This project uses **bd (beads)** for issue tracking. Run `bd prime` to see full workflow context and commands.
### Quick Reference
```bash
bd ready # Find available work
bd show <id> # View issue details
bd update <id> --claim # Claim work
bd close <id> # Complete work
```
### Rules
- Use `bd` for ALL task tracking — do NOT use TodoWrite, TaskCreate, or markdown TODO lists
- Run `bd prime` for detailed command reference and session close protocol
- Use `bd remember` for persistent knowledge — do NOT use MEMORY.md files
**Architecture in one line:** issues live in a local Dolt DB; sync uses `refs/dolt/data` on your git remote; `.beads/issues.jsonl` is a passive export. See https://github.com/gastownhall/beads/blob/main/docs/SYNC_CONCEPTS.md for details and anti-patterns.
## Agent Context Profiles
The managed Beads block is task-tracking guidance, not permission to override repository, user, or orchestrator instructions.
- **Conservative (default)**: Use `bd` for task tracking. Do not run git commits, git pushes, or Dolt remote sync unless explicitly asked. At handoff, report changed files, validation, and suggested next commands.
- **Minimal**: Keep tool instruction files as pointers to `bd prime`; use the same conservative git policy unless active instructions say otherwise.
- **Team-maintainer**: Only when the repository explicitly opts in, agents may close beads, run quality gates, commit, and push as part of session close. A current "do not commit" or "do not push" instruction still wins.
## Session Completion
This protocol applies when ending a Beads implementation workflow. It is subordinate to explicit user, repository, and orchestrator instructions.
1. **File issues for remaining work** - Create beads for anything that needs follow-up
2. **Run quality gates** (if code changed) - Tests, linters, builds
3. **Update issue status** - Close finished work, update in-progress items
4. **Handle git/sync by active profile**:
```bash
# Conservative/minimal/default: report status and proposed commands; wait for approval.
git status
# Team-maintainer opt-in only, unless current instructions forbid it:
git pull --rebase
git push
git status
```
5. **Hand off** - Summarize changes, validation, issue status, and any blocked sync/commit/push step
**Critical rules:**
- Explicit user or orchestrator instructions override this Beads block.
- Do not commit or push without clear authority from the active profile or the current user request.
- If a required sync or push is blocked, stop and report the exact command and error.
<!-- END BEADS INTEGRATION -->
## Where the tracker syncs
This repo is public, so its tracker syncs only to the private remote named by `sync.remote` in `.beads/config.yaml`. The block above says sync uses "your git remote". Here that never means this GitHub repo. Don't add it as a Dolt remote and don't push `refs/dolt/*` to it.