Skip to content

Commit bbb69c9

Browse files
authored
Merge pull request #57 from gemini-cli-extensions/feat/introduce-index-md-files
feat: introduce index markdown files and the Universal File Resolution Protocol
2 parents d2b5c9a + caeb814 commit bbb69c9

File tree

6 files changed

+182
-97
lines changed

6 files changed

+182
-97
lines changed

GEMINI.md

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,41 @@
11
# Conductor Context
22

33
If a user mentions a "plan" or asks about the plan, and they have used the conductor extension in the current session, they are likely referring to the `conductor/tracks.md` file or one of the track plans (`conductor/tracks/<track_id>/plan.md`).
4+
5+
## Universal File Resolution Protocol
6+
7+
**PROTOCOL: How to locate files.**
8+
To find a file (e.g., "**Product Definition**") within a specific context (Project Root or a specific Track):
9+
10+
1. **Identify Index:** Determine the relevant index file:
11+
- **Project Context:** `conductor/index.md`
12+
- **Track Context:**
13+
a. Resolve and read the **Tracks Registry** (via Project Context).
14+
b. Find the entry for the specific `<track_id>`.
15+
c. Follow the link provided in the registry to locate the track's folder. The index file is `<track_folder>/index.md`.
16+
d. **Fallback:** If the track is not yet registered (e.g., during creation) or the link is broken:
17+
1. Resolve the **Tracks Directory** (via Project Context).
18+
2. The index file is `<Tracks Directory>/<track_id>/index.md`.
19+
20+
2. **Check Index:** Read the index file and look for a link with a matching or semantically similar label.
21+
22+
3. **Resolve Path:** If a link is found, resolve its path **relative to the directory containing the `index.md` file**.
23+
- *Example:* If `conductor/index.md` links to `./workflow.md`, the full path is `conductor/workflow.md`.
24+
25+
4. **Fallback:** If the index file is missing or the link is absent, use the **Default Path** keys below.
26+
27+
5. **Verify:** You MUST verify the resolved file actually exists on the disk.
28+
29+
**Standard Default Paths (Project):**
30+
- **Product Definition**: `conductor/product.md`
31+
- **Tech Stack**: `conductor/tech-stack.md`
32+
- **Workflow**: `conductor/workflow.md`
33+
- **Product Guidelines**: `conductor/product-guidelines.md`
34+
- **Tracks Registry**: `conductor/tracks.md`
35+
- **Tracks Directory**: `conductor/tracks/`
36+
37+
**Standard Default Paths (Track):**
38+
- **Specification**: `conductor/tracks/<track_id>/spec.md`
39+
- **Implementation Plan**: `conductor/tracks/<track_id>/plan.md`
40+
- **Metadata**: `conductor/tracks/<track_id>/metadata.json`
41+

commands/conductor/implement.toml

