Compare commits
3 Commits
ef3255544f
...
7a9e4044f0
| Author | SHA1 | Date | |
|---|---|---|---|
| 7a9e4044f0 | |||
| 3347443ca9 | |||
| 964cd6f76d |
@@ -8,6 +8,8 @@ icon: lucide/library
|
||||
|
||||
The platform is implemented as a resource-first MCP system with an integrated static documentation surface. The same methodology content powers both MCP resources and the published docs site.
|
||||
|
||||
An MCP server is a runtime that exposes machine-readable resources and tools through stable interfaces so AI clients can discover and consume context consistently. Here, the server's role is intentionally narrow: publish canonical methodology documents as resources, keep discovery predictable through a catalog layer, and serve the same source material as pre-built static documentation.
|
||||
|
||||
The system is complete in three layers:
|
||||
|
||||
1. Canonical methodology is maintained in Markdown skill documents.
|
||||
|
||||
@@ -4,6 +4,12 @@ icon: lucide/rocket
|
||||
|
||||
# Get started
|
||||
|
||||
## What this MCP server is
|
||||
|
||||
An MCP server is a service that gives AI clients a stable way to discover and read capabilities through defined contracts. In practice, it exposes named resources and optional tools so clients can request context reliably instead of depending on ad-hoc prompts.
|
||||
|
||||
This server is designed to publish software methodology as canonical Markdown resources, with a small catalog for discovery, and to serve the same content as a static docs site. The intent is one source of truth for both humans and agents.
|
||||
|
||||
## Quick start
|
||||
|
||||
Install dependencies first:
|
||||
|
||||
@@ -4,13 +4,14 @@ Use these notes as a source map before creating or debugging Copilot customizati
|
||||
|
||||
## Official Sources
|
||||
|
||||
- Customization overview: https://code.visualstudio.com/docs/copilot/customization/overview
|
||||
- Custom instructions: https://code.visualstudio.com/docs/copilot/customization/custom-instructions
|
||||
- Agent skills: https://code.visualstudio.com/docs/copilot/customization/agent-skills
|
||||
- Prompt files: https://code.visualstudio.com/docs/copilot/customization/prompt-files
|
||||
- Custom agents: https://code.visualstudio.com/docs/copilot/customization/custom-agents
|
||||
- MCP servers: https://code.visualstudio.com/docs/copilot/customization/mcp-servers
|
||||
- Hooks: https://code.visualstudio.com/docs/copilot/customization/hooks
|
||||
!!! info "Official sources"
|
||||
- [Customization overview](https://code.visualstudio.com/docs/copilot/customization/overview)
|
||||
- [Custom instructions](https://code.visualstudio.com/docs/copilot/customization/custom-instructions)
|
||||
- [Agent skills](https://code.visualstudio.com/docs/copilot/customization/agent-skills)
|
||||
- [Prompt files](https://code.visualstudio.com/docs/copilot/customization/prompt-files)
|
||||
- [Custom agents](https://code.visualstudio.com/docs/copilot/customization/custom-agents)
|
||||
- [MCP servers](https://code.visualstudio.com/docs/copilot/customization/mcp-servers)
|
||||
- [Hooks](https://code.visualstudio.com/docs/copilot/customization/hooks)
|
||||
|
||||
## Customization Types
|
||||
|
||||
|
||||
@@ -33,37 +33,37 @@ Use these concepts as the planning backbone:
|
||||
|
||||
1. Engine lifecycle and ownership:
|
||||
One AsyncEngine per process for each DB URL, created once and disposed explicitly when the app lifecycle ends.
|
||||
See: [references/engine.md](references/engine.md)
|
||||
See the [engine lifecycle reference](references/engine.md).
|
||||
2. Session factory and scope:
|
||||
Use async_sessionmaker for configuration; create one AsyncSession per request or unit-of-work, never shared across concurrent tasks.
|
||||
See: [references/session.md](references/session.md)
|
||||
See the [session management reference](references/session.md).
|
||||
3. Transaction boundaries:
|
||||
Prefer context-managed begin blocks for write units and explicit read-only sessions for queries.
|
||||
See: [references/transactions.md](references/transactions.md)
|
||||
See the [transaction boundaries reference](references/transactions.md).
|
||||
4. Lifespan composition:
|
||||
Compose startup/shutdown resources with AsyncExitStack so cleanup is deterministic and ordered.
|
||||
See: [references/engine.md](references/engine.md)
|
||||
See the [engine lifecycle reference](references/engine.md).
|
||||
5. Dependency injection:
|
||||
Provide sessions via FastAPI dependencies with async generators/context managers, not globals.
|
||||
See: [references/session.md](references/session.md)
|
||||
See the [session management reference](references/session.md).
|
||||
6. Implicit I/O control in ORM:
|
||||
Avoid accidental lazy loads; use explicit eager-loading/refresh strategies for asyncio safety.
|
||||
See: [references/implicit_io.md](references/implicit_io.md)
|
||||
See the [implicit I/O reference](references/implicit_io.md).
|
||||
7. Observability and resilience:
|
||||
Add pool/connection settings, logging, timeout, and health checks as first-class plan items.
|
||||
See: [references/observability.md](references/observability.md)
|
||||
See the [observability reference](references/observability.md).
|
||||
|
||||
### Concept Reference Map
|
||||
|
||||
| Concept | Reference |
|
||||
|---|---|
|
||||
| Engine lifecycle and ownership | [references/engine.md](references/engine.md) |
|
||||
| Session factory and scope | [references/session.md](references/session.md) |
|
||||
| Transaction boundaries | [references/transactions.md](references/transactions.md) |
|
||||
| Lifespan composition | [references/engine.md](references/engine.md) |
|
||||
| Dependency injection | [references/session.md](references/session.md) |
|
||||
| Implicit I/O control in ORM | [references/implicit_io.md](references/implicit_io.md) |
|
||||
| Observability and resilience | [references/observability.md](references/observability.md) |
|
||||
| Engine lifecycle and ownership | [Engine lifecycle reference](references/engine.md) |
|
||||
| Session factory and scope | [Session management reference](references/session.md) |
|
||||
| Transaction boundaries | [Transaction boundaries reference](references/transactions.md) |
|
||||
| Lifespan composition | [Engine lifecycle reference](references/engine.md) |
|
||||
| Dependency injection | [Session management reference](references/session.md) |
|
||||
| Implicit I/O control in ORM | [Implicit I/O reference](references/implicit_io.md) |
|
||||
| Observability and resilience | [Observability reference](references/observability.md) |
|
||||
|
||||
## Decision Points
|
||||
|
||||
@@ -235,6 +235,7 @@ Return the plan as:
|
||||
|
||||
## References
|
||||
|
||||
- SQLAlchemy engine/connections: https://docs.sqlalchemy.org/en/21/core/connections.html
|
||||
- SQLAlchemy asyncio extension: https://docs.sqlalchemy.org/en/21/orm/extensions/asyncio.html
|
||||
- Python async context managers and AsyncExitStack: https://docs.python.org/3/library/contextlib.html
|
||||
!!! info "Primary sources"
|
||||
- [SQLAlchemy engine and connections](https://docs.sqlalchemy.org/en/21/core/connections.html)
|
||||
- [SQLAlchemy asyncio extension](https://docs.sqlalchemy.org/en/21/orm/extensions/asyncio.html)
|
||||
- [Python async context managers and AsyncExitStack](https://docs.python.org/3/library/contextlib.html)
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
# Async SQLAlchemy Engine
|
||||
|
||||
Source:
|
||||
- https://docs.sqlalchemy.org/en/21/core/connections.html
|
||||
- https://docs.sqlalchemy.org/en/21/orm/extensions/asyncio.html
|
||||
- https://docs.sqlalchemy.org/en/21/core/pooling.html#pooling-multiprocessing
|
||||
- https://fastapi.tiangolo.com/advanced/events/
|
||||
!!! info "Primary sources"
|
||||
- [SQLAlchemy connections](https://docs.sqlalchemy.org/en/21/core/connections.html)
|
||||
- [SQLAlchemy asyncio extension](https://docs.sqlalchemy.org/en/21/orm/extensions/asyncio.html)
|
||||
- [SQLAlchemy pooling and multiprocessing](https://docs.sqlalchemy.org/en/21/core/pooling.html#pooling-multiprocessing)
|
||||
- [FastAPI lifespan events](https://fastapi.tiangolo.com/advanced/events/)
|
||||
|
||||
---
|
||||
|
||||
@@ -16,9 +16,9 @@ Create one async engine per process per database URL and keep it for the app lif
|
||||
- In FastAPI, app startup and shutdown ownership belongs in lifespan.
|
||||
- Use `FastAPI(lifespan=...)` (not startup/shutdown events) for modern lifecycle wiring.
|
||||
|
||||
Practical rule:
|
||||
- Exactly one `create_async_engine(...)` call in app bootstrap code.
|
||||
- Zero `create_async_engine(...)` calls in request handlers.
|
||||
!!! tip "Practical rule"
|
||||
- Exactly one `create_async_engine(...)` call in app bootstrap code.
|
||||
- Zero `create_async_engine(...)` calls in request handlers.
|
||||
|
||||
---
|
||||
|
||||
@@ -69,9 +69,9 @@ Use SQLAlchemy async driver URLs:
|
||||
- PostgreSQL: `postgresql+asyncpg://user:pass@host:5432/dbname`
|
||||
- SQLite: `sqlite+aiosqlite:///./app.db`
|
||||
|
||||
Notes:
|
||||
- Do not mix sync drivers (for example `psycopg2`) with `create_async_engine()`.
|
||||
- Keep URL construction centralized in settings/config, not in feature modules.
|
||||
!!! warning "Driver compatibility"
|
||||
- Do not mix sync drivers, for example `psycopg2`, with `create_async_engine()`.
|
||||
- Keep URL construction centralized in settings/config, not in feature modules.
|
||||
|
||||
---
|
||||
|
||||
|
||||
@@ -1,13 +1,14 @@
|
||||
# Preventing Implicit ORM I/O (Asyncio)
|
||||
|
||||
Source:
|
||||
- https://docs.sqlalchemy.org/en/21/orm/extensions/asyncio.html#preventing-implicit-io-when-using-asyncsession
|
||||
- https://docs.sqlalchemy.org/en/21/orm/queryguide/relationships.html
|
||||
!!! info "Primary sources"
|
||||
- [Preventing implicit I/O with AsyncSession](https://docs.sqlalchemy.org/en/21/orm/extensions/asyncio.html#preventing-implicit-io-when-using-asyncsession)
|
||||
- [SQLAlchemy relationship loading](https://docs.sqlalchemy.org/en/21/orm/queryguide/relationships.html)
|
||||
|
||||
Status: adopted
|
||||
Decision level: advisory
|
||||
Applies to: api-runtime, workers, tests
|
||||
Last reviewed: 2026-06-17
|
||||
??? abstract "Decision metadata"
|
||||
- Status: adopted
|
||||
- Decision level: advisory
|
||||
- Applies to: api-runtime, workers, tests
|
||||
- Last reviewed: 2026-06-17
|
||||
|
||||
---
|
||||
|
||||
|
||||
@@ -1,15 +1,16 @@
|
||||
# DB Observability and Resilience
|
||||
|
||||
Source:
|
||||
- https://docs.sqlalchemy.org/en/21/core/pooling.html
|
||||
- https://docs.sqlalchemy.org/en/21/core/engines.html
|
||||
- https://docs.sqlalchemy.org/en/21/core/events.html
|
||||
- https://fastapi.tiangolo.com/advanced/events/
|
||||
!!! info "Primary sources"
|
||||
- [SQLAlchemy pooling](https://docs.sqlalchemy.org/en/21/core/pooling.html)
|
||||
- [SQLAlchemy engine configuration](https://docs.sqlalchemy.org/en/21/core/engines.html)
|
||||
- [SQLAlchemy events](https://docs.sqlalchemy.org/en/21/core/events.html)
|
||||
- [FastAPI lifespan events](https://fastapi.tiangolo.com/advanced/events/)
|
||||
|
||||
Status: adopted
|
||||
Decision level: mandatory
|
||||
Applies to: api-runtime, workers, tests
|
||||
Last reviewed: 2026-06-17
|
||||
??? abstract "Decision metadata"
|
||||
- Status: adopted
|
||||
- Decision level: mandatory
|
||||
- Applies to: api-runtime, workers, tests
|
||||
- Last reviewed: 2026-06-17
|
||||
|
||||
---
|
||||
|
||||
|
||||
@@ -1,14 +1,15 @@
|
||||
# Async SQLAlchemy Session Management
|
||||
|
||||
Source:
|
||||
- https://docs.sqlalchemy.org/en/21/orm/extensions/asyncio.html
|
||||
- https://docs.sqlalchemy.org/en/21/orm/session_basics.html
|
||||
- https://fastapi.tiangolo.com/tutorial/dependencies/dependencies-with-yield/
|
||||
!!! info "Primary sources"
|
||||
- [SQLAlchemy asyncio extension](https://docs.sqlalchemy.org/en/21/orm/extensions/asyncio.html)
|
||||
- [SQLAlchemy session basics](https://docs.sqlalchemy.org/en/21/orm/session_basics.html)
|
||||
- [FastAPI dependencies with yield](https://fastapi.tiangolo.com/tutorial/dependencies/dependencies-with-yield/)
|
||||
|
||||
Status: adopted
|
||||
Decision level: mandatory
|
||||
Applies to: api-runtime, workers, tests
|
||||
Last reviewed: 2026-06-17
|
||||
??? abstract "Decision metadata"
|
||||
- Status: adopted
|
||||
- Decision level: mandatory
|
||||
- Applies to: api-runtime, workers, tests
|
||||
- Last reviewed: 2026-06-17
|
||||
|
||||
---
|
||||
|
||||
|
||||
@@ -1,13 +1,14 @@
|
||||
# <Concept Title>
|
||||
|
||||
Source:
|
||||
- <primary source url>
|
||||
- <secondary source url>
|
||||
!!! info "Primary sources"
|
||||
- Primary source: `<primary source URL>`
|
||||
- Secondary source: `<secondary source URL>`
|
||||
|
||||
Status: draft|adopted|deprecated
|
||||
Decision level: advisory|mandatory
|
||||
Applies to: api-runtime|workers|tests
|
||||
Last reviewed: YYYY-MM-DD
|
||||
??? abstract "Decision metadata"
|
||||
- Status: draft|adopted|deprecated
|
||||
- Decision level: advisory|mandatory
|
||||
- Applies to: api-runtime|workers|tests
|
||||
- Last reviewed: YYYY-MM-DD
|
||||
|
||||
---
|
||||
|
||||
|
||||
@@ -1,14 +1,15 @@
|
||||
# Async Transaction Boundaries
|
||||
|
||||
Source:
|
||||
- https://docs.sqlalchemy.org/en/21/orm/session_transaction.html
|
||||
- https://docs.sqlalchemy.org/en/21/orm/extensions/asyncio.html
|
||||
- https://docs.sqlalchemy.org/en/21/core/connections.html
|
||||
!!! info "Primary sources"
|
||||
- [SQLAlchemy transactions](https://docs.sqlalchemy.org/en/21/orm/session_transaction.html)
|
||||
- [SQLAlchemy asyncio extension](https://docs.sqlalchemy.org/en/21/orm/extensions/asyncio.html)
|
||||
- [SQLAlchemy connections](https://docs.sqlalchemy.org/en/21/core/connections.html)
|
||||
|
||||
Status: adopted
|
||||
Decision level: mandatory
|
||||
Applies to: api-runtime, workers, tests
|
||||
Last reviewed: 2026-06-17
|
||||
??? abstract "Decision metadata"
|
||||
- Status: adopted
|
||||
- Decision level: mandatory
|
||||
- Applies to: api-runtime, workers, tests
|
||||
- Last reviewed: 2026-06-17
|
||||
|
||||
---
|
||||
|
||||
|
||||
@@ -22,10 +22,10 @@ Bring an existing Python project into full conformance with cloud-native best pr
|
||||
|
||||
Load these references only when needed:
|
||||
|
||||
- FastAPI patterns and app structure: [./references/fastapi-best-practices.md](./references/fastapi-best-practices.md)
|
||||
- uv project layout and dependency management: [./references/uv-project-layout.md](./references/uv-project-layout.md)
|
||||
- uvicorn CLI settings reference: [./references/uvicorn-settings.md](./references/uvicorn-settings.md)
|
||||
- Docker and cloud-native patterns: [./references/docker-cloud-native.md](./references/docker-cloud-native.md)
|
||||
- FastAPI patterns and app structure: [FastAPI best practices](./references/fastapi-best-practices.md)
|
||||
- uv project layout and dependency management: [uv project layout](./references/uv-project-layout.md)
|
||||
- uvicorn CLI settings reference: [uvicorn settings](./references/uvicorn-settings.md)
|
||||
- Docker and cloud-native patterns: [Docker cloud-native patterns](./references/docker-cloud-native.md)
|
||||
|
||||
---
|
||||
|
||||
@@ -44,9 +44,9 @@ Before making changes, map the current state across six areas. Produce a short g
|
||||
| **Container** | Is there a `Dockerfile`? Multi-stage? Non-root user? `.dockerignore` present? |
|
||||
| **Cloud-native** | Is there a `/healthz` endpoint? Graceful shutdown? Structured logs? |
|
||||
|
||||
Load [./references/fastapi-best-practices.md](./references/fastapi-best-practices.md) for structure rules.
|
||||
Load [./references/uv-project-layout.md](./references/uv-project-layout.md) for uv migration rules.
|
||||
Load [./references/uvicorn-settings.md](./references/uvicorn-settings.md) for uvicorn CLI reference.
|
||||
Load the [FastAPI best practices reference](./references/fastapi-best-practices.md) for structure rules.
|
||||
Load the [uv project layout reference](./references/uv-project-layout.md) for uv migration rules.
|
||||
Load the [uvicorn settings reference](./references/uvicorn-settings.md) for uvicorn CLI reference.
|
||||
|
||||
Completion check: You can name every gap before touching any file.
|
||||
|
||||
@@ -145,7 +145,7 @@ Completion check: `uv run python -m my_app` starts the server.
|
||||
|
||||
### Step 3: Wire the FastAPI App Factory
|
||||
|
||||
Load [./references/fastapi-best-practices.md](./references/fastapi-best-practices.md) for the full patterns. Key rules:
|
||||
Load the [FastAPI best practices reference](./references/fastapi-best-practices.md) for the full patterns. Key rules:
|
||||
|
||||
**`src/my_app/main.py`:**
|
||||
|
||||
@@ -211,7 +211,7 @@ Completion check: `uv run uvicorn my_app.main:app --reload` starts with no impor
|
||||
|
||||
### Step 4: uvicorn Production Configuration
|
||||
|
||||
Load [./references/uvicorn-settings.md](./references/uvicorn-settings.md) for the full settings reference.
|
||||
Load the [uvicorn settings reference](./references/uvicorn-settings.md) for the full settings reference.
|
||||
|
||||
**Never** configure uvicorn inside application code. Pass all settings via CLI or environment variables (`UVICORN_*` prefix).
|
||||
|
||||
@@ -270,7 +270,7 @@ Completion check: `curl http://localhost:8000/healthz` returns `{"status":"ok"}`
|
||||
|
||||
### Step 5: Write the Dockerfile
|
||||
|
||||
Load [./references/docker-cloud-native.md](./references/docker-cloud-native.md) for the full template and cloud-native rules. Key requirements:
|
||||
Load the [Docker cloud-native patterns reference](./references/docker-cloud-native.md) for the full template and cloud-native rules. Key requirements:
|
||||
|
||||
- Multi-stage build: `builder` stage installs deps; `runtime` stage is slim.
|
||||
- Pin uv version (copy from official image, not `latest`).
|
||||
|
||||
@@ -1,6 +1,10 @@
|
||||
# Docker and Cloud-Native Patterns
|
||||
|
||||
Source: https://docs.docker.com/build/building/best-practices/ | https://docs.astral.sh/uv/guides/integration/docker/ | https://fastapi.tiangolo.com/deployment/docker/ | https://uvicorn.dev/deployment/
|
||||
!!! info "Primary sources"
|
||||
- [Docker build best practices](https://docs.docker.com/build/building/best-practices/)
|
||||
- [uv Docker integration](https://docs.astral.sh/uv/guides/integration/docker/)
|
||||
- [FastAPI Docker deployment](https://fastapi.tiangolo.com/deployment/docker/)
|
||||
- [uvicorn deployment](https://uvicorn.dev/deployment/)
|
||||
|
||||
---
|
||||
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
# FastAPI Best Practices
|
||||
|
||||
Source: https://fastapi.tiangolo.com/deployment/ | https://fastapi.tiangolo.com/advanced/events/
|
||||
!!! info "Primary sources"
|
||||
- [FastAPI deployment](https://fastapi.tiangolo.com/deployment/)
|
||||
- [FastAPI lifespan events](https://fastapi.tiangolo.com/advanced/events/)
|
||||
|
||||
---
|
||||
|
||||
@@ -44,7 +46,8 @@ def create_app(settings: Settings | None = None) -> FastAPI:
|
||||
app = create_app()
|
||||
```
|
||||
|
||||
**Never use `@app.on_event("startup")` / `@app.on_event("shutdown")`** — these are deprecated. The `asynccontextmanager` lifespan is the canonical approach since FastAPI 0.95.
|
||||
!!! warning "Prefer lifespan handlers"
|
||||
Never use `@app.on_event("startup")` / `@app.on_event("shutdown")`. These are deprecated. The `asynccontextmanager` lifespan is the canonical approach since FastAPI 0.95.
|
||||
|
||||
---
|
||||
|
||||
|
||||
@@ -1,6 +1,9 @@
|
||||
# uv Project Layout and Dependency Management
|
||||
|
||||
Source: https://docs.astral.sh/uv/guides/projects/ | https://docs.astral.sh/uv/concepts/projects/layout/ | https://docs.astral.sh/uv/guides/integration/docker/
|
||||
!!! info "Primary sources"
|
||||
- [uv project guide](https://docs.astral.sh/uv/guides/projects/)
|
||||
- [uv project layout](https://docs.astral.sh/uv/concepts/projects/layout/)
|
||||
- [uv Docker integration](https://docs.astral.sh/uv/guides/integration/docker/)
|
||||
|
||||
---
|
||||
|
||||
@@ -13,7 +16,8 @@ Source: https://docs.astral.sh/uv/guides/projects/ | https://docs.astral.sh/uv/c
|
||||
| `.python-version` | Default Python version for the project | Yes |
|
||||
| `.venv/` | Local virtual environment | No (`.gitignore`) |
|
||||
|
||||
**`uv.lock` must be committed.** It is the source of truth for reproducible installs in CI and Docker. Never edit it by hand.
|
||||
!!! warning "Commit the lockfile"
|
||||
`uv.lock` must be committed. It is the source of truth for reproducible installs in CI and Docker. Never edit it by hand.
|
||||
|
||||
---
|
||||
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
# uvicorn Settings Reference
|
||||
|
||||
Source: https://uvicorn.dev/settings/ | https://uvicorn.dev/deployment/
|
||||
!!! info "Primary sources"
|
||||
- [uvicorn settings](https://uvicorn.dev/settings/)
|
||||
- [uvicorn deployment](https://uvicorn.dev/deployment/)
|
||||
|
||||
---
|
||||
|
||||
@@ -21,7 +23,8 @@ uvicorn main:app
|
||||
uvicorn.run("main:app", host="0.0.0.0", port=8000)
|
||||
```
|
||||
|
||||
**Note:** `UVICORN_*` env vars cannot be used from within an `--env-file`. The `--env-file` flag is for the ASGI *application's* config, not uvicorn's own config.
|
||||
!!! note "Environment file scope"
|
||||
`UVICORN_*` env vars cannot be used from within an `--env-file`. The `--env-file` flag is for the ASGI *application's* config, not uvicorn's own config.
|
||||
|
||||
---
|
||||
|
||||
|
||||
@@ -29,9 +29,9 @@ Deliver a responsive, accessible UI flow that:
|
||||
|
||||
Load these references only when needed:
|
||||
|
||||
- Architecture and styling rules: [./references/architecture-and-styling.md](./references/architecture-and-styling.md)
|
||||
- Event and state interaction patterns: [./references/interaction-patterns.md](./references/interaction-patterns.md)
|
||||
- Troubleshooting and release gates: [./references/troubleshooting-and-quality-gates.md](./references/troubleshooting-and-quality-gates.md)
|
||||
- Architecture and styling rules: [architecture and styling](./references/architecture-and-styling.md)
|
||||
- Event and state interaction patterns: [interaction patterns](./references/interaction-patterns.md)
|
||||
- Troubleshooting and release gates: [troubleshooting and quality gates](./references/troubleshooting-and-quality-gates.md)
|
||||
|
||||
## Procedure
|
||||
|
||||
|
||||
@@ -70,7 +70,8 @@ ui.add_css(open("src/app/static/css/base.css").read())
|
||||
|
||||
## Links
|
||||
|
||||
- NiceGUI elements: https://nicegui.io/documentation/element
|
||||
- NiceGUI binding: https://nicegui.io/documentation/section_binding_properties
|
||||
- Tailwind: https://tailwindcss.com/docs/utility-first
|
||||
- Quasar components: https://quasar.dev/vue-components
|
||||
!!! info "Primary sources"
|
||||
- [NiceGUI elements](https://nicegui.io/documentation/element)
|
||||
- [NiceGUI binding properties](https://nicegui.io/documentation/section_binding_properties)
|
||||
- [Tailwind utility-first styling](https://tailwindcss.com/docs/utility-first)
|
||||
- [Quasar components](https://quasar.dev/vue-components)
|
||||
|
||||
@@ -104,6 +104,7 @@ ui.button("Refresh").on_click(lambda: item_list.refresh())
|
||||
|
||||
## Links
|
||||
|
||||
- NiceGUI action events: https://nicegui.io/documentation/section_action_events
|
||||
- FastAPI SSE: https://fastapi.tiangolo.com/advanced/server-sent-events/
|
||||
- FastAPI WebSockets: https://fastapi.tiangolo.com/advanced/websockets/
|
||||
!!! info "Primary sources"
|
||||
- [NiceGUI action events](https://nicegui.io/documentation/section_action_events)
|
||||
- [FastAPI server-sent events](https://fastapi.tiangolo.com/advanced/server-sent-events/)
|
||||
- [FastAPI WebSockets](https://fastapi.tiangolo.com/advanced/websockets/)
|
||||
|
||||
@@ -4,32 +4,37 @@ Use these links for framework-specific details.
|
||||
|
||||
## FastAPI
|
||||
|
||||
- FastAPI lifespan events: https://fastapi.tiangolo.com/advanced/events/
|
||||
- FastAPI settings and environment variables: https://fastapi.tiangolo.com/advanced/settings/
|
||||
- FastAPI dependencies with yield: https://fastapi.tiangolo.com/tutorial/dependencies/dependencies-with-yield/
|
||||
- FastAPI SQL databases tutorial: https://fastapi.tiangolo.com/tutorial/sql-databases/
|
||||
!!! info "FastAPI sources"
|
||||
- [Lifespan events](https://fastapi.tiangolo.com/advanced/events/)
|
||||
- [Settings and environment variables](https://fastapi.tiangolo.com/advanced/settings/)
|
||||
- [Dependencies with yield](https://fastapi.tiangolo.com/tutorial/dependencies/dependencies-with-yield/)
|
||||
- [SQL databases tutorial](https://fastapi.tiangolo.com/tutorial/sql-databases/)
|
||||
|
||||
## SQLAlchemy and Alembic
|
||||
|
||||
- SQLAlchemy engine configuration and pooling: https://docs.sqlalchemy.org/en/20/core/engines.html
|
||||
- SQLAlchemy session lifecycle basics: https://docs.sqlalchemy.org/en/20/orm/session_basics.html
|
||||
- Alembic tutorial: https://alembic.sqlalchemy.org/en/latest/tutorial.html
|
||||
!!! info "Persistence sources"
|
||||
- [SQLAlchemy engine configuration and pooling](https://docs.sqlalchemy.org/en/20/core/engines.html)
|
||||
- [SQLAlchemy session lifecycle basics](https://docs.sqlalchemy.org/en/20/orm/session_basics.html)
|
||||
- [Alembic tutorial](https://alembic.sqlalchemy.org/en/latest/tutorial.html)
|
||||
|
||||
## Pydantic
|
||||
|
||||
- Pydantic settings management: https://pydantic.dev/docs/validation/latest/concepts/pydantic_settings/
|
||||
!!! info "Pydantic source"
|
||||
- [Pydantic settings management](https://pydantic.dev/docs/validation/latest/concepts/pydantic_settings/)
|
||||
|
||||
## NiceGUI
|
||||
|
||||
- NiceGUI pages/routing and FastAPI integration: https://www.nicegui.io/documentation/section_pages_routing
|
||||
- NiceGUI security best practices: https://www.nicegui.io/documentation/section_security
|
||||
!!! info "NiceGUI sources"
|
||||
- [Pages, routing, and FastAPI integration](https://www.nicegui.io/documentation/section_pages_routing)
|
||||
- [Security best practices](https://www.nicegui.io/documentation/section_security)
|
||||
|
||||
## LangGraph
|
||||
|
||||
- LangGraph overview: https://docs.langchain.com/oss/python/langgraph/overview
|
||||
- LangGraph quickstart: https://docs.langchain.com/oss/python/langgraph/quickstart
|
||||
- LangGraph workflows and agents: https://docs.langchain.com/oss/python/langgraph/workflows-agents
|
||||
- LangGraph persistence: https://docs.langchain.com/oss/python/langgraph/persistence
|
||||
- LangGraph memory concepts: https://docs.langchain.com/oss/python/concepts/memory
|
||||
- LangGraph streaming: https://docs.langchain.com/oss/python/langgraph/streaming
|
||||
- LangGraph interrupts and human-in-the-loop: https://docs.langchain.com/oss/python/langgraph/interrupts
|
||||
!!! info "LangGraph sources"
|
||||
- [Overview](https://docs.langchain.com/oss/python/langgraph/overview)
|
||||
- [Quickstart](https://docs.langchain.com/oss/python/langgraph/quickstart)
|
||||
- [Workflows and agents](https://docs.langchain.com/oss/python/langgraph/workflows-agents)
|
||||
- [Persistence](https://docs.langchain.com/oss/python/langgraph/persistence)
|
||||
- [Memory concepts](https://docs.langchain.com/oss/python/concepts/memory)
|
||||
- [Streaming](https://docs.langchain.com/oss/python/langgraph/streaming)
|
||||
- [Interrupts and human-in-the-loop](https://docs.langchain.com/oss/python/langgraph/interrupts)
|
||||
@@ -1,11 +1,11 @@
|
||||
# Pytest Documentation Notes
|
||||
|
||||
Primary references used:
|
||||
- https://docs.pytest.org/en/stable/explanation/goodpractices.html
|
||||
- https://docs.pytest.org/en/stable/how-to/fixtures.html
|
||||
- https://docs.pytest.org/en/stable/example/markers.html
|
||||
- https://docs.pytest.org/en/stable/reference/customize.html
|
||||
- https://docs.pytest.org/en/stable/explanation/flaky.html
|
||||
!!! info "Primary sources"
|
||||
- [Good integration practices](https://docs.pytest.org/en/stable/explanation/goodpractices.html)
|
||||
- [Fixture how-to](https://docs.pytest.org/en/stable/how-to/fixtures.html)
|
||||
- [Marker examples](https://docs.pytest.org/en/stable/example/markers.html)
|
||||
- [Configuration reference](https://docs.pytest.org/en/stable/reference/customize.html)
|
||||
- [Flaky tests](https://docs.pytest.org/en/stable/explanation/flaky.html)
|
||||
|
||||
## Practical Guidance For This Skill
|
||||
- Use src-aligned test layout and keep test discovery conventional.
|
||||
|
||||
@@ -9,7 +9,7 @@ argument-hint: 'Target context (single script, package, FastAPI app, or CLI) and
|
||||
Use this skill to produce a minimal, centralized logging setup using `logging.config.dictConfig`.
|
||||
|
||||
Load references only when needed:
|
||||
- Python logging overview and hierarchy: [./references/python-logging-docs.md](./references/python-logging-docs.md)
|
||||
- Python logging overview and hierarchy: [Python logging references](./references/python-logging-docs.md)
|
||||
|
||||
## When to Use
|
||||
- A project configures logging ad hoc with `basicConfig` across multiple modules.
|
||||
|
||||
@@ -3,14 +3,18 @@
|
||||
Use these official Python docs when applying this skill.
|
||||
|
||||
## Core Documentation
|
||||
- Logging HOWTO: https://docs.python.org/3/howto/logging.html
|
||||
- Logging Cookbook: https://docs.python.org/3/howto/logging-cookbook.html
|
||||
- logging API reference: https://docs.python.org/3/library/logging.html
|
||||
- logging.config reference: https://docs.python.org/3/library/logging.config.html
|
||||
|
||||
!!! info "Core documentation"
|
||||
- [Logging HOWTO](https://docs.python.org/3/howto/logging.html)
|
||||
- [Logging Cookbook](https://docs.python.org/3/howto/logging-cookbook.html)
|
||||
- [logging API reference](https://docs.python.org/3/library/logging.html)
|
||||
- [logging.config reference](https://docs.python.org/3/library/logging.config.html)
|
||||
|
||||
## dictConfig-Specific
|
||||
- Dictionary schema details (`version`, formatters, handlers, loggers, root): https://docs.python.org/3/library/logging.config.html#logging-config-dictschema
|
||||
- `logging.config.dictConfig` function: https://docs.python.org/3/library/logging.config.html#logging.config.dictConfig
|
||||
|
||||
!!! info "dictConfig references"
|
||||
- [Dictionary schema details](https://docs.python.org/3/library/logging.config.html#logging-config-dictschema) for `version`, formatters, handlers, loggers, and root.
|
||||
- [`logging.config.dictConfig`](https://docs.python.org/3/library/logging.config.html#logging.config.dictConfig) function reference.
|
||||
|
||||
## Practical Notes
|
||||
- Prefer app-level centralized config with one startup call to `dictConfig`.
|
||||
|
||||
@@ -24,38 +24,38 @@ Use this as a compact reference for Zensical mechanics and as the place to recor
|
||||
|
||||
Open only what you need:
|
||||
|
||||
- Official docs and source map: [./references/index.md](./references/index.md)
|
||||
- Zensical feature catalog and setup links: [./references/zensical-features.md](./references/zensical-features.md)
|
||||
- Theme, icons, and visual customization: [./references/theme-customization-and-icons.md](./references/theme-customization-and-icons.md)
|
||||
- Writing quality and review criteria: [./references/documentation-quality.md](./references/documentation-quality.md)
|
||||
- Navigation and discoverability patterns: [./references/discoverability-and-ia.md](./references/discoverability-and-ia.md)
|
||||
- Code-heavy docs and API reference patterns: [./references/code-heavy-docs-and-mkdocstrings.md](./references/code-heavy-docs-and-mkdocstrings.md)
|
||||
- Official docs and source map: [source map](./references/index.md)
|
||||
- Zensical feature catalog and setup links: [feature catalog](./references/zensical-features.md)
|
||||
- Theme, icons, and visual customization: [theme customization](./references/theme-customization-and-icons.md)
|
||||
- Writing quality and review criteria: [documentation quality](./references/documentation-quality.md)
|
||||
- Navigation and discoverability patterns: [discoverability and IA](./references/discoverability-and-ia.md)
|
||||
- Code-heavy docs and API reference patterns: [code-heavy docs](./references/code-heavy-docs-and-mkdocstrings.md)
|
||||
|
||||
## Common Cases
|
||||
|
||||
### New docs project
|
||||
|
||||
- Start with `uv run zensical new`.
|
||||
- Then review [./references/index.md](./references/index.md) and [./references/zensical-features.md](./references/zensical-features.md).
|
||||
- Then review the [source map](./references/index.md) and [feature catalog](./references/zensical-features.md).
|
||||
|
||||
### Restructuring docs or navigation
|
||||
|
||||
- Review [./references/discoverability-and-ia.md](./references/discoverability-and-ia.md).
|
||||
- Review [discoverability and IA](./references/discoverability-and-ia.md).
|
||||
- Use it to decide overview pages, section structure, and cross-linking.
|
||||
|
||||
### Improving writing quality
|
||||
|
||||
- Review [./references/documentation-quality.md](./references/documentation-quality.md).
|
||||
- Review [documentation quality](./references/documentation-quality.md).
|
||||
- Use it for page quality gates, trust signals, and review criteria.
|
||||
|
||||
### Adjusting theme or UI mechanics
|
||||
|
||||
- Review [./references/theme-customization-and-icons.md](./references/theme-customization-and-icons.md).
|
||||
- Review [theme customization](./references/theme-customization-and-icons.md).
|
||||
- Use it for icons, color, theme extensions, and presentation choices.
|
||||
|
||||
### Documenting APIs or code-heavy systems
|
||||
|
||||
- Review [./references/code-heavy-docs-and-mkdocstrings.md](./references/code-heavy-docs-and-mkdocstrings.md).
|
||||
- Review [code-heavy docs](./references/code-heavy-docs-and-mkdocstrings.md).
|
||||
- Use it when generated API reference belongs alongside hand-authored docs.
|
||||
|
||||
## Preferences To Maintain Here
|
||||
|
||||
@@ -6,10 +6,10 @@ Use this reference when your docs include API surfaces, function/class documenta
|
||||
|
||||
mkdocstrings helps generate and maintain API reference pages directly from code and docstrings, reducing drift between implementation and docs.
|
||||
|
||||
Primary docs:
|
||||
- mkdocstrings home: https://mkdocstrings.github.io/
|
||||
- mkdocstrings Python handler: https://mkdocstrings.github.io/python/
|
||||
- Griffe (Python parsing engine): https://mkdocstrings.github.io/griffe/
|
||||
!!! info "Primary docs"
|
||||
- [mkdocstrings home](https://mkdocstrings.github.io/)
|
||||
- [mkdocstrings Python handler](https://mkdocstrings.github.io/python/)
|
||||
- [Griffe Python parsing engine](https://mkdocstrings.github.io/griffe/)
|
||||
|
||||
## When to Use It
|
||||
|
||||
@@ -32,13 +32,13 @@ Primary docs:
|
||||
3. Create one API index page per package/domain.
|
||||
4. Expand coverage gradually from high-value modules first.
|
||||
|
||||
General reference examples:
|
||||
- Zensical docs home and setup entry point: https://zensical.org/docs/
|
||||
- Zensical code blocks and authoring patterns: https://zensical.org/docs/authoring/code-blocks/
|
||||
- Zensical customization overview: https://zensical.org/docs/customization/
|
||||
!!! info "General reference examples"
|
||||
- [Zensical docs home and setup entry point](https://zensical.org/docs/)
|
||||
- [Zensical code blocks and authoring patterns](https://zensical.org/docs/authoring/code-blocks/)
|
||||
- [Zensical customization overview](https://zensical.org/docs/customization/)
|
||||
|
||||
Compatibility note:
|
||||
- Zensical is generally expected to remain compatible with MkDocs-style configuration patterns, but prefer Zensical-native documentation and examples when they cover the same behavior.
|
||||
!!! note "Compatibility"
|
||||
Zensical is generally expected to remain compatible with MkDocs-style configuration patterns, but prefer Zensical-native documentation and examples when they cover the same behavior.
|
||||
|
||||
## Authoring Guidance for Docstrings
|
||||
|
||||
|
||||
@@ -13,9 +13,9 @@ Recommended top-level model:
|
||||
3. Reference (API, config, command catalog)
|
||||
4. Troubleshoot (symptoms, diagnostics, fixes)
|
||||
|
||||
References:
|
||||
- Diataxis framework: https://diataxis.fr/
|
||||
- Divio documentation system: https://documentation.divio.com/
|
||||
!!! info "IA references"
|
||||
- [Diataxis framework](https://diataxis.fr/)
|
||||
- [Divio documentation system](https://documentation.divio.com/)
|
||||
|
||||
## Progressive Discoverability Pattern
|
||||
|
||||
@@ -47,11 +47,11 @@ Keep deep details in dedicated reference pages and link to them from task pages
|
||||
3. Place high-frequency tasks near the top.
|
||||
4. Keep section depth shallow where possible.
|
||||
|
||||
Relevant Zensical configuration docs:
|
||||
- Navigation: https://zensical.org/docs/setup/navigation/
|
||||
- Search: https://zensical.org/docs/setup/search/
|
||||
- Header: https://zensical.org/docs/setup/header/
|
||||
- Footer: https://zensical.org/docs/setup/footer/
|
||||
!!! info "Relevant Zensical configuration docs"
|
||||
- [Navigation setup](https://zensical.org/docs/setup/navigation/)
|
||||
- [Search setup](https://zensical.org/docs/setup/search/)
|
||||
- [Header setup](https://zensical.org/docs/setup/header/)
|
||||
- [Footer setup](https://zensical.org/docs/setup/footer/)
|
||||
|
||||
## Link Strategy
|
||||
|
||||
|
||||
@@ -10,10 +10,10 @@ Use this reference when writing or reviewing docs for clarity, correctness, and
|
||||
4. Make examples executable and verifiable.
|
||||
5. Prefer precise language over marketing language.
|
||||
|
||||
Primary references:
|
||||
- Diataxis: https://diataxis.fr/
|
||||
- Divio documentation system: https://documentation.divio.com/
|
||||
- Write the Docs guide: https://www.writethedocs.org/guide/
|
||||
!!! info "Primary references"
|
||||
- [Diataxis](https://diataxis.fr/)
|
||||
- [Divio documentation system](https://documentation.divio.com/)
|
||||
- [Write the Docs guide](https://www.writethedocs.org/guide/)
|
||||
|
||||
## Style and Readability
|
||||
|
||||
@@ -22,10 +22,10 @@ Primary references:
|
||||
- Prefer active voice and imperative instructions for task pages.
|
||||
- Add notes/warnings only for high-impact caveats.
|
||||
|
||||
Source links:
|
||||
- Google developer style: https://developers.google.com/style
|
||||
- Microsoft Writing Style Guide: https://learn.microsoft.com/style-guide/welcome/
|
||||
- MDN writing guidelines: https://developer.mozilla.org/en-US/docs/MDN/Writing_guidelines
|
||||
!!! info "Style sources"
|
||||
- [Google developer style](https://developers.google.com/style)
|
||||
- [Microsoft Writing Style Guide](https://learn.microsoft.com/style-guide/welcome/)
|
||||
- [MDN writing guidelines](https://developer.mozilla.org/en-US/docs/MDN/Writing_guidelines)
|
||||
|
||||
## Task Page Quality Pattern
|
||||
|
||||
|
||||
@@ -4,40 +4,43 @@ Use this index to load only the source references needed for the current task.
|
||||
|
||||
## Zensical Official Docs
|
||||
|
||||
- New project scaffolding (`uv run zensical new`): https://zensical.org/docs/
|
||||
- Home: https://zensical.org/docs/
|
||||
- Setup basics: https://zensical.org/docs/setup/basics/
|
||||
- Navigation setup: https://zensical.org/docs/setup/navigation/
|
||||
- Header setup and announcement bar: https://zensical.org/docs/setup/header/
|
||||
- Footer setup: https://zensical.org/docs/setup/footer/
|
||||
- Repository and content actions: https://zensical.org/docs/setup/repository/
|
||||
- Search setup: https://zensical.org/docs/setup/search/
|
||||
- Customization overview: https://zensical.org/docs/customization/
|
||||
- Additional CSS: https://zensical.org/docs/customization/#additional-css
|
||||
- Additional JavaScript: https://zensical.org/docs/customization/#additional-javascript
|
||||
- Theme extension and overrides: https://zensical.org/docs/customization/#extending-the-theme
|
||||
- Language setup: https://zensical.org/docs/setup/language/
|
||||
- Logo and icons: https://zensical.org/docs/setup/logo-and-icons/
|
||||
- Code blocks and annotations: https://zensical.org/docs/authoring/code-blocks/
|
||||
- Content tabs: https://zensical.org/docs/authoring/content-tabs/
|
||||
- Footnotes: https://zensical.org/docs/authoring/footnotes/
|
||||
- Tooltips: https://zensical.org/docs/authoring/tooltips/
|
||||
!!! info "Zensical official docs"
|
||||
- [New project scaffolding](https://zensical.org/docs/) for `uv run zensical new`.
|
||||
- [Home](https://zensical.org/docs/)
|
||||
- [Setup basics](https://zensical.org/docs/setup/basics/)
|
||||
- [Navigation setup](https://zensical.org/docs/setup/navigation/)
|
||||
- [Header setup and announcement bar](https://zensical.org/docs/setup/header/)
|
||||
- [Footer setup](https://zensical.org/docs/setup/footer/)
|
||||
- [Repository and content actions](https://zensical.org/docs/setup/repository/)
|
||||
- [Search setup](https://zensical.org/docs/setup/search/)
|
||||
- [Customization overview](https://zensical.org/docs/customization/)
|
||||
- [Additional CSS](https://zensical.org/docs/customization/#additional-css)
|
||||
- [Additional JavaScript](https://zensical.org/docs/customization/#additional-javascript)
|
||||
- [Theme extension and overrides](https://zensical.org/docs/customization/#extending-the-theme)
|
||||
- [Language setup](https://zensical.org/docs/setup/language/)
|
||||
- [Logo and icons](https://zensical.org/docs/setup/logo-and-icons/)
|
||||
- [Code blocks and annotations](https://zensical.org/docs/authoring/code-blocks/)
|
||||
- [Content tabs](https://zensical.org/docs/authoring/content-tabs/)
|
||||
- [Footnotes](https://zensical.org/docs/authoring/footnotes/)
|
||||
- [Tooltips](https://zensical.org/docs/authoring/tooltips/)
|
||||
|
||||
## Adjacent Documentation Quality Sources
|
||||
|
||||
- Divio documentation system: https://documentation.divio.com/
|
||||
- Write the Docs guide: https://www.writethedocs.org/guide/
|
||||
- Google developer documentation style guide: https://developers.google.com/style
|
||||
- Microsoft Writing Style Guide: https://learn.microsoft.com/style-guide/welcome/
|
||||
- MDN writing guidelines: https://developer.mozilla.org/en-US/docs/MDN/Writing_guidelines
|
||||
- Diataxis framework: https://diataxis.fr/
|
||||
!!! info "Documentation quality sources"
|
||||
- [Divio documentation system](https://documentation.divio.com/)
|
||||
- [Write the Docs guide](https://www.writethedocs.org/guide/)
|
||||
- [Google developer documentation style guide](https://developers.google.com/style)
|
||||
- [Microsoft Writing Style Guide](https://learn.microsoft.com/style-guide/welcome/)
|
||||
- [MDN writing guidelines](https://developer.mozilla.org/en-US/docs/MDN/Writing_guidelines)
|
||||
- [Diataxis framework](https://diataxis.fr/)
|
||||
|
||||
## Related Tooling References
|
||||
|
||||
- Markdown guide: https://www.markdownguide.org/
|
||||
- Zensical setup and configuration entry point: https://zensical.org/docs/
|
||||
- Zensical customization reference: https://zensical.org/docs/customization/
|
||||
- mkdocstrings: https://mkdocstrings.github.io/
|
||||
!!! info "Related tooling"
|
||||
- [Markdown guide](https://www.markdownguide.org/)
|
||||
- [Zensical setup and configuration entry point](https://zensical.org/docs/)
|
||||
- [Zensical customization reference](https://zensical.org/docs/customization/)
|
||||
- [mkdocstrings](https://mkdocstrings.github.io/)
|
||||
|
||||
## Skill-Specific Deep Dives
|
||||
|
||||
|
||||
@@ -15,11 +15,12 @@ Always start new projects with `uv run zensical new` so the baseline theme/confi
|
||||
|
||||
## Key Zensical Customization Surfaces
|
||||
|
||||
- Customization overview: https://zensical.org/docs/customization/
|
||||
- Additional CSS: https://zensical.org/docs/customization/#additional-css
|
||||
- Additional JavaScript: https://zensical.org/docs/customization/#additional-javascript
|
||||
- Extending the theme: https://zensical.org/docs/customization/#extending-the-theme
|
||||
- Logo and icons setup: https://zensical.org/docs/setup/logo-and-icons/
|
||||
!!! info "Zensical sources"
|
||||
- [Customization overview](https://zensical.org/docs/customization/)
|
||||
- [Additional CSS](https://zensical.org/docs/customization/#additional-css)
|
||||
- [Additional JavaScript](https://zensical.org/docs/customization/#additional-javascript)
|
||||
- [Extending the theme](https://zensical.org/docs/customization/#extending-the-theme)
|
||||
- [Logo and icons setup](https://zensical.org/docs/setup/logo-and-icons/)
|
||||
|
||||
## Colors and Accessibility
|
||||
|
||||
@@ -27,21 +28,22 @@ Always start new projects with `uv run zensical new` so the baseline theme/confi
|
||||
- Keep contrast high for body text, code blocks, and nav labels.
|
||||
- Test color changes on mobile and desktop, including search highlights and active nav states.
|
||||
|
||||
General references:
|
||||
- Material design color guidance: https://m3.material.io/styles/color
|
||||
- WCAG overview: https://www.w3.org/WAI/standards-guidelines/wcag/
|
||||
!!! info "General references"
|
||||
- [Material Design color guidance](https://m3.material.io/styles/color)
|
||||
- [WCAG overview](https://www.w3.org/WAI/standards-guidelines/wcag/)
|
||||
|
||||
## Icons: Selection and Search Landing Pages
|
||||
|
||||
If your theme supports icon sets through your docs stack, these search portals are useful:
|
||||
|
||||
- Material Symbols search: https://fonts.google.com/icons
|
||||
- Font Awesome icons search: https://fontawesome.com/search
|
||||
- Simple Icons search: https://simpleicons.org/
|
||||
- Iconify icon set search: https://icon-sets.iconify.design/
|
||||
- Lucide icons: https://lucide.dev/icons/
|
||||
- [Material Symbols search](https://fonts.google.com/icons)
|
||||
- [Font Awesome icons search](https://fontawesome.com/search)
|
||||
- [Simple Icons search](https://simpleicons.org/)
|
||||
- [Iconify icon set search](https://icon-sets.iconify.design/)
|
||||
- [Lucide icons](https://lucide.dev/icons/)
|
||||
|
||||
Tip: pick one primary icon family for navigation and status icons, then document naming conventions.
|
||||
!!! tip "Icon family consistency"
|
||||
Pick one primary icon family for navigation and status icons, then document naming conventions.
|
||||
|
||||
## Extending the Theme Safely
|
||||
|
||||
|
||||
@@ -21,8 +21,8 @@ Always start a new docs project with `uv run zensical new`.
|
||||
- `navigation.top`: shows a back-to-top affordance.
|
||||
- `navigation.tracking`: keeps URL anchors in sync with active section.
|
||||
|
||||
Source links:
|
||||
- https://zensical.org/docs/setup/navigation/
|
||||
!!! info "Source links"
|
||||
- [Zensical navigation setup](https://zensical.org/docs/setup/navigation/)
|
||||
|
||||
### Code-Heavy Documentation
|
||||
|
||||
@@ -32,9 +32,9 @@ Source links:
|
||||
- Prefer mkdocstrings for generated API reference pages when documenting Python code.
|
||||
- Keep generated API pages linked from hand-authored task and concept docs.
|
||||
|
||||
Source links:
|
||||
- https://zensical.org/docs/authoring/code-blocks/
|
||||
- https://mkdocstrings.github.io/
|
||||
!!! info "Source links"
|
||||
- [Zensical code blocks](https://zensical.org/docs/authoring/code-blocks/)
|
||||
- [mkdocstrings](https://mkdocstrings.github.io/)
|
||||
|
||||
### Cross-Page UX Consistency
|
||||
|
||||
@@ -42,19 +42,19 @@ Source links:
|
||||
- `content.tooltips`: improves tooltip behavior for links.
|
||||
- `content.footnote.tooltips`: inline footnote previews.
|
||||
|
||||
Source links:
|
||||
- https://zensical.org/docs/authoring/content-tabs/
|
||||
- https://zensical.org/docs/authoring/tooltips/
|
||||
- https://zensical.org/docs/authoring/footnotes/
|
||||
!!! info "Source links"
|
||||
- [Zensical content tabs](https://zensical.org/docs/authoring/content-tabs/)
|
||||
- [Zensical tooltips](https://zensical.org/docs/authoring/tooltips/)
|
||||
- [Zensical footnotes](https://zensical.org/docs/authoring/footnotes/)
|
||||
|
||||
### Search and Content Actions
|
||||
|
||||
- `search.highlight`: highlights matches after search navigation.
|
||||
- `content.action.edit` and `content.action.view` (if repository integration is configured).
|
||||
|
||||
Source links:
|
||||
- https://zensical.org/docs/setup/search/
|
||||
- https://zensical.org/docs/setup/repository/
|
||||
!!! info "Source links"
|
||||
- [Zensical search setup](https://zensical.org/docs/setup/search/)
|
||||
- [Zensical repository setup](https://zensical.org/docs/setup/repository/)
|
||||
|
||||
## Styling and Extensibility
|
||||
|
||||
@@ -64,11 +64,11 @@ Use site-level customization when docs need stronger visual affordances.
|
||||
- `extra_javascript`: add behavior enhancements.
|
||||
- Theme override directory (`custom_dir`) for template-level changes.
|
||||
|
||||
Source links:
|
||||
- https://zensical.org/docs/customization/
|
||||
- https://zensical.org/docs/customization/#additional-css
|
||||
- https://zensical.org/docs/customization/#additional-javascript
|
||||
- https://zensical.org/docs/customization/#extending-the-theme
|
||||
!!! info "Source links"
|
||||
- [Zensical customization overview](https://zensical.org/docs/customization/)
|
||||
- [Additional CSS](https://zensical.org/docs/customization/#additional-css)
|
||||
- [Additional JavaScript](https://zensical.org/docs/customization/#additional-javascript)
|
||||
- [Extending the theme](https://zensical.org/docs/customization/#extending-the-theme)
|
||||
|
||||
## Practical Feature Selection Rules
|
||||
|
||||
|
||||
+62
-4
@@ -44,10 +44,68 @@ Copyright © 2026 The authors
|
||||
# can be defined using TOML syntax.
|
||||
#
|
||||
# Read more: https://zensical.org/docs/setup/navigation/
|
||||
# nav = [
|
||||
# { "Get started" = "index.md" },
|
||||
# { "Markdown in 5min" = "markdown.md" },
|
||||
# ]
|
||||
nav = [
|
||||
{ "Home" = "index.md" },
|
||||
{ "Guide" = [
|
||||
{ "Arch" = "architecture.md" },
|
||||
{ "MCP" = "mcp_layout.md" },
|
||||
{ "Copilot" = "copilot.md" },
|
||||
{ "Usage" = "usage.md" },
|
||||
{ "New Skill" = "new_skill.md" },
|
||||
{ "Security" = "securing.md" },
|
||||
] },
|
||||
{ "Skills" = [
|
||||
{ "Copilot" = [
|
||||
{ "Overview" = "skills/copilot-customization/SKILL.md" },
|
||||
{ "VS Code" = "skills/copilot-customization/references/vscode-customization.md" },
|
||||
] },
|
||||
{ "FastAPI UV" = [
|
||||
{ "Overview" = "skills/fastapi-uv-docker/SKILL.md" },
|
||||
{ "Best" = "skills/fastapi-uv-docker/references/fastapi-best-practices.md" },
|
||||
{ "Layout" = "skills/fastapi-uv-docker/references/uv-project-layout.md" },
|
||||
{ "Uvicorn" = "skills/fastapi-uv-docker/references/uvicorn-settings.md" },
|
||||
{ "Docker" = "skills/fastapi-uv-docker/references/docker-cloud-native.md" },
|
||||
] },
|
||||
{ "Async SQLA" = [
|
||||
{ "Overview" = "skills/fastapi-async-sqlalchemy-modernization/SKILL.md" },
|
||||
{ "Index" = "skills/fastapi-async-sqlalchemy-modernization/references/index.md" },
|
||||
{ "Engine" = "skills/fastapi-async-sqlalchemy-modernization/references/engine.md" },
|
||||
{ "Session" = "skills/fastapi-async-sqlalchemy-modernization/references/session.md" },
|
||||
{ "Tx" = "skills/fastapi-async-sqlalchemy-modernization/references/transactions.md" },
|
||||
{ "IO" = "skills/fastapi-async-sqlalchemy-modernization/references/implicit_io.md" },
|
||||
{ "Obs" = "skills/fastapi-async-sqlalchemy-modernization/references/observability.md" },
|
||||
{ "Template" = "skills/fastapi-async-sqlalchemy-modernization/references/template.md" },
|
||||
] },
|
||||
{ "NiceGUI" = [
|
||||
{ "Overview" = "skills/nicegui/SKILL.md" },
|
||||
{ "Arch" = "skills/nicegui/references/architecture.md" },
|
||||
{ "Sources" = "skills/nicegui/references/source-documentation.md" },
|
||||
] },
|
||||
{ "NiceGUI UI" = [
|
||||
{ "Overview" = "skills/nicegui-ui-customization/SKILL.md" },
|
||||
{ "Style" = "skills/nicegui-ui-customization/references/architecture-and-styling.md" },
|
||||
{ "Flows" = "skills/nicegui-ui-customization/references/interaction-patterns.md" },
|
||||
{ "Quality" = "skills/nicegui-ui-customization/references/troubleshooting-and-quality-gates.md" },
|
||||
] },
|
||||
{ "Pytest" = [
|
||||
{ "Overview" = "skills/pytest-scaffolding/SKILL.md" },
|
||||
{ "Docs" = "skills/pytest-scaffolding/references/pytest-docs.md" },
|
||||
] },
|
||||
{ "Logging" = [
|
||||
{ "Overview" = "skills/python-logging-dictconfig/SKILL.md" },
|
||||
{ "Docs" = "skills/python-logging-dictconfig/references/python-logging-docs.md" },
|
||||
] },
|
||||
{ "Zensical" = [
|
||||
{ "Overview" = "skills/zensical-docs/SKILL.md" },
|
||||
{ "Map" = "skills/zensical-docs/references/index.md" },
|
||||
{ "Features" = "skills/zensical-docs/references/zensical-features.md" },
|
||||
{ "Theme" = "skills/zensical-docs/references/theme-customization-and-icons.md" },
|
||||
{ "Quality" = "skills/zensical-docs/references/documentation-quality.md" },
|
||||
{ "IA" = "skills/zensical-docs/references/discoverability-and-ia.md" },
|
||||
{ "API Docs" = "skills/zensical-docs/references/code-heavy-docs-and-mkdocstrings.md" },
|
||||
] },
|
||||
] },
|
||||
]
|
||||
|
||||
# With the "extra_css" option you can add your own CSS styling to customize
|
||||
# your Zensical project according to your needs. You can add any number of
|
||||
|
||||
Reference in New Issue
Block a user