Compare commits
3
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
299343b83b | ||
|
|
b51b832bbd | ||
|
|
25f9e0e735 |
@@ -52,3 +52,11 @@
|
||||
# Embedded web-server pid file
|
||||
/.web-server-pid
|
||||
|
||||
# Claude Code skill payloads (restorable via `npx skills experimental_install`
|
||||
# from skills-lock.json, which IS tracked) and agent worktree scratch space
|
||||
/.claude/skills/
|
||||
/.claude/worktrees/
|
||||
|
||||
# leankg's local runtime state (pid file, index) — regenerated on start
|
||||
/.leankg/
|
||||
|
||||
|
||||
@@ -0,0 +1,19 @@
|
||||
{
|
||||
"mcpServers": {
|
||||
"leankg": {
|
||||
"command": "leankg",
|
||||
"args": ["mcp-stdio", "--watch"]
|
||||
},
|
||||
"codebase-memory-mcp": {
|
||||
"command": "codebase-memory-mcp"
|
||||
},
|
||||
"playwright": {
|
||||
"command": "npx",
|
||||
"args": ["-y", "@playwright/mcp@latest"]
|
||||
},
|
||||
"context7": {
|
||||
"command": "npx",
|
||||
"args": ["-y", "@upstash/context7-mcp@latest"]
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -7,3 +7,26 @@ Issues live as Gitea issues on git.arthurerlich.de/haylan/Smart-Tablet-Screen, m
|
||||
### Domain docs
|
||||
|
||||
Single-context: `CONTEXT.md` + `docs/adr/` at the repo root. See `docs/agents/domain.md`.
|
||||
|
||||
### Project skills
|
||||
|
||||
`skills-lock.json` at the repo root pins the extra Claude Code skills this project relies on (Symfony, Microsoft Graph). Their payloads aren't committed (large binaries/indexes — see `.gitignore`); restore them once per clone/worktree with:
|
||||
|
||||
```
|
||||
npx skills experimental_install -y
|
||||
```
|
||||
|
||||
No CalDAV/Nextcloud skill is pinned — none found on skills.sh fit writing a PHP backend integration (candidates were CLI personal-calendar tools or SaaS-gated); see `docs/research/smart-tablet-screen-nextcloud-todos.md` for the sabre/dav-based approach instead.
|
||||
|
||||
### MCP servers
|
||||
|
||||
`.mcp.json` at the repo root wires up this project's MCP servers — Claude Code loads it automatically for anyone working in this repo, no per-machine registration needed:
|
||||
|
||||
- **`leankg`** — code-graph/knowledge-graph tooling (architecture queries, call graphs, dead-code/impact analysis). Requires the `leankg` binary on `PATH`: `cargo install leankg`.
|
||||
- **`codebase-memory-mcp`** — code-graph search and tracing (`search_graph`, `trace_path`, `get_architecture`) used per the Code Discovery Protocol below. Requires the `codebase-memory-mcp` binary on `PATH`: `pipx install codebase-memory-mcp` or `npm install -g codebase-memory-mcp`.
|
||||
- **`playwright`** — official Microsoft Playwright MCP server, run via `npx` (no install needed). Pairs with the `playwright-e2e-testing` skill and the E2E decision in `docs/research/smart-tablet-screen-stack.md` §5.
|
||||
- **`context7`** — official Upstash Context7 MCP server, run via `npx` (no install needed). Live, up-to-date docs lookup for the libraries this project actually pulls in — `sabre/dav`/`sabre/vobject`, `laminas-feed`, `endroid/qr-code`, FullCalendar, Vite, Symfony components — none of which have an offline index the way `msgraph` does.
|
||||
|
||||
`.mcp.json` uses bare command names (not absolute paths) so it works across machines once `leankg`/`codebase-memory-mcp` are installed; `playwright` and `context7` need nothing preinstalled (`npx` fetches them).
|
||||
|
||||
No CalDAV/Nextcloud or Gitea MCP server is pinned. CalDAV/Nextcloud candidates (`caldav-mcp`, `aiquila-mcp`) are real but too young (under 100 GitHub stars) and would need a live Nextcloud app-password wired in before there's even an account provisioned (see `smart-tablet-screen-config-secrets.md`) — revisit once an account exists. Gitea MCP candidates are essentially unused (0–1 stars) and redundant with the `tea` CLI this repo already standardized on via the `gitea-tea` skill.
|
||||
|
||||
@@ -0,0 +1,77 @@
|
||||
{
|
||||
"version": 1,
|
||||
"skills": {
|
||||
"msgraph": {
|
||||
"source": "merill/msgraph",
|
||||
"sourceType": "github",
|
||||
"skillPath": "skills/msgraph/SKILL.md",
|
||||
"computedHash": "f5a3d61621226c55a9c4e62831da4176e58239c71e9f8067937dba5d6d86c3f7"
|
||||
},
|
||||
"symfony:bootstrap-check": {
|
||||
"source": "dev-toolings/superpowers-symfony",
|
||||
"sourceType": "github",
|
||||
"skillPath": "skills/bootstrap-check/SKILL.md",
|
||||
"computedHash": "b0770d00e974d3077f0dbab3aaab5b644a67cce72f099a9363fd68a6e7262b43"
|
||||
},
|
||||
"symfony:config-env-parameters": {
|
||||
"source": "dev-toolings/superpowers-symfony",
|
||||
"sourceType": "github",
|
||||
"skillPath": "skills/config-env-parameters/SKILL.md",
|
||||
"computedHash": "29c30ab73cf591f6940991e1e297836499e1760d390d0fea4faffbf9bc0d42d0"
|
||||
},
|
||||
"symfony:controller-cleanup": {
|
||||
"source": "dev-toolings/superpowers-symfony",
|
||||
"sourceType": "github",
|
||||
"skillPath": "skills/controller-cleanup/SKILL.md",
|
||||
"computedHash": "e581ac4fa9f7e59035e17a96cdb306ae6fb4c1fe2bb2ddea75fbc8b3c61b7a7f"
|
||||
},
|
||||
"symfony:doctrine-migrations": {
|
||||
"source": "dev-toolings/superpowers-symfony",
|
||||
"sourceType": "github",
|
||||
"skillPath": "skills/doctrine-migrations/SKILL.md",
|
||||
"computedHash": "f567cc35a98fe8ac6e6632d4da5990f974d4028c9517672586c42a3528861425"
|
||||
},
|
||||
"symfony:functional-tests": {
|
||||
"source": "dev-toolings/superpowers-symfony",
|
||||
"sourceType": "github",
|
||||
"skillPath": "skills/functional-tests/SKILL.md",
|
||||
"computedHash": "fe487c7a86acc172e4d2d9130d04f7377f3950ce654d095f64a25829b9811435"
|
||||
},
|
||||
"symfony:interfaces-and-autowiring": {
|
||||
"source": "dev-toolings/superpowers-symfony",
|
||||
"sourceType": "github",
|
||||
"skillPath": "skills/interfaces-and-autowiring/SKILL.md",
|
||||
"computedHash": "18efd79e2b99806aaf7e3311391191e3041fede2e347d474a3c592af5b6e43e7"
|
||||
},
|
||||
"symfony:quality-checks": {
|
||||
"source": "dev-toolings/superpowers-symfony",
|
||||
"sourceType": "github",
|
||||
"skillPath": "skills/quality-checks/SKILL.md",
|
||||
"computedHash": "603a2a61a4515727f2de2a93d5ef7fcc6bb24da6b3d096f58724b81f18b437a4"
|
||||
},
|
||||
"symfony:symfony-cache": {
|
||||
"source": "dev-toolings/superpowers-symfony",
|
||||
"sourceType": "github",
|
||||
"skillPath": "skills/symfony-cache/SKILL.md",
|
||||
"computedHash": "92bfade421c2190100ba603b9d0d05d260594be3b4725ba98a9c8963433d7a97"
|
||||
},
|
||||
"symfony:tdd-with-phpunit": {
|
||||
"source": "dev-toolings/superpowers-symfony",
|
||||
"sourceType": "github",
|
||||
"skillPath": "skills/tdd-with-phpunit/SKILL.md",
|
||||
"computedHash": "484f05f7a16bf1e161eb4d2770b693526eb156f2a7502ea5833f64f5ef83e233"
|
||||
},
|
||||
"symfony:test-doubles-mocking": {
|
||||
"source": "dev-toolings/superpowers-symfony",
|
||||
"sourceType": "github",
|
||||
"skillPath": "skills/test-doubles-mocking/SKILL.md",
|
||||
"computedHash": "943d6a81a333d1a3a454510cf972c38181428a6d6186d1a19cfbe99ea7ffe3e1"
|
||||
},
|
||||
"symfony:using-symfony-superpowers": {
|
||||
"source": "dev-toolings/superpowers-symfony",
|
||||
"sourceType": "github",
|
||||
"skillPath": "skills/using-symfony-superpowers/SKILL.md",
|
||||
"computedHash": "8666a5b730f5cd8d1b66d07bfdf2afee3bdf0b41acc2a3d699a2bcff55c4151b"
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user