Lines changed: 48 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -10,15 +10,13 @@ CRITICAL: You must validate the success of every tool call. If any tool call fai
1010
## 1.1 SETUP CHECK
1111
**PROTOCOL: Verify that the Conductor environment is properly set up.**
1212
13-
1. **Check for Required Files:** You MUST verify the existence of the following files in the `conductor` directory:
14-
- `conductor/tech-stack.md`
15-
- `conductor/workflow.md`
16-
- `conductor/product.md`
13+
1. **Verify Core Context:** Using the **Universal File Resolution Protocol**, resolve and verify the existence of:
14+
- **Product Definition**
15+
- **Tech Stack**
16+
- **Workflow**
17+
18+
2. **Handle Failure:** If ANY of these are missing (or their resolved paths do not exist), Announce: "Conductor is not set up. Please run `/conductor:setup`." and HALT.
1719
18-
2. **Handle Missing Files:**
19-
- If ANY of these files are missing, you MUST halt the operation immediately.
20-
- Announce: "Conductor is not set up. Please run `/conductor:setup` to set up the environment."
21-
- Do NOT proceed to Track Selection.
2220
2321
---
2422
@@ -27,7 +25,9 @@ CRITICAL: You must validate the success of every tool call. If any tool call fai
2725
2826
1. **Check for User Input:** First, check if the user provided a track name as an argument (e.g., `/conductor:implement <track_description>`).
2927
30-
2. **Parse Tracks File:** Read and parse the tracks file at `conductor/tracks.md`. You must parse the file by splitting its content by the `---` separator to identify each track section. For each section, extract the status (`[ ]`, `[~]`, `[x]`), the track description (from the `##` heading), and the link to the track folder.
28+
2. **Locate and Parse Tracks Registry:**
29+
- Resolve the **Tracks Registry**.
30+
- Read and parse this file. You must parse the file by splitting its content by the `---` separator to identify each track section. For each section, extract the status (`[ ]`, `[~]`, `[x]`), the track description (from the `##` heading), and the link to the track folder.
3131
- **CRITICAL:** If no track sections are found after parsing, announce: "The tracks file is empty or malformed. No tracks to implement." and halt.
3232
3333
3. **Continue:** Immediately proceed to the next step to select a track.
@@ -56,27 +56,26 @@ CRITICAL: You must validate the success of every tool call. If any tool call fai
5656
1. **Announce Action:** Announce which track you are beginning to implement.
5757
5858
2. **Update Status to 'In Progress':**
59-
- Before beginning any work, you MUST update the status of the selected track in the `conductor/tracks.md` file.
60-
- This requires finding the specific heading for the track (e.g., `## [ ] Track: <Description>`) and replacing it with the updated status (e.g., `## [~] Track: <Description>`).
59+
- Before beginning any work, you MUST update the status of the selected track in the **Tracks Registry** file.
60+
- This requires finding the specific heading for the track (e.g., `## [ ] Track: <Description>`) and replacing it with the updated status (e.g., `## [~] Track: <Description>`) in the **Tracks Registry** file you identified earlier.
6161
6262
3. **Load Track Context:**
6363
a. **Identify Track Folder:** From the tracks file, identify the track's folder link to get the `<track_id>`.
64-
b. **Read Files:** You MUST read the content of the following files into your context using their full, absolute paths:
65-
- `conductor/tracks/<track_id>/plan.md`
66-
- `conductor/tracks/<track_id>/spec.md`
67-
- `conductor/workflow.md`
64+
b. **Read Files:**
65+
- **Track Context:** Using the **Universal File Resolution Protocol**, resolve and read the **Specification** and **Implementation Plan** for the selected track.
66+
- **Workflow:** Resolve **Workflow** (via the **Universal File Resolution Protocol** using the project's index file).
6867
c. **Error Handling:** If you fail to read any of these files, you MUST stop and inform the user of the error.
6968
7069
4. **Execute Tasks and Update Track Plan:**
71-
a. **Announce:** State that you will now execute the tasks from the track's `plan.md` by following the procedures in `workflow.md`.
72-
b. **Iterate Through Tasks:** You MUST now loop through each task in the track's `plan.md` one by one.
70+
a. **Announce:** State that you will now execute the tasks from the track's **Implementation Plan** by following the procedures in the **Workflow**.
71+
b. **Iterate Through Tasks:** You MUST now loop through each task in the track's **Implementation Plan** one by one.
7372
c. **For Each Task, You MUST:**
74-
i. **Defer to Workflow:** The `workflow.md` file is the **single source of truth** for the entire task lifecycle. You MUST now read and execute the procedures defined in the "Task Workflow" section of the `workflow.md` file you have in your context. Follow its steps for implementation, testing, and committing precisely.
73+
i. **Defer to Workflow:** The **Workflow** file is the **single source of truth** for the entire task lifecycle. You MUST now read and execute the procedures defined in the "Task Workflow" section of the **Workflow** file you have in your context. Follow its steps for implementation, testing, and committing precisely.
7574
7675
5. **Finalize Track:**
77-
- After all tasks in the track's local `plan.md` are completed, you MUST update the track's status in the tracks file.
76+
- After all tasks in the track's local **Implementation Plan** are completed, you MUST update the track's status in the **Tracks Registry**.
7877
- This requires finding the specific heading for the track (e.g., `## [~] Track: <Description>`) and replacing it with the completed status (e.g., `## [x] Track: <Description>`).
79-
- **Commit Changes:** Stage `conductor/tracks.md` and commit with the message `chore(conductor): Mark track '<track_description>' as complete`.
78+
- **Commit Changes:** Stage the **Tracks Registry** file and commit with the message `chore(conductor): Mark track '<track_description>' as complete`.
8079
- Announce that the track is fully complete and the tracks file has been updated.
8180
8281
---
@@ -88,56 +87,57 @@ CRITICAL: You must validate the success of every tool call. If any tool call fai
8887
8988
2. **Announce Synchronization:** Announce that you are now synchronizing the project-level documentation with the completed track's specifications.
9089
91-
3. **Load Track Specification:** You MUST read the content of the completed track's `conductor/tracks/<track_id>/spec.md` file into your context.
90+
3. **Load Track Specification:** Read the track's **Specification**.
9291
93-
4. **Load Project Documents:** You MUST read the contents of the following project-level documents into your context:
94-
- `conductor/product.md`
95-
- `conductor/product-guidelines.md`
96-
- `conductor/tech-stack.md`
92+
4. **Load Project Documents:**
93+
- Resolve and read:
94+
- **Product Definition**
95+
- **Tech Stack**
96+
- **Product Guidelines**
9797
9898
5. **Analyze and Update:**
99-
a. **Analyze `spec.md`:** Carefully analyze the `spec.md` to identify any new features, changes in functionality, or updates to the technology stack.
100-
b. **Update `conductor/product.md`:**
99+
a. **Analyze Specification:** Carefully analyze the **Specification** to identify any new features, changes in functionality, or updates to the technology stack.
100+
b. **Update Product Definition:**
101101
i. **Condition for Update:** Based on your analysis, you MUST determine if the completed feature or bug fix significantly impacts the description of the product itself.
102102
ii. **Propose and Confirm Changes:** If an update is needed, generate the proposed changes. Then, present them to the user for confirmation:
103-
> "Based on the completed track, I propose the following updates to `product.md`:"
103+
> "Based on the completed track, I propose the following updates to the **Product Definition**:"
104104
> ```diff
105105
> [Proposed changes here, ideally in a diff format]
106106
> ```
107107
> "Do you approve these changes? (yes/no)"
108-
iii. **Action:** Only after receiving explicit user confirmation, perform the file edits to update the `conductor/product.md` file. Keep a record of whether this file was changed.
109-
c. **Update `conductor/tech-stack.md`:**
108+
iii. **Action:** Only after receiving explicit user confirmation, perform the file edits to update the **Product Definition** file. Keep a record of whether this file was changed.
109+
c. **Update Tech Stack:**
110110
i. **Condition for Update:** Similarly, you MUST determine if significant changes in the technology stack are detected as a result of the completed track.
111111
ii. **Propose and Confirm Changes:** If an update is needed, generate the proposed changes. Then, present them to the user for confirmation:
112-
> "Based on the completed track, I propose the following updates to `tech-stack.md`:"
112+
> "Based on the completed track, I propose the following updates to the **Tech Stack**:"
113113
> ```diff
114114
> [Proposed changes here, ideally in a diff format]
115115
> ```
116116
> "Do you approve these changes? (yes/no)"
117-
iii. **Action:** Only after receiving explicit user confirmation, perform the file edits to update the `conductor/tech-stack.md` file. Keep a record of whether this file was changed.
118-
d. **Update `conductor/product-guidelines.md` (Strictly Controlled):**
117+
iii. **Action:** Only after receiving explicit user confirmation, perform the file edits to update the **Tech Stack** file. Keep a record of whether this file was changed.
118+
d. **Update Product Guidelines (Strictly Controlled):**
119119
i. **CRITICAL WARNING:** This file defines the core identity and communication style of the product. It should be modified with extreme caution and ONLY in cases of significant strategic shifts, such as a product rebrand or a fundamental change in user engagement philosophy. Routine feature updates or bug fixes should NOT trigger changes to this file.
120-
ii. **Condition for Update:** You may ONLY propose an update to this file if the track's `spec.md` explicitly describes a change that directly impacts branding, voice, tone, or other core product guidelines.
120+
ii. **Condition for Update:** You may ONLY propose an update to this file if the track's **Specification** explicitly describes a change that directly impacts branding, voice, tone, or other core product guidelines.
121121
iii. **Propose and Confirm Changes:** If the conditions are met, you MUST generate the proposed changes and present them to the user with a clear warning:
122-
> "WARNING: The completed track suggests a change to the core product guidelines. This is an unusual step. Please review carefully:"
122+
> "WARNING: The completed track suggests a change to the core **Product Guidelines**. This is an unusual step. Please review carefully:"
123123
> ```diff
124124
> [Proposed changes here, ideally in a diff format]
125125
> ```
126-
> "Do you approve these critical changes to `product-guidelines.md`? (yes/no)"
126+
> "Do you approve these critical changes to the **Product Guidelines**? (yes/no)"
127127
iv. **Action:** Only after receiving explicit user confirmation, perform the file edits. Keep a record of whether this file was changed.
128128
129129
6. **Final Report:** Announce the completion of the synchronization process and provide a summary of the actions taken.
130130
- **Construct the Message:** Based on the records of which files were changed, construct a summary message.
131131
- **Commit Changes:**
132-
- If any files were changed (`product.md`, `tech-stack.md`, or `product-guidelines.md`), you MUST stage them and commit them.
132+
- If any files were changed (**Product Definition**, **Tech Stack**, or **Product Guidelines**), you MUST stage them and commit them.
133133
- **Commit Message:** `docs(conductor): Synchronize docs for track '<track_description>'`
134-
- **Example (if product.md was changed, but others were not):**
134+
- **Example (if Product Definition was changed, but others were not):**
135135
> "Documentation synchronization is complete.
136-
> - **Changes made to `product.md`:** The user-facing description of the product was updated to include the new feature.
137-
> - **No changes needed for `tech-stack.md`:** The technology stack was not affected.
138-
> - **No changes needed for `product-guidelines.md`:** Core product guidelines remain unchanged."
136+
> - **Changes made to Product Definition:** The user-facing description of the product was updated to include the new feature.
137+
> - **No changes needed for Tech Stack:** The technology stack was not affected.
138+
> - **No changes needed for Product Guidelines:** Core product guidelines remain unchanged."
139139
- **Example (if no files were changed):**
140-
> "Documentation synchronization is complete. No updates were necessary for `product.md`, `tech-stack.md`, or `product-guidelines.md` based on the completed track."
140+
> "Documentation synchronization is complete. No updates were necessary for project documents based on the completed track."
141141
142142
---
143143
@@ -156,18 +156,18 @@ CRITICAL: You must validate the success of every tool call. If any tool call fai
156156
3. **Handle User Response:**
157157
* **If user chooses "A" (Archive):**
158158
i. **Create Archive Directory:** Check for the existence of `conductor/archive/`. If it does not exist, create it.
159-
ii. **Archive Track Folder:** Move the track's folder from `conductor/tracks/<track_id>` to `conductor/archive/<track_id>`.
160-
iii. **Remove from Tracks File:** Read the content of `conductor/tracks.md`, remove the entire section for the completed track (the part that starts with `---` and contains the track description), and write the modified content back to the file.
161-
iv. **Commit Changes:** Stage `conductor/tracks.md` and `conductor/archive/`. Commit with the message `chore(conductor): Archive track '<track_description>'`.
159+
ii. **Archive Track Folder:** Move the track's folder from its current location (resolved via the **Tracks Directory**) to `conductor/archive/<track_id>`.
160+
iii. **Remove from Tracks File:** Read the content of the **Tracks Registry** file, remove the entire section for the completed track (the part that starts with `---` and contains the track description), and write the modified content back to the file.
161+
iv. **Commit Changes:** Stage the **Tracks Registry** file and `conductor/archive/`. Commit with the message `chore(conductor): Archive track '<track_description>'`.
162162
v. **Announce Success:** Announce: "Track '<track_description>' has been successfully archived."
163163
* **If user chooses "B" (Delete):**
164164
i. **CRITICAL WARNING:** Before proceeding, you MUST ask for a final confirmation due to the irreversible nature of the action.
165165
> "WARNING: This will permanently delete the track folder and all its contents. This action cannot be undone. Are you sure you want to proceed? (yes/no)"
166166
ii. **Handle Confirmation:**
167167
- **If 'yes'**:
168-
a. **Delete Track Folder:** Permanently delete the track's folder from `conductor/tracks/<track_id>`.
169-
b. **Remove from Tracks File:** Read the content of `conductor/tracks.md`, remove the entire section for the completed track, and write the modified content back to the file.
170-
c. **Commit Changes:** Stage `conductor/tracks.md` and the deletion of `conductor/tracks/<track_id>`. Commit with the message `chore(conductor): Delete track '<track_description>'`.
168+
a. **Delete Track Folder:** Resolve the **Tracks Directory** and permanently delete the track's folder from `<Tracks Directory>/<track_id>`.
169+
b. **Remove from Tracks File:** Read the content of the **Tracks Registry** file, remove the entire section for the completed track, and write the modified content back to the file.
170+
c. **Commit Changes:** Stage the **Tracks Registry** file and the deletion of the track directory. Commit with the message `chore(conductor): Delete track '<track_description>'`.
171171
d. **Announce Success:** Announce: "Track '<track_description>' has been permanently deleted."
172172
- **If 'no' (or anything else)**:
173173
a. **Announce Cancellation:** Announce: "Deletion cancelled. The track has not been changed."

0 commit comments

Comments
 (0)