4.8 KiB
Fill plugs/composables spec
Goal
Analyze the plugs/composables/ directory and fill the coding spec with real code patterns, examples, and anti-patterns from the actual codebase.
Context
Project Overview
- Type: Vue 3 Component Library (Element Plus based)
- Framework: Vue 3 + TypeScript + Vite
- Key Patterns: Composables, API Layer, Store Pattern, Element UI Wrappers
Architecture
This is a Vue 3 component library built on Element Plus. The plugs/composables/ directory contains reusable Vue composition API functions that encapsulate complex stateful logic.
Key Composables (from GitNexus analysis)
| Composable | File | Purpose |
|---|---|---|
useListTable |
plugs/composables/useListTable.ts | List/table management with pagination |
useModifyForm |
plugs/composables/useModifyForm.ts | Form open/edit/add flow |
useLoading |
plugs/composables/useLoading.ts | Loading state management |
useActionPers |
plugs/composables/useActionPers.ts | Action permissions |
useRefreshFlags |
plugs/composables/useRefreshFlags.ts | Refresh flag management for auto-refresh |
useSysDict |
plugs/composables/useSysDict.ts | System dictionary |
useWatchOnce |
plugs/composables/useWatchOnce.ts | One-time watch utility |
Execution Flows (from GitNexus)
OpenAdd → NormalizeValue → ClearObject(useModifyForm flow)OpenEdit → NormalizeValue → ClearObject(useModifyForm flow)DeleteById → Loading → Close(CRUD flow)
Tools Available
You have two MCP servers configured — use both for accurate specs:
GitNexus MCP (architecture-level: clusters, execution flows, impact)
| Tool | Purpose | Example |
|---|---|---|
gitnexus_query |
Find execution flows by concept | gitnexus_query({query: "useListTable"}) |
gitnexus_context |
360-degree symbol view | gitnexus_context({name: "useListTable"}) |
gitnexus_impact |
Blast radius analysis | gitnexus_impact({target: "useListTable", direction: "upstream"}) |
gitnexus_cypher |
Direct graph queries | gitnexus_cypher({query: "MATCH (f:Function) WHERE f.name STARTS WITH 'use' RETURN f.name, f.filePath"}) |
ABCoder MCP (symbol-level: AST nodes, signatures, cross-file deps)
| Tool | Purpose | Example |
|---|---|---|
get_repo_structure |
Full file listing | get_repo_structure({repo_name: "noob-components"}) |
get_file_structure |
All nodes in a file | get_file_structure({repo_name: "noob-components", file_path: "plugs/composables/useListTable.ts"}) |
get_ast_node |
Code + deps + refs | get_ast_node({repo_name: "noob-components", node_ids: [...]}) |
Recommended Workflow
- GitNexus first — find relevant execution flows and clusters
- ABCoder second — get exact code patterns and signatures
- Read source files — for full context where needed
- Write specs — with real code examples from steps 2-3
Files to Fill
Primary files to analyze and document:
-
plugs/composables/useListTable.ts - Main list/table composable
- Pagination handling
- Table data management
- Search/filter integration
-
plugs/composables/useModifyForm.ts - Form manipulation
- OpenAdd, OpenEdit, ClearObject flow
- Form state normalization
- Props interface:
FormProp,Options
-
plugs/composables/useLoading.ts - Loading state
- Simple boolean toggle
- Async operation wrapping
-
plugs/composables/useRefreshFlags.ts - Auto-refresh flags
- Flag-based refresh triggers
- Timer management
-
plugs/composables/useActionPers.ts - Action permissions
- Permission checking integration
-
plugs/composables/useSysDict.ts - System dictionary
- Dictionary data fetching
-
plugs/composables/useWatchOnce.ts - One-time watcher
- Watch logic that auto-unmonuts
Supporting files:
- plugs/composables/index.ts - Public exports
Important Rules
Spec files are NOT fixed — adapt to reality
- Delete template files that don't apply
- Create new files for patterns templates don't cover
- Rename files if template names don't fit
- Update index.md to reflect the final set
Parallel agents — stay in your lane
- ONLY modify files under your assigned spec directory
- DO NOT modify source code, other spec directories, or task files
- DO NOT run git commands
- You may read any file for analysis
Acceptance Criteria
- Real code examples from the actual codebase (with file paths)
- Each composable has documented: purpose, signature, usage pattern
- Anti-patterns documented (if any found)
- No placeholder text remaining
- index.md reflects actual file set
Technical Notes
- Language: TypeScript
- Framework: Vue 3 Composition API
- Related: Element Plus, VueUse patterns
- Imports often from:
plugs/http/axios,plugs/element/message,plugs/api/*