initial setup for autoresearch of sequence diagram prompt
This commit is contained in:
@@ -0,0 +1,54 @@
|
||||
---
|
||||
name: sequence-diagram
|
||||
description: Generate a Mermaid sequence diagram showing message flow across module boundaries for an Elixir/Phoenix interaction. Use when asked to diagram, trace, or visualize a user interaction, request flow, or feature path through the codebase.
|
||||
---
|
||||
|
||||
# Sequence Diagram Skill
|
||||
|
||||
Generate a Mermaid `sequenceDiagram` that traces a specific user interaction
|
||||
across module boundaries in an Elixir/Phoenix codebase.
|
||||
|
||||
## Your Task
|
||||
|
||||
Given a description of an interaction (e.g., "user clicks a tag on a blog post")
|
||||
and access to the source files, produce a Mermaid sequence diagram that accurately
|
||||
shows the message flow between modules.
|
||||
|
||||
## Process
|
||||
|
||||
1. **Identify the entry point.** What triggers this interaction? (HTTP request,
|
||||
LiveView event, PubSub message, etc.)
|
||||
2. **Read the router** to find which controller/live module handles the route.
|
||||
3. **Read the controller/live module** to find which functions are called and
|
||||
which domain modules they delegate to.
|
||||
4. **Read the domain modules** to understand what they return and how.
|
||||
5. **Read templates/components** if the rendering path matters.
|
||||
6. **Emit the diagram.** Use `sequenceDiagram` with participants named after
|
||||
actual modules. Show function calls as messages.
|
||||
|
||||
## Output Format
|
||||
|
||||
Respond with ONLY a fenced Mermaid code block. No preamble, no explanation,
|
||||
no code review, no suggestions. Just the diagram.
|
||||
|
||||
```mermaid
|
||||
sequenceDiagram
|
||||
participant Browser
|
||||
participant Router as FirehoseWeb.Router
|
||||
...
|
||||
```
|
||||
|
||||
## Rules
|
||||
|
||||
- **Participants must be real modules** from the codebase. Never invent modules.
|
||||
- **Messages must be real function calls** or HTTP verbs. Use the actual function
|
||||
names you found in the source (e.g., `blog.posts_by_tag(tag)`, not "get posts").
|
||||
- **Show the return path.** Responses flow back: module returns data, controller
|
||||
renders, browser receives HTML.
|
||||
- **Distinguish compile-time from runtime.** If a module uses NimblePublisher
|
||||
or module attributes, the data is compiled into the BEAM — there is no runtime
|
||||
file I/O. Show this as a note, not as a message to the filesystem.
|
||||
- **Stay on task.** Do NOT review the code. Do NOT suggest improvements. Do NOT
|
||||
mention potential issues. Your only job is the diagram.
|
||||
- **Keep it readable.** Use `Note over` for context. Use short aliases for
|
||||
long module names in the participant declaration.
|
||||
Reference in New Issue
Block a user