linter + новые таски
This commit is contained in:
@@ -66,25 +66,28 @@ You **MUST** consider the user input before proceeding (if not empty).
|
||||
|
||||
0. **Validate Design against UX Reference**:
|
||||
- Check if the proposed architecture supports the latency, interactivity, and flow defined in `ux_reference.md`.
|
||||
- **CRITICAL**: If the technical plan requires compromising the UX defined in `ux_reference.md` (e.g. "We can't do real-time validation because X"), you **MUST STOP** and warn the user. Do not proceed until resolved.
|
||||
- **Linkage**: Ensure key UI states from `ux_reference.md` map to Component Contracts (`@UX_STATE`).
|
||||
- **CRITICAL**: If the technical plan compromises the UX (e.g. "We can't do real-time validation"), you **MUST STOP** and warn the user.
|
||||
|
||||
1. **Extract entities from feature spec** → `data-model.md`:
|
||||
- Entity name, fields, relationships
|
||||
- Validation rules from requirements
|
||||
- State transitions if applicable
|
||||
- Entity name, fields, relationships, validation rules.
|
||||
|
||||
2. **Define Module & Function Contracts (Semantic Protocol)**:
|
||||
- **MANDATORY**: For every new module, define the [DEF] Header and Module-level Contract (@TIER, @PURPOSE, @INVARIANT) as per `semantic_protocol.md`.
|
||||
- **REQUIRED**: Define Function Contracts (@PRE, @POST) for critical logic.
|
||||
- Output specific contract definitions to `contracts/modules.md` or append to `data-model.md` to guide implementation.
|
||||
- Ensure strict adherence to `semantic_protocol.md` syntax.
|
||||
2. **Design & Verify Contracts (Semantic Protocol)**:
|
||||
- **Drafting**: Define [DEF] Headers and Contracts for all new modules based on `semantic_protocol.md`.
|
||||
- **Self-Review**:
|
||||
- *Completeness*: Do `@PRE`/`@POST` cover edge cases identified in Research?
|
||||
- *Connectivity*: Do `@RELATION` tags form a coherent graph?
|
||||
- *Compliance*: Does syntax match `[DEF:id:Type]` exactly?
|
||||
- **Output**: Write verified contracts to `contracts/modules.md`.
|
||||
|
||||
3. **Generate API contracts** from functional requirements:
|
||||
- For each user action → endpoint
|
||||
- Use standard REST/GraphQL patterns
|
||||
- Output OpenAPI/GraphQL schema to `/contracts/`
|
||||
3. **Simulate Contract Usage**:
|
||||
- Trace one key user scenario through the defined contracts to ensure data flow continuity.
|
||||
- If a contract interface mismatch is found, fix it immediately.
|
||||
|
||||
3. **Agent context update**:
|
||||
4. **Generate API contracts**:
|
||||
- Output OpenAPI/GraphQL schema to `/contracts/` for backend-frontend sync.
|
||||
|
||||
5. **Agent context update**:
|
||||
- Run `.specify/scripts/bash/update-agent-context.sh kilocode`
|
||||
- These scripts detect which AI agent is in use
|
||||
- Update the appropriate agent-specific context file
|
||||
|
||||
@@ -1,9 +1,16 @@
|
||||
---
|
||||
description: Run semantic validation and functional tests for a specific feature, module, or file.
|
||||
№ **speckit.tasks.md**
|
||||
### Modified Workflow
|
||||
|
||||
```markdown
|
||||
description: Generate an actionable, dependency-ordered tasks.md for the feature based on available design artifacts.
|
||||
handoffs:
|
||||
- label: Fix Implementation
|
||||
- label: Analyze For Consistency
|
||||
agent: speckit.analyze
|
||||
prompt: Run a project analysis for consistency
|
||||
send: true
|
||||
- label: Implement Project
|
||||
agent: speckit.implement
|
||||
prompt: Fix the issues found during testing...
|
||||
prompt: Start the implementation in phases
|
||||
send: true
|
||||
---
|
||||
|
||||
@@ -13,54 +20,97 @@ handoffs:
|
||||
$ARGUMENTS
|
||||
```
|
||||
|
||||
**Input format:** Can be a file path, a directory, or a feature name.
|
||||
You **MUST** consider the user input before proceeding (if not empty).
|
||||
|
||||
## Outline
|
||||
|
||||
1. **Context Analysis**:
|
||||
- Determine the target scope (Backend vs Frontend vs Full Feature).
|
||||
- Read `semantic_protocol.md` to load validation rules.
|
||||
1. **Setup**: Run `.specify/scripts/bash/check-prerequisites.sh --json` from repo root and parse FEATURE_DIR and AVAILABLE_DOCS list. All paths must be absolute.
|
||||
|
||||
2. **Phase 1: Semantic Static Analysis (The "Compiler" Check)**
|
||||
- **Command:** Use `grep` or script to verify Protocol compliance before running code.
|
||||
- **Check:**
|
||||
- Does the file start with `[DEF:...]` header?
|
||||
- Are `@TIER` and `@PURPOSE` defined?
|
||||
- Are imports located *after* the contracts?
|
||||
- Do functions marked "Critical" have `@PRE`/`@POST` tags?
|
||||
- **Action:** If this phase fails, **STOP** and report "Semantic Compilation Failed". Do not run runtime tests.
|
||||
2. **Load design documents**: Read from FEATURE_DIR:
|
||||
- **Required**: plan.md (tech stack, libraries, structure), spec.md (user stories with priorities), ux_reference.md (experience source of truth)
|
||||
- **Optional**: data-model.md (entities), contracts/ (API endpoints), research.md (decisions)
|
||||
|
||||
3. **Phase 2: Environment Prep**
|
||||
- Detect project type:
|
||||
- **Python**: Check if `.venv` is active.
|
||||
- **Svelte**: Check if `node_modules` exists.
|
||||
- **Command:** Run linter (e.g., `ruff check`, `eslint`) to catch syntax errors immediately.
|
||||
3. **Execute task generation workflow**:
|
||||
- **Architecture Analysis (CRITICAL)**: Scan existing codebase for patterns (DI, Auth, ORM).
|
||||
- Load plan.md/spec.md.
|
||||
- Generate tasks organized by user story.
|
||||
- **Apply Fractal Co-location**: Ensure all unit tests are mapped to `__tests__` subdirectories relative to the code.
|
||||
- Validate task completeness.
|
||||
|
||||
4. **Phase 3: Test Execution (Runtime)**
|
||||
- Select the test runner based on the file path:
|
||||
- **Backend (`*.py`)**:
|
||||
- Command: `pytest <path_to_test_file> -v`
|
||||
- If no specific test file exists, try to find it by convention: `tests/test_<module_name>.py`.
|
||||
- **Frontend (`*.svelte`, `*.ts`)**:
|
||||
- Command: `npm run test -- <path_to_component>`
|
||||
|
||||
- **Verification**:
|
||||
- Analyze output logs.
|
||||
- If tests fail, summarize the failure (AssertionError, Timeout, etc.).
|
||||
4. **Generate tasks.md**: Use `.specify/templates/tasks-template.md` as structure.
|
||||
- Phase 1: Context & Setup.
|
||||
- Phase 2: Foundational tasks.
|
||||
- Phase 3+: User Stories (Priority order).
|
||||
- Final Phase: Polish.
|
||||
- **Strict Constraint**: Ensure tasks follow the Co-location and Mocking rules below.
|
||||
|
||||
5. **Phase 4: Contract Coverage Check (Manual/LLM verify)**
|
||||
- Review the test cases executed.
|
||||
- **Question**: Do the tests explicitly verify the `@POST` guarantees defined in the module header?
|
||||
- **Report**: Mark as "Weak Coverage" if contracts exist but aren't tested.
|
||||
5. **Report**: Output path to generated tasks.md and summary.
|
||||
|
||||
## Execution Rules
|
||||
Context for task generation: $ARGUMENTS
|
||||
|
||||
- **Fail Fast**: If semantic headers are missing, don't waste time running pytest.
|
||||
- **No Silent Failures**: Always output the full error log if a command fails.
|
||||
- **Auto-Correction Hint**: If a test fails, suggest the specific `speckit.implement` command to fix it.
|
||||
## Task Generation Rules
|
||||
|
||||
## Example Commands
|
||||
**CRITICAL**: Tasks MUST be actionable, specific, architecture-aware, and context-local.
|
||||
|
||||
- **Python**: `pytest backend/tests/test_auth.py`
|
||||
- **Svelte**: `npm run test:unit -- src/components/Button.svelte`
|
||||
- **Lint**: `ruff check backend/src/api/`
|
||||
### Implementation & Testing Constraints (ANTI-LOOP & CO-LOCATION)
|
||||
|
||||
To prevent infinite debugging loops and context fragmentation, apply these rules:
|
||||
|
||||
1. **Fractal Co-location Strategy (MANDATORY)**:
|
||||
- **Rule**: Unit tests MUST live next to the code they verify.
|
||||
- **Forbidden**: Do NOT create unit tests in root `tests/` or `backend/tests/`. Those are for E2E/Integration only.
|
||||
- **Pattern (Python)**:
|
||||
- Source: `src/domain/order/processing.py`
|
||||
- Test Task: `Create tests in src/domain/order/__tests__/test_processing.py`
|
||||
- **Pattern (Frontend)**:
|
||||
- Source: `src/lib/components/UserCard.svelte`
|
||||
- Test Task: `Create tests in src/lib/components/__tests__/UserCard.test.ts`
|
||||
|
||||
2. **Semantic Relations**:
|
||||
- Test generation tasks must explicitly instruct to add the relation header: `# @RELATION: VERIFIES -> [TargetComponent]`
|
||||
|
||||
3. **Strict Mocking for Unit Tests**:
|
||||
- Any task creating Unit Tests MUST specify: *"Use `unittest.mock.MagicMock` for heavy dependencies (DB sessions, Auth). Do NOT instantiate real service classes."*
|
||||
|
||||
4. **Schema/Model Separation**:
|
||||
- Explicitly separate tasks for ORM Models (SQLAlchemy) and Pydantic Schemas.
|
||||
|
||||
### UX Preservation (CRITICAL)
|
||||
|
||||
- **Source of Truth**: `ux_reference.md` is the absolute standard.
|
||||
- **Verification Task**: You **MUST** add a specific task at the end of each User Story phase: `- [ ] Txxx [USx] Verify implementation matches ux_reference.md (Happy Path & Errors)`
|
||||
|
||||
### Checklist Format (REQUIRED)
|
||||
|
||||
Every task MUST strictly follow this format:
|
||||
|
||||
```text
|
||||
- [ ] [TaskID] [P?] [Story?] Description with file path
|
||||
```
|
||||
|
||||
**Examples**:
|
||||
- ✅ `- [ ] T005 [US1] Create unit tests for OrderService in src/services/__tests__/test_order.py (Mock DB)`
|
||||
- ✅ `- [ ] T006 [US1] Implement OrderService in src/services/order.py`
|
||||
- ❌ `- [ ] T005 [US1] Create tests in backend/tests/test_order.py` (VIOLATION: Wrong location)
|
||||
|
||||
### Task Organization & Phase Structure
|
||||
|
||||
**Phase 1: Context & Setup**
|
||||
- **Goal**: Prepare environment and understand existing patterns.
|
||||
- **Mandatory Task**: `- [ ] T001 Analyze existing project structure, auth patterns, and `conftest.py` location`
|
||||
|
||||
**Phase 2: Foundational (Data & Core)**
|
||||
- Database Models (ORM).
|
||||
- Pydantic Schemas (DTOs).
|
||||
- Core Service interfaces.
|
||||
|
||||
**Phase 3+: User Stories (Iterative)**
|
||||
- **Step 1: Isolation Tests (Co-located)**:
|
||||
- `- [ ] Txxx [USx] Create unit tests for [Component] in [Path]/__tests__/test_[name].py`
|
||||
- *Note: Specify using MagicMock for external deps.*
|
||||
- **Step 2: Implementation**: Services -> Endpoints.
|
||||
- **Step 3: Integration**: Wire up real dependencies (if E2E tests requested).
|
||||
- **Step 4: UX Verification**.
|
||||
|
||||
**Final Phase: Polish**
|
||||
- Linting, formatting, final manual verify.
|
||||
|
||||
Reference in New Issue
Block a user