{"owner":"fossasia","repo":"visdom","hasSkills":true,"hasMcp":false,"mcpConfig":null,"found":["AGENTS.md","CLAUDE.md","GEMINI.md",".github/copilot-instructions.md"],"skills":{"AGENTS.md":"<!-- SPDX-License-Identifier: Apache-2.0\n     https://www.apache.org/licenses/LICENSE-2.0 -->\n\n# AGENTS instructions\n\nVisdom: Python client + Tornado server + React frontend for live data visualization.\nVersion `0.2.4` · Python >= 3.12 · Apache 2.0\n\n## Setup\n\n- Install Python: `pip install -e . && pip install -r test-requirements.txt`\n- Build frontend: `yarn && yarn run build`\n- Install hooks: `pip install pre-commit && pre-commit install`\n\n## Code Style\n\n- Format Python: `black py` (v23.1.0, CI-enforced)\n- Lint JS: `npm run lint`\n- Format JS/CSS/JSON: Prettier (v2.6.2)\n- Add Apache License headers to all new files (see `context/backend.md`)\n\n## Do Not\n\n- Edit files in `py/visdom/static/` — auto-built by CI\n- Edit legacy Lua/Torch code in `th/`\n- Commit secrets, credentials, or `COOKIE_SECRET`\n- Push directly to `master`\n- Skip pre-commit hooks (`--no-verify`)\n\n## Pitfalls\n\n- Handlers in `web_handlers.py` copy app attributes in `initialize()` — do not refactor to `self.app`\n- Always decorate handler methods with `@check_auth` — omitting it creates an auth bypass\n- Every socket feature must work in both WebSocket and polling modes\n- Do not \"fix\" direct state mutation in `main.js` (`storeData.layout = layout`) — intentional\n- `TextPane.js` uses `innerHTML` by design — do not expose server without auth\n- Sanitize environment names via `escape_eid()`, verify paths stay within `env_path`\n\n## Testing\n\n- Python unit tests: `pytest -m \"not server\"` (config in `pyproject.toml`, suite in `py/tests/`)\n- Install browser once: `npx playwright install chromium`\n- Run E2E tests: `npm test` and `npm run test:polling`\n- Visual tests: `npm run test:init` then `npm run test:visual`\n- Pre-commit: `pre-commit run --all-files`\n\n## PR Checklist\n\n- Branch from `master`; add `pytest` tests in `py/tests/` for Python code and Playwright tests for frontend behavior\n- Update `README` for API changes, `__init__.pyi` for interface changes\n- Run linters, do not commit `py/visdom/static/`\n\n## Ask Before\n\n- Changing API endpoints, message protocol, or auth\n- Adding Python or Node.js dependencies\n- Large cross-component refactors\n\n## Context & Skills\n\n- `context/` — architecture, backend, frontend, testing\n- `skills/` — adding-pane, websocket-flow, playwright-testing, release-process\n","CLAUDE.md":"<!-- SPDX-License-Identifier: Apache-2.0 -->\n\n# Claude Instructions\n\nUse `AGENTS.md` as the **single source of truth** for repository rules, workflows, and guardrails.\n\nFor task-specific execution playbooks, use skills under `.agents/skills/`.\n","GEMINI.md":"<!-- SPDX-License-Identifier: Apache-2.0 -->\n\n# Gemini Instructions\n\nUse `AGENTS.md` as the **single source of truth** for repository rules, workflows, and guardrails.\n\nFor task-specific execution playbooks, use skills under `.agents/skills/`.\n",".github/copilot-instructions.md":"<!-- SPDX-License-Identifier: Apache-2.0 -->\n\n# GitHub Copilot Instructions\n\nUse `AGENTS.md` as the **single source of truth** for repository rules, workflows, and guardrails.\n\nFor task-specific execution playbooks, use skills under `.agents/skills/`.\n"},"files":{"AGENTS.md":"<!-- SPDX-License-Identifier: Apache-2.0\n     https://www.apache.org/licenses/LICENSE-2.0 -->\n\n# AGENTS instructions\n\nVisdom: Python client + Tornado server + React frontend for live data visualization.\nVersion `0.2.4` · Python >= 3.12 · Apache 2.0\n\n## Setup\n\n- Install Python: `pip install -e . && pip install -r test-requirements.txt`\n- Build frontend: `yarn && yarn run build`\n- Install hooks: `pip install pre-commit && pre-commit install`\n\n## Code Style\n\n- Format Python: `black py` (v23.1.0, CI-enforced)\n- Lint JS: `npm run lint`\n- Format JS/CSS/JSON: Prettier (v2.6.2)\n- Add Apache License headers to all new files (see `context/backend.md`)\n\n## Do Not\n\n- Edit files in `py/visdom/static/` — auto-built by CI\n- Edit legacy Lua/Torch code in `th/`\n- Commit secrets, credentials, or `COOKIE_SECRET`\n- Push directly to `master`\n- Skip pre-commit hooks (`--no-verify`)\n\n## Pitfalls\n\n- Handlers in `web_handlers.py` copy app attributes in `initialize()` — do not refactor to `self.app`\n- Always decorate handler methods with `@check_auth` — omitting it creates an auth bypass\n- Every socket feature must work in both WebSocket and polling modes\n- Do not \"fix\" direct state mutation in `main.js` (`storeData.layout = layout`) — intentional\n- `TextPane.js` uses `innerHTML` by design — do not expose server without auth\n- Sanitize environment names via `escape_eid()`, verify paths stay within `env_path`\n\n## Testing\n\n- Python unit tests: `pytest -m \"not server\"` (config in `pyproject.toml`, suite in `py/tests/`)\n- Install browser once: `npx playwright install chromium`\n- Run E2E tests: `npm test` and `npm run test:polling`\n- Visual tests: `npm run test:init` then `npm run test:visual`\n- Pre-commit: `pre-commit run --all-files`\n\n## PR Checklist\n\n- Branch from `master`; add `pytest` tests in `py/tests/` for Python code and Playwright tests for frontend behavior\n- Update `README` for API changes, `__init__.pyi` for interface changes\n- Run linters, do not commit `py/visdom/static/`\n\n## Ask Before\n\n- Changing API endpoints, message protocol, or auth\n- Adding Python or Node.js dependencies\n- Large cross-component refactors\n\n## Context & Skills\n\n- `context/` — architecture, backend, frontend, testing\n- `skills/` — adding-pane, websocket-flow, playwright-testing, release-process\n","CLAUDE.md":"<!-- SPDX-License-Identifier: Apache-2.0 -->\n\n# Claude Instructions\n\nUse `AGENTS.md` as the **single source of truth** for repository rules, workflows, and guardrails.\n\nFor task-specific execution playbooks, use skills under `.agents/skills/`.\n","GEMINI.md":"<!-- SPDX-License-Identifier: Apache-2.0 -->\n\n# Gemini Instructions\n\nUse `AGENTS.md` as the **single source of truth** for repository rules, workflows, and guardrails.\n\nFor task-specific execution playbooks, use skills under `.agents/skills/`.\n",".github/copilot-instructions.md":"<!-- SPDX-License-Identifier: Apache-2.0 -->\n\n# GitHub Copilot Instructions\n\nUse `AGENTS.md` as the **single source of truth** for repository rules, workflows, and guardrails.\n\nFor task-specific execution playbooks, use skills under `.agents/skills/`.\n"},"items":[{"name":"AGENTS.md","path":"AGENTS.md","title":"AGENTS.md","content":"<!-- SPDX-License-Identifier: Apache-2.0\n     https://www.apache.org/licenses/LICENSE-2.0 -->\n\n# AGENTS instructions\n\nVisdom: Python client + Tornado server + React frontend for live data visualization.\nVersion `0.2.4` · Python >= 3.12 · Apache 2.0\n\n## Setup\n\n- Install Python: `pip install -e . && pip install -r test-requirements.txt`\n- Build frontend: `yarn && yarn run build`\n- Install hooks: `pip install pre-commit && pre-commit install`\n\n## Code Style\n\n- Format Python: `black py` (v23.1.0, CI-enforced)\n- Lint JS: `npm run lint`\n- Format JS/CSS/JSON: Prettier (v2.6.2)\n- Add Apache License headers to all new files (see `context/backend.md`)\n\n## Do Not\n\n- Edit files in `py/visdom/static/` — auto-built by CI\n- Edit legacy Lua/Torch code in `th/`\n- Commit secrets, credentials, or `COOKIE_SECRET`\n- Push directly to `master`\n- Skip pre-commit hooks (`--no-verify`)\n\n## Pitfalls\n\n- Handlers in `web_handlers.py` copy app attributes in `initialize()` — do not refactor to `self.app`\n- Always decorate handler methods with `@check_auth` — omitting it creates an auth bypass\n- Every socket feature must work in both WebSocket and polling modes\n- Do not \"fix\" direct state mutation in `main.js` (`storeData.layout = layout`) — intentional\n- `TextPane.js` uses `innerHTML` by design — do not expose server without auth\n- Sanitize environment names via `escape_eid()`, verify paths stay within `env_path`\n\n## Testing\n\n- Python unit tests: `pytest -m \"not server\"` (config in `pyproject.toml`, suite in `py/tests/`)\n- Install browser once: `npx playwright install chromium`\n- Run E2E tests: `npm test` and `npm run test:polling`\n- Visual tests: `npm run test:init` then `npm run test:visual`\n- Pre-commit: `pre-commit run --all-files`\n\n## PR Checklist\n\n- Branch from `master`; add `pytest` tests in `py/tests/` for Python code and Playwright tests for frontend behavior\n- Update `README` for API changes, `__init__.pyi` for interface changes\n- Run linters, do not commit `py/visdom/static/`\n\n## Ask Before\n\n- Changing API endpoints, message protocol, or auth\n- Adding Python or Node.js dependencies\n- Large cross-component refactors\n\n## Context & Skills\n\n- `context/` — architecture, backend, frontend, testing\n- `skills/` — adding-pane, websocket-flow, playwright-testing, release-process\n","category":"root","tokens":573},{"name":"CLAUDE.md","path":"CLAUDE.md","title":"CLAUDE.md","content":"<!-- SPDX-License-Identifier: Apache-2.0 -->\n\n# Claude Instructions\n\nUse `AGENTS.md` as the **single source of truth** for repository rules, workflows, and guardrails.\n\nFor task-specific execution playbooks, use skills under `.agents/skills/`.\n","category":"root","tokens":61},{"name":"GEMINI.md","path":"GEMINI.md","title":"GEMINI.md","content":"<!-- SPDX-License-Identifier: Apache-2.0 -->\n\n# Gemini Instructions\n\nUse `AGENTS.md` as the **single source of truth** for repository rules, workflows, and guardrails.\n\nFor task-specific execution playbooks, use skills under `.agents/skills/`.\n","category":"root","tokens":61},{"name":"copilot-instructions.md","path":".github/copilot-instructions.md","title":"copilot-instructions.md","content":"<!-- SPDX-License-Identifier: Apache-2.0 -->\n\n# GitHub Copilot Instructions\n\nUse `AGENTS.md` as the **single source of truth** for repository rules, workflows, and guardrails.\n\nFor task-specific execution playbooks, use skills under `.agents/skills/`.\n","category":".github","tokens":63}]}