opencode-skills-collection 4.0.67 → 4.0.68
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundled-skills/.antigravity-install-manifest.json +16 -1
- package/bundled-skills/anti-slop-design/SKILL.md +393 -0
- package/bundled-skills/antigravity-maintainer-batch-release/SKILL.md +1 -0
- package/bundled-skills/artifact-yylo/SKILL.md +122 -0
- package/bundled-skills/google-no-code/SKILL.md +136 -0
- package/bundled-skills/idea-evaluator/SKILL.md +75 -0
- package/bundled-skills/idea-evaluator/idea-evaluator-con/SKILL.md +64 -0
- package/bundled-skills/idea-evaluator/idea-evaluator-pro/SKILL.md +64 -0
- package/bundled-skills/ledger-tasks-yylo/SKILL.md +219 -0
- package/bundled-skills/loki-mode/examples/todo-app-generated/backend/package-lock.json +4 -4
- package/bundled-skills/loki-mode/examples/todo-app-generated/backend/package.json +1 -1
- package/bundled-skills/plan-ledger-tasks-yylo/SKILL.md +52 -0
- package/bundled-skills/ralph-loop-yylo/SKILL.md +55 -0
- package/bundled-skills/ralph-loop-yylo/references/first_check.md +18 -0
- package/bundled-skills/ralph-loop-yylo/references/implement.md +60 -0
- package/bundled-skills/resumable-implementation-contracts/SKILL.md +254 -0
- package/bundled-skills/understand-project-yylo/SKILL.md +62 -0
- package/bundled-skills/weather-model-data-fetching/SKILL.md +277 -0
- package/bundled-skills/weather-observation-fetching/SKILL.md +246 -0
- package/bundled-skills/wiki-yylo/SKILL.md +114 -0
- package/bundled-skills/workflow-yylo/SKILL.md +107 -0
- package/package.json +1 -1
- package/skills_index.json +304 -0
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: google-no-code
|
|
3
|
+
description: "Design Google Forms and wire Apps Script triggers (onFormSubmit) for email alerts, spreadsheet logging, and dynamic questions — no code editor required."
|
|
4
|
+
category: automation
|
|
5
|
+
risk: safe
|
|
6
|
+
source: self
|
|
7
|
+
source_type: self
|
|
8
|
+
date_added: "2026-09-19"
|
|
9
|
+
author: WHOISABHISHEKADHIKARI
|
|
10
|
+
tags: [google, forms, apps-script]
|
|
11
|
+
tools: [claude, cursor, gemini]
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
# Google No-Code Forms Automation
|
|
15
|
+
|
|
16
|
+
## Overview
|
|
17
|
+
|
|
18
|
+
Guides the user through building a Google Form in the Forms UI and connecting it to Google Apps Script triggers, without writing a custom integration or leaving the browser. Covers form design, the Apps Script editor, the `onFormSubmit` trigger, and small response-handling scripts that run automatically when a form is submitted.
|
|
19
|
+
|
|
20
|
+
## When to Use This Skill
|
|
21
|
+
|
|
22
|
+
- Use when the user wants to build a Google Form and automate what happens after submissions.
|
|
23
|
+
- Use when the user asks for email alerts, spreadsheet logging, or conditional handling of form responses.
|
|
24
|
+
- Use when the user wants Apps Script snippets to paste into a form bound script project.
|
|
25
|
+
- Skip this skill if the user needs custom UI, paid APIs, or a full standalone Apps Script application.
|
|
26
|
+
|
|
27
|
+
## How It Works
|
|
28
|
+
|
|
29
|
+
### Step 1: Define the form in the Forms UI
|
|
30
|
+
|
|
31
|
+
Create the form in Google Forms with clear questions, answer types (short answer, multiple choice, checkbox), and required fields. Match question IDs to what the script will need later. Add a description to the form so respondents know what to expect.
|
|
32
|
+
|
|
33
|
+
### Step 2: Open the bound Apps Script editor
|
|
34
|
+
|
|
35
|
+
In the form, go to `Extensions > Apps Script`. This opens a project bound to the form. The script can read each submission through the `e.response` event object.
|
|
36
|
+
|
|
37
|
+
### Step 3: Write the response handler
|
|
38
|
+
|
|
39
|
+
Add a function that accepts the `onFormSubmit` event, reads `e.response` with `getItemResponses()`, and then performs the desired action: send an email, write to a spreadsheet, or branch on answers.
|
|
40
|
+
|
|
41
|
+
### Step 4: Install the trigger
|
|
42
|
+
|
|
43
|
+
In Apps Script, go to the clock/triggers menu, select the `onFormSubmit` function, choose the event source **From form** and event type **On form submit**, then save and authorize. The function runs automatically on each new submission.
|
|
44
|
+
|
|
45
|
+
### Step 5: Test with a real submission
|
|
46
|
+
|
|
47
|
+
Submit a test response from a private/incognito window and verify the email, sheet row, or log arrives once. Check the Apps Script executions page (`Executions` in the editor) for errors and read the stack trace if something fails.
|
|
48
|
+
|
|
49
|
+
## Examples
|
|
50
|
+
|
|
51
|
+
### Example 1: Email notification on every response
|
|
52
|
+
|
|
53
|
+
```javascript
|
|
54
|
+
function onFormSubmit(e) {
|
|
55
|
+
const response = e.response;
|
|
56
|
+
const email = getEmail(response);
|
|
57
|
+
MailApp.sendEmail({
|
|
58
|
+
to: email,
|
|
59
|
+
subject: "Form submission received",
|
|
60
|
+
body: "Thank you. We have recorded your response."
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
function getEmail(response) {
|
|
65
|
+
const items = response.getItemResponses();
|
|
66
|
+
for (const item of items) {
|
|
67
|
+
if (item.getItem().getTitle().toLowerCase().includes("email")) {
|
|
68
|
+
return item.getResponse();
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
return Session.getActiveUser().getEmail();
|
|
72
|
+
}
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
### Example 2: Log each response to a Google Sheet
|
|
76
|
+
|
|
77
|
+
```javascript
|
|
78
|
+
function onFormSubmit(e) {
|
|
79
|
+
const sheet = SpreadsheetApp.openById(SHEET_ID).getSheetByName("Responses");
|
|
80
|
+
const itemResponses = e.response.getItemResponses();
|
|
81
|
+
const row = [new Date()].concat(itemResponses.map(r => r.getResponse()));
|
|
82
|
+
sheet.appendRow(row);
|
|
83
|
+
}
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
### Example 3: Branch on a multiple-choice answer
|
|
87
|
+
|
|
88
|
+
```javascript
|
|
89
|
+
function onFormSubmit(e) {
|
|
90
|
+
const items = e.response.getItemResponses();
|
|
91
|
+
for (const item of items) {
|
|
92
|
+
if (item.getItem().getTitle().toLowerCase() === "priority") {
|
|
93
|
+
const priority = item.getResponse();
|
|
94
|
+
const subject = priority === "High" ? "[URGENT] " : "";
|
|
95
|
+
MailApp.sendEmail({ to: MANAGER_EMAIL, subject: subject + "New submission", body: itemResponsesText(e) });
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
## Best Practices
|
|
102
|
+
|
|
103
|
+
- ✅ Test every trigger with a real submission before telling the user it works.
|
|
104
|
+
- ✅ Use clear, stable question titles so the script can match items by title instead of fragile indexes.
|
|
105
|
+
- ✅ Keep secrets and API keys in script properties, never hard-coded in the file.
|
|
106
|
+
- ✅ Add try/catch around handler logic and log errors with `Logger.log` so failures surface in the Executions page.
|
|
107
|
+
- ❌ Do not grant broad scopes; run with the minimum permission the form action needs.
|
|
108
|
+
- ❌ Do not send email to addresses that the form did not legitimately collect.
|
|
109
|
+
|
|
110
|
+
## Limitations
|
|
111
|
+
|
|
112
|
+
- Apps Script quotas apply (email rate limits, daily triggers, execution time); heavy volume needs review.
|
|
113
|
+
- Only form submissions trigger the event; edits to responses by users do not fire `onFormSubmit` by default.
|
|
114
|
+
- The skill produces scripts the user must paste, authorize, and deploy; it cannot create a Google Forms project by itself.
|
|
115
|
+
- Sheets integration requires the sheet's ID and permission, which must be confirmed with the user.
|
|
116
|
+
|
|
117
|
+
## Security & Safety Notes
|
|
118
|
+
|
|
119
|
+
- The script runs inside the user's Google account with the scopes it declares. Review the authorization prompt and grant only the minimum requested scope.
|
|
120
|
+
- Do not log, print, or embed passwords, OAuth tokens, or API keys in form scripts or shared files.
|
|
121
|
+
- Form responses can arrive from anyone the form is shared with; validate inputs before acting on them.
|
|
122
|
+
- Test in a controlled environment first; sending email or appending rows happens on every submission once the trigger is live.
|
|
123
|
+
|
|
124
|
+
## Common Pitfalls
|
|
125
|
+
|
|
126
|
+
- **Problem:** The handler runs for every submission and duplicates work.
|
|
127
|
+
**Solution:** Prefer the single event object `e.response`; do not separately query the form's stored responses inside `onFormSubmit`.
|
|
128
|
+
- **Problem:** `item.getResponse()` returns `undefined` for optional questions.
|
|
129
|
+
**Solution:** Guard with a check for a truthy response, or make the question required.
|
|
130
|
+
- **Problem:** The email goes to the wrong address.
|
|
131
|
+
**Solution:** Match by the question title containing "email", and verify the collected value belongs to the respondent before sending.
|
|
132
|
+
|
|
133
|
+
## Related Skills
|
|
134
|
+
|
|
135
|
+
- `@google-sheets-automation` - Use when the response logging target is a Sheet that needs its own automation.
|
|
136
|
+
- `@google-docs-automation` - Use when form output should create or update a Google Doc.
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: idea-evaluator
|
|
3
|
+
description: "Evaluates an idea by hosting a multi-turn debate between a Pro and Con agent, delivering a final verdict on whether it's worth pursuing."
|
|
4
|
+
category: agent-orchestration
|
|
5
|
+
risk: safe
|
|
6
|
+
source: self
|
|
7
|
+
source_type: self
|
|
8
|
+
date_added: "2026-09-18"
|
|
9
|
+
author: Prince-1652
|
|
10
|
+
tags: [ideation, validation, debate, multi-agent]
|
|
11
|
+
tools: [claude, gemini]
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
# Idea Evaluator Orchestrator
|
|
15
|
+
|
|
16
|
+
## Overview
|
|
17
|
+
|
|
18
|
+
The Idea Evaluator skill acts as an impartial judge for evaluating new concepts, features, or project ideas. It takes an initial idea from the user and orchestrates a structured, multi-turn debate between two simulated personas: a logical supporter (Pro Agent) and a constructive critic (Con Agent).
|
|
19
|
+
|
|
20
|
+
By pitting these two perspectives against each other, it surfaces the strongest arguments for both sides before delivering a comprehensive final verdict on whether the idea is worth building.
|
|
21
|
+
|
|
22
|
+
## When to Use This Skill
|
|
23
|
+
|
|
24
|
+
- Use when you have a new idea but don't know if it's worth your time or effort to build.
|
|
25
|
+
- Use when evaluating potential features for a product to decide on priorities.
|
|
26
|
+
- Use when you want to rigorously stress-test an assumption before committing code.
|
|
27
|
+
|
|
28
|
+
## How It Works
|
|
29
|
+
|
|
30
|
+
When triggered with an idea, you (the AI) will act as the Orchestrator and facilitate the following workflow:
|
|
31
|
+
|
|
32
|
+
### Step 1: Initialize the Debate
|
|
33
|
+
You will assume the role of the Orchestrator. Introduce the debate and clearly state the idea being evaluated. Spawn or simulate the two participants:
|
|
34
|
+
- `@idea-evaluator-pro`: The logical supporter.
|
|
35
|
+
- `@idea-evaluator-con`: The constructive critic.
|
|
36
|
+
|
|
37
|
+
### Step 2: The Debate (3 Turns)
|
|
38
|
+
Conduct a 3-turn debate where the Pro and Con agents respond to each other.
|
|
39
|
+
- **Turn 1 (Initial Pitches):** Pro presents the strongest case for the idea. Con presents the strongest immediate risks and flaws.
|
|
40
|
+
- **Turn 2 (Rebuttals):** Pro addresses Con's risks. Con challenges Pro's optimism.
|
|
41
|
+
- **Turn 3 (Closing Statements):** Both agents summarize their final stance on why the idea will succeed or fail.
|
|
42
|
+
|
|
43
|
+
*Note: Ensure the agents do not blindly agree/disagree but base their arguments on logic, market realities, and technical feasibility.*
|
|
44
|
+
|
|
45
|
+
### Step 3: Final Verdict
|
|
46
|
+
Once the debate concludes, the Orchestrator steps in as the Judge. Provide a comprehensive summary formatted with:
|
|
47
|
+
- **Pros:** The strongest validated points in favor.
|
|
48
|
+
- **Cons:** The most critical risks identified.
|
|
49
|
+
- **Final Verdict:** A definitive recommendation (e.g., "Strongly Recommended", "Proceed with Caution", "Pivot Required", "Not Worth Building").
|
|
50
|
+
- **Why:** A brief justification summarizing the debate outcome.
|
|
51
|
+
|
|
52
|
+
## Examples
|
|
53
|
+
|
|
54
|
+
### Example 1: Evaluating a new app idea
|
|
55
|
+
|
|
56
|
+
**User:** "Evaluate this idea: A social network exclusively for houseplants where users post updates on their plant's growth."
|
|
57
|
+
|
|
58
|
+
**Agent:** (Proceeds to run the 3-turn debate between Pro and Con, followed by the Orchestrator's final verdict detailing the niche appeal versus retention challenges).
|
|
59
|
+
|
|
60
|
+
## Best Practices
|
|
61
|
+
|
|
62
|
+
- ✅ Ensure the Pro and Con agents directly address each other's points during rebuttals.
|
|
63
|
+
- ✅ The Orchestrator must remain strictly neutral until the Final Verdict.
|
|
64
|
+
- ❌ Don't let the agents devolve into generic AI pleasantries; keep the debate sharp and analytical.
|
|
65
|
+
- ❌ Don't skip the debate steps; the back-and-forth is crucial for deep validation.
|
|
66
|
+
|
|
67
|
+
## Limitations
|
|
68
|
+
|
|
69
|
+
- The verdict is based on simulated reasoning and logic, not actual market data or user feedback.
|
|
70
|
+
- This skill is for brainstorming and validation, not a guarantee of business success.
|
|
71
|
+
|
|
72
|
+
## Related Skills
|
|
73
|
+
|
|
74
|
+
- `@idea-evaluator-pro` - The supporting persona used in this debate.
|
|
75
|
+
- `@idea-evaluator-con` - The critical persona used in this debate.
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: idea-evaluator-con
|
|
3
|
+
description: "The Con Agent persona for idea evaluation. Critiques an idea by identifying potential flaws, risks, and market challenges."
|
|
4
|
+
category: agent-persona
|
|
5
|
+
risk: safe
|
|
6
|
+
source: self
|
|
7
|
+
source_type: self
|
|
8
|
+
date_added: "2026-09-18"
|
|
9
|
+
author: Prince-1652
|
|
10
|
+
tags: [ideation, validation, persona, critic]
|
|
11
|
+
tools: [claude, gemini]
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
# Idea Evaluator: Con Agent
|
|
15
|
+
|
|
16
|
+
## Overview
|
|
17
|
+
|
|
18
|
+
The Con Agent is a critical persona designed to rigorously challenge a new idea. It is summoned by the `@idea-evaluator` orchestrator during an idea validation debate.
|
|
19
|
+
|
|
20
|
+
The Con Agent's job is not to be mean, but to act as a "red team." It actively looks for reasons why the idea will fail, waste time, or hit insurmountable technical/market hurdles. It helps prevent builders from falling in love with a bad idea.
|
|
21
|
+
|
|
22
|
+
## When to Use This Skill
|
|
23
|
+
|
|
24
|
+
- Use as a sub-agent or persona when running the `@idea-evaluator` skill.
|
|
25
|
+
- Use when you need a reality check on a feature or product you are overly excited about.
|
|
26
|
+
|
|
27
|
+
## How It Works
|
|
28
|
+
|
|
29
|
+
When acting as the Con Agent in a debate:
|
|
30
|
+
|
|
31
|
+
### Core Directives
|
|
32
|
+
1. **Find the Flaws**: Identify the most significant risks: technical debt, lack of market demand, high acquisition costs, or strong existing competition.
|
|
33
|
+
2. **Be Pragmatic**: Base your criticisms on reality. If an idea is technically possible but would take 5 years to build, point out the resource drain.
|
|
34
|
+
3. **Counter-Punch**: When rebutting the Pro Agent, dismantle their optimism. If Pro says a workaround exists, point out why that workaround introduces new, worse problems.
|
|
35
|
+
|
|
36
|
+
### Debate Behavior
|
|
37
|
+
- **Turn 1 (Initial Critique):** Attack the core premise. Why is this a solution looking for a problem? What is the biggest immediate barrier to entry?
|
|
38
|
+
- **Turn 2 (Rebuttal):** Directly challenge the Pro Agent's Turn 1 points. Expose any overly optimistic assumptions about user behavior or technical ease.
|
|
39
|
+
- **Turn 3 (Closing):** Provide a succinct, hard-hitting summary of why pursuing this idea is a mistake or requires a massive pivot.
|
|
40
|
+
|
|
41
|
+
## Examples
|
|
42
|
+
|
|
43
|
+
### Example 1: Critiquing a weird idea
|
|
44
|
+
|
|
45
|
+
**Idea:** A subscription box for slightly misshapen, un-sellable vegetables.
|
|
46
|
+
|
|
47
|
+
**Con Agent Response (Turn 1):** "The logistics will kill this business. While the produce is cheap, shipping heavy, perishable boxes of vegetables direct-to-consumer destroys any margin advantage. Furthermore, the 'ugly produce' novelty wears off quickly for consumers when they realize they still have to prep and cook it. You are competing with the convenience of local grocery stores, not other subscription boxes."
|
|
48
|
+
|
|
49
|
+
## Best Practices
|
|
50
|
+
|
|
51
|
+
- ✅ Be specific with your critiques. Say "The database scaling costs will be too high because of X" rather than "It's too expensive."
|
|
52
|
+
- ✅ Play the devil's advocate effectively by anticipating user apathy.
|
|
53
|
+
- ❌ Don't be needlessly aggressive or insulting; be a cold, calculating realist.
|
|
54
|
+
- ❌ Don't ignore the Pro Agent's points; actively dismantle them.
|
|
55
|
+
|
|
56
|
+
## Limitations
|
|
57
|
+
|
|
58
|
+
- Critiques are simulated red-team reasoning, not substitute for user research, legal review, or technical spikes.
|
|
59
|
+
- Intended only as one side of the `@idea-evaluator` debate, not standalone rejection authority.
|
|
60
|
+
|
|
61
|
+
## Related Skills
|
|
62
|
+
|
|
63
|
+
- `@idea-evaluator` - The orchestrator that manages this persona.
|
|
64
|
+
- `@idea-evaluator-pro` - The opposing persona.
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: idea-evaluator-pro
|
|
3
|
+
description: "The Pro Agent persona for idea evaluation. Logically supports an idea, arguing for its market fit, feasibility, and potential."
|
|
4
|
+
category: agent-persona
|
|
5
|
+
risk: safe
|
|
6
|
+
source: self
|
|
7
|
+
source_type: self
|
|
8
|
+
date_added: "2026-09-18"
|
|
9
|
+
author: Prince-1652
|
|
10
|
+
tags: [ideation, validation, persona, supporter]
|
|
11
|
+
tools: [claude, gemini]
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
# Idea Evaluator: Pro Agent
|
|
15
|
+
|
|
16
|
+
## Overview
|
|
17
|
+
|
|
18
|
+
The Pro Agent is a supporting persona designed to logically advocate for a new idea. It is summoned by the `@idea-evaluator` orchestrator during an idea validation debate.
|
|
19
|
+
|
|
20
|
+
Unlike a "yes-man," the Pro Agent doesn't blindly agree. Instead, it looks for the absolute strongest case for why an idea *could* work, focusing on market needs, technical feasibility, unique value propositions, and potential monetization.
|
|
21
|
+
|
|
22
|
+
## When to Use This Skill
|
|
23
|
+
|
|
24
|
+
- Use as a sub-agent or persona when running the `@idea-evaluator` skill.
|
|
25
|
+
- Use when you need someone to help you find the hidden value in a seemingly crazy idea.
|
|
26
|
+
|
|
27
|
+
## How It Works
|
|
28
|
+
|
|
29
|
+
When acting as the Pro Agent in a debate:
|
|
30
|
+
|
|
31
|
+
### Core Directives
|
|
32
|
+
1. **Find the "Why"**: Always articulate why users would love this idea and what core problem it solves.
|
|
33
|
+
2. **Be Logical**: Base your optimism on logical deductions, market trends, and technical possibilities, not just enthusiasm.
|
|
34
|
+
3. **Counter-Punch**: When rebutting the Con Agent, directly address their concerns with potential mitigations or workarounds. For example, if Con says "It's too expensive," Pro should say "We can reduce costs by doing X."
|
|
35
|
+
|
|
36
|
+
### Debate Behavior
|
|
37
|
+
- **Turn 1 (Initial Pitch):** Highlight the core value proposition, the target audience, and the best-case scenario. Make the idea sound inevitable and brilliant.
|
|
38
|
+
- **Turn 2 (Rebuttal):** Take the Con Agent's strongest attacks and dismantle them or reframe them as opportunities.
|
|
39
|
+
- **Turn 3 (Closing):** Provide a succinct, powerful summary of why the idea is a winner.
|
|
40
|
+
|
|
41
|
+
## Examples
|
|
42
|
+
|
|
43
|
+
### Example 1: Defending a weird idea
|
|
44
|
+
|
|
45
|
+
**Idea:** A subscription box for slightly misshapen, un-sellable vegetables.
|
|
46
|
+
|
|
47
|
+
**Pro Agent Response (Turn 1):** "This is a brilliant arbitrage opportunity. It tackles food waste (a massive consumer trend) while offering organic produce at a steep discount. The 'ugly produce' angle is highly marketable on social media, leaning into authenticity and sustainability. The supply is nearly free, making the margins incredibly attractive once logistics are solved."
|
|
48
|
+
|
|
49
|
+
## Best Practices
|
|
50
|
+
|
|
51
|
+
- ✅ Ground your optimism in specific examples (e.g., "Similar to how X solved Y...").
|
|
52
|
+
- ✅ Acknowledge risks but offer immediate, practical solutions to them.
|
|
53
|
+
- ❌ Don't ignore the Con Agent's points; address them head-on.
|
|
54
|
+
- ❌ Avoid generic praise like "This is a great idea!" Get specific about *why* it's great.
|
|
55
|
+
|
|
56
|
+
## Limitations
|
|
57
|
+
|
|
58
|
+
- Arguments are simulated advocacy, not verified market research or financial projections.
|
|
59
|
+
- Intended only as one side of the `@idea-evaluator` debate, not standalone go/no-go authority.
|
|
60
|
+
|
|
61
|
+
## Related Skills
|
|
62
|
+
|
|
63
|
+
- `@idea-evaluator` - The orchestrator that manages this persona.
|
|
64
|
+
- `@idea-evaluator-con` - The opposing persona.
|
|
@@ -0,0 +1,219 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: ledger-tasks-yylo
|
|
3
|
+
description: 'Use YYLO Ledger task management: create, list, search, get, mark, update,
|
|
4
|
+
archive, deps, ready, order and merge with dependencies.'
|
|
5
|
+
category: project-management
|
|
6
|
+
risk: safe
|
|
7
|
+
source: https://github.com/yylo-dev/yylo-skills
|
|
8
|
+
source_repo: yylo-dev/yylo-skills
|
|
9
|
+
source_type: community
|
|
10
|
+
date_added: '2026-09-19'
|
|
11
|
+
license: MIT
|
|
12
|
+
license_source: https://github.com/yylo-dev/yylo-skills/blob/main/LICENSE
|
|
13
|
+
compatibility: Requires the `yy` CLI (YYLO Ledger 0.3.x+) installed and a routed Ledger
|
|
14
|
+
controller; git and bash for worktree tasks. Command help (`yy ledger --help`) is
|
|
15
|
+
authoritative for the installed runtime.
|
|
16
|
+
argument-hint: '[command or workflow question]'
|
|
17
|
+
enable-shell-directives: true
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
## YYLO Ledger CLI Reference
|
|
21
|
+
|
|
22
|
+
Use `yy ledger` for all commands. Ledger 0.3.x exposes both the compatible flat task commands and the native ID-first `record|task|wiki|workflow|artifact` groups. `yy kanban` is a labelled compatibility alias for the same controller-routed task runtime.
|
|
23
|
+
|
|
24
|
+
### Supported task contract
|
|
25
|
+
|
|
26
|
+
- Preflight installed `yy ledger --version` and `yy ledger --help`; command help is authoritative for the selected runtime.
|
|
27
|
+
- Use the flat task surface for lifecycle task management. Use the dedicated native skills for wiki, workflow, and artifact Records rather than guessing their arguments.
|
|
28
|
+
- New operational PDRs, contracts, plans, reports, receipts, and evidence belong in typed Artifact Records, not product documentation, task bodies/responses, or new `.juno_task/specs` files.
|
|
29
|
+
- If a required native group is absent, fail closed and request a Ledger upgrade. Never invoke mutable source directly or write Ledger store files by hand.
|
|
30
|
+
- Read current task state before mutation, preserve mutation receipts where offered, and never bypass controller routing or lifecycle state with direct file edits.
|
|
31
|
+
- Normal discovery is hot-only unless an explicit cold-archive command is used.
|
|
32
|
+
|
|
33
|
+
### Opt-in cross-project routing
|
|
34
|
+
|
|
35
|
+
Cross-project access is disabled by default. The source `.juno_task/config.json` must set `kanbanRegistry.enabled: true` and explicitly list `allowedProjects`; environment overrides are `YYLO_LEDGER_REGISTRY_ENABLED` and `YYLO_LEDGER_REGISTRY_ALLOWED_PROJECTS`. Register with `yy ledger project add ALIAS --path /absolute/project`, then route any command with `--project ALIAS`. The destination wrapper/runtime remains authoritative, and routing failures never fall back to the source board.
|
|
36
|
+
|
|
37
|
+
### Legacy Task compatibility commands
|
|
38
|
+
|
|
39
|
+
**CREATE** — Add a new task
|
|
40
|
+
```bash
|
|
41
|
+
yy ledger create "Task description here" --status backlog --tags feature,backend
|
|
42
|
+
```
|
|
43
|
+
Options: `--status` (backlog|todo|in_progress|done), `--tags` (comma/space-separated), `--blocked-by` (task IDs), `--related-tasks` (task IDs)
|
|
44
|
+
|
|
45
|
+
**LIST** — Browse tasks with summary stats
|
|
46
|
+
```bash
|
|
47
|
+
yy ledger list --limit 5 --sort asc
|
|
48
|
+
yy ledger list --status todo --sort asc
|
|
49
|
+
yy ledger list --status todo,in_progress --limit 10
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
**SEARCH** — Find tasks by criteria
|
|
53
|
+
```bash
|
|
54
|
+
yy ledger search --status todo --tag backend --limit 10
|
|
55
|
+
yy ledger search --body "OAuth" --open
|
|
56
|
+
yy ledger search --commit abc123
|
|
57
|
+
```
|
|
58
|
+
Filters: `--status`, `--tag`, `--body`, `--response`, `--commit`, `--open` (no agent_response), `--recent`, `--exclude` (exclude tags)
|
|
59
|
+
|
|
60
|
+
**GET** — Full task details (including dependency info and related task details)
|
|
61
|
+
```bash
|
|
62
|
+
yy ledger get TASK_ID
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
**MARK** — Update status with required response message
|
|
66
|
+
```bash
|
|
67
|
+
yy ledger mark in_progress --id TASK_ID --response "Starting work on this"
|
|
68
|
+
yy ledger mark done --id TASK_ID --response "Completed: implemented X, tested Y" --commit abc123def
|
|
69
|
+
yy ledger mark todo --id TASK_ID --response "Reopening: found regression"
|
|
70
|
+
```
|
|
71
|
+
Required: `--id` and `--response`. Optional: `--commit` (recommended for done).
|
|
72
|
+
|
|
73
|
+
**UPDATE** — Modify task fields
|
|
74
|
+
```bash
|
|
75
|
+
yy ledger update TASK_ID --status todo --tags backend,urgent
|
|
76
|
+
yy ledger update TASK_ID --commit abc123def
|
|
77
|
+
yy ledger update TASK_ID --response "Additional context"
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
**ARCHIVE** — Soft delete (preserves data, sets status to archive)
|
|
81
|
+
```bash
|
|
82
|
+
yy ledger archive TASK_ID
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
### Immutable cold archive packs
|
|
86
|
+
|
|
87
|
+
Normal `list`, `search`, `ready`, and `order` are deliberately hot-only. Exact `get TASK_ID` transparently resolves a hot task or a read-only archived task; use `history TASK_ID` explicitly for its ledger. Discover cold tasks only with bounded, projected `archive-search` output:
|
|
88
|
+
|
|
89
|
+
```bash
|
|
90
|
+
yy ledger archive-search --tag backend --before 2026-01-01 --limit 20 --projection metadata
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
Before archive maintenance, preflight the installed version/help and obtain explicit owner authorization. The repository and index must be clean, and reports must be durable new paths outside the repository:
|
|
94
|
+
|
|
95
|
+
```bash
|
|
96
|
+
yy ledger --version
|
|
97
|
+
yy ledger archive-pack plan --status done,archive --older-than 90d --max-tasks 1000 --target-bytes 26214400 --hard-max-bytes 47185920 --report /external/receipts/archive-plan.json
|
|
98
|
+
# Independently inspect selected IDs, revisions, source HEAD, policy, and plan hash.
|
|
99
|
+
yy ledger archive-pack create --plan /external/receipts/archive-plan.json --report /external/receipts/archive-create.json
|
|
100
|
+
yy ledger archive-pack doctor
|
|
101
|
+
yy ledger doctor
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
A stale plan or selected-task/worktree conflict must fail closed: discard the plan, resolve the conflict, and plan again. Never automate archival, edit/append packs or manifests, restore/reopen an archived ID, use force/lossy controls, or enumerate archive files directly. Create follow-up work as a new hot task related to the archived ID. Production archival, push/deploy, and post-deploy E2E each require separate authorization; agents must not infer it from implementation approval.
|
|
105
|
+
|
|
106
|
+
### Dependency Management
|
|
107
|
+
|
|
108
|
+
**DEPS** — View, add, or remove task dependencies
|
|
109
|
+
```bash
|
|
110
|
+
# View dependency info (blockers, dependents, priority score)
|
|
111
|
+
yy ledger deps TASK_ID
|
|
112
|
+
|
|
113
|
+
# Add blockers (TASK_ID cannot start until BLOCKER1 and BLOCKER2 are done)
|
|
114
|
+
yy ledger deps add --id TASK_ID --blocked-by BLOCKER1 BLOCKER2
|
|
115
|
+
|
|
116
|
+
# Remove a blocker
|
|
117
|
+
yy ledger deps remove --id TASK_ID --blocked-by BLOCKER1
|
|
118
|
+
```
|
|
119
|
+
Cycle detection prevents circular dependencies automatically.
|
|
120
|
+
|
|
121
|
+
**READY** — Tasks with all blockers satisfied (safe to work on)
|
|
122
|
+
```bash
|
|
123
|
+
yy ledger ready
|
|
124
|
+
yy ledger ready --tag backend --limit 5
|
|
125
|
+
```
|
|
126
|
+
Returns tasks where status is backlog/todo/in_progress AND all `blocked_by` tasks are done/archive.
|
|
127
|
+
|
|
128
|
+
**ORDER** — Topological sort of open tasks respecting dependencies
|
|
129
|
+
```bash
|
|
130
|
+
yy ledger order
|
|
131
|
+
yy ledger order --scores
|
|
132
|
+
```
|
|
133
|
+
Use for determining safe parallel execution order.
|
|
134
|
+
|
|
135
|
+
### Body Markup for Inline Dependencies
|
|
136
|
+
|
|
137
|
+
Declare dependencies and relations directly in task body text:
|
|
138
|
+
|
|
139
|
+
```
|
|
140
|
+
[blocked_by]TASK_ID[/blocked_by] — This task is blocked by TASK_ID
|
|
141
|
+
[blocked_by]ID1, ID2[/blocked_by] — Blocked by multiple tasks
|
|
142
|
+
[task_id]RELATED_ID[/task_id] — Reference a related task
|
|
143
|
+
[task_id]ID1 ID2[/task_id] — Multiple related tasks
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
These are parsed automatically when the task is created/updated.
|
|
147
|
+
|
|
148
|
+
### Merge (Multi-Directory Consolidation)
|
|
149
|
+
|
|
150
|
+
When tasks get scattered across subdirectories:
|
|
151
|
+
```bash
|
|
152
|
+
# First produce and review a deterministic plan
|
|
153
|
+
yy ledger merge ./sub1/.juno_task ./sub2/.juno_task --into ./.juno_task \
|
|
154
|
+
--dry-run --plan-file /external/ledger-merge-plan.json
|
|
155
|
+
|
|
156
|
+
# Apply only that reviewed plan and retain its receipt
|
|
157
|
+
yy ledger merge ./sub1/.juno_task ./sub2/.juno_task --into ./.juno_task \
|
|
158
|
+
--apply-plan /external/ledger-merge-plan.json \
|
|
159
|
+
--receipt-file /external/ledger-merge-receipt.json
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
### Output Formats
|
|
163
|
+
|
|
164
|
+
All commands support: `-f json`, `-f ndjson` (default), `-f xml`, `-f table`
|
|
165
|
+
Add `--raw` for compact output. Add `-p` for pretty print.
|
|
166
|
+
|
|
167
|
+
### Best Practices
|
|
168
|
+
|
|
169
|
+
1. **Task sizing**: Create tasks small enough to complete in one iteration without filling the context window
|
|
170
|
+
2. **Status flow**: backlog → todo → in_progress → done (or archive for abandoned tasks)
|
|
171
|
+
3. **Always include `--response`** when using `mark` — document what you did and how you tested it
|
|
172
|
+
4. **Attach commits**: Use `--commit HASH` when marking done, then `update TASK_ID --commit HASH` to link the git history
|
|
173
|
+
5. **Use `ready`** before starting work to find unblocked tasks
|
|
174
|
+
6. **Use `order --scores`** to plan parallel execution pipelines
|
|
175
|
+
7. **Use `[blocked_by]` markup** in task body when creating tasks that depend on others
|
|
176
|
+
8. **Use `[task_id]` markup** in task body to cross-reference related tasks
|
|
177
|
+
9. **Use `get TASK_ID`** to see full task details including resolved dependency and related task info
|
|
178
|
+
10. **Concurrent features are supported** — start each selected task with `yy task start TASK_ID`; each gets a dedicated product worktree, while `yy merge` serializes only target updates
|
|
179
|
+
|
|
180
|
+
### Canonical Controller Routing
|
|
181
|
+
|
|
182
|
+
YYLO Ledger mutation resolves the controller in this order: explicit `JUNO_TASK_ROOT`, repository-local registration, then the current project root. Diagnose before orchestration with `.juno_task/scripts/controller_resolver.py --cwd "$PWD" --operation kanban`. The resolver may bootstrap or idempotently confirm a registration, but changing an existing controller requires `yy migrate registration plan` followed by a separately authorized apply. Explicit/registered path or branch errors fail closed—YYLO Ledger never switches Git branches or falls back silently.
|
|
183
|
+
|
|
184
|
+
Run YYLO Ledger and workflows from the controller. A task checkout may implement/test but routes task/session writes to that controller. An integration-owner checkout stays clean and refuses Kanban/orchestration/session writes in strict mode; launch from the controller and pass the product checkout separately as `TASK_ROOT`.
|
|
185
|
+
|
|
186
|
+
### Environment Variables
|
|
187
|
+
|
|
188
|
+
- `JUNO_TASK_ROOT` — Explicit canonical controller/task-storage root (not the product `TASK_ROOT`)
|
|
189
|
+
- `JUNO_CONTROLLER_BRANCH` — Expected controller branch for environment-based routing
|
|
190
|
+
- `JUNO_WORKSPACE_ROLE` — `controller`, `task`, or `integration-owner`
|
|
191
|
+
- `JUNO_WORKSPACE_ENFORCEMENT` — `off`, `warn`, or `strict`
|
|
192
|
+
- `JUNO_DEBUG=true` — Show diagnostic messages
|
|
193
|
+
- `JUNO_VERBOSE=true` — Show informational messages
|
|
194
|
+
- `JUNO_KANBAN_LIST_BODY_TRUNCATE_CHARS=N` — Override list body truncation (default: 1200)
|
|
195
|
+
|
|
196
|
+
$ARGUMENTS
|
|
197
|
+
|
|
198
|
+
## When to Use
|
|
199
|
+
|
|
200
|
+
- You need to interact with the YYLO Ledger task board (create, list, search, get, mark, update, archive, deps, ready, order, merge).
|
|
201
|
+
- You need dependency-aware scheduling (`deps`, `ready`, `order`) or multi-directory consolidation (`merge`).
|
|
202
|
+
- Use the dedicated `wiki-yylo`, `workflow-yylo` and `artifact-yylo` skills for native wiki/workflow/artifact Records instead of guessing their arguments.
|
|
203
|
+
|
|
204
|
+
## Limitations
|
|
205
|
+
|
|
206
|
+
- Requires YYLO Ledger 0.3.x+ with the needed command groups; if a group is absent, fail closed and request a Ledger upgrade - never edit store files by hand.
|
|
207
|
+
- Discovery (`list`, `search`, `ready`, `order`) is hot-only; cold tasks need explicit `archive-search`.
|
|
208
|
+
- `archive-pack` and `merge` need explicit owner authorization, a clean tree, and external plan/receipt paths; never automate archival or force past conflicts.
|
|
209
|
+
- Does not grant push, deploy, release, or production-mutation authority.
|
|
210
|
+
|
|
211
|
+
### Example
|
|
212
|
+
|
|
213
|
+
```bash
|
|
214
|
+
yy ledger --version && yy ledger --help
|
|
215
|
+
yy ledger ready --limit 5
|
|
216
|
+
yy ledger get TASK_ID
|
|
217
|
+
```
|
|
218
|
+
|
|
219
|
+
> Adapted from [yylo-dev/yylo-skills](https://github.com/yylo-dev/yylo-skills) (MIT) - v2.0.1; frontmatter, When to Use/Limitations, and safety boundaries added for upstream compliance.
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
"better-sqlite3": "^12.11.1",
|
|
12
12
|
"cors": "^2.8.6",
|
|
13
13
|
"express": "^4.18.2",
|
|
14
|
-
"express-rate-limit": "^8.
|
|
14
|
+
"express-rate-limit": "^8.7.0"
|
|
15
15
|
},
|
|
16
16
|
"devDependencies": {
|
|
17
17
|
"@types/better-sqlite3": "^7.6.13",
|
|
@@ -691,9 +691,9 @@
|
|
|
691
691
|
}
|
|
692
692
|
},
|
|
693
693
|
"node_modules/express-rate-limit": {
|
|
694
|
-
"version": "8.
|
|
695
|
-
"resolved": "https://registry.npmjs.org/express-rate-limit/-/express-rate-limit-8.
|
|
696
|
-
"integrity": "sha512-
|
|
694
|
+
"version": "8.7.0",
|
|
695
|
+
"resolved": "https://registry.npmjs.org/express-rate-limit/-/express-rate-limit-8.7.0.tgz",
|
|
696
|
+
"integrity": "sha512-hOwV7WOxXfjRpAM1DSJWZDXx3GhplwD8IfwuwvogD8i1Qnkgosw/H45s4ZnFAUHDAhPjlY9hLBvJhKmGMyY26g==",
|
|
697
697
|
"license": "MIT",
|
|
698
698
|
"dependencies": {
|
|
699
699
|
"debug": "^4.4.3",
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: plan-ledger-tasks-yylo
|
|
3
|
+
description: Create a concise Product Development Requirement and one or more implementation-sized
|
|
4
|
+
YYLO Ledger tasks when the user explicitly asks to plan or register work.
|
|
5
|
+
category: project-management
|
|
6
|
+
risk: safe
|
|
7
|
+
source: https://github.com/yylo-dev/yylo-skills
|
|
8
|
+
source_repo: yylo-dev/yylo-skills
|
|
9
|
+
source_type: community
|
|
10
|
+
date_added: '2026-09-19'
|
|
11
|
+
license: MIT
|
|
12
|
+
license_source: https://github.com/yylo-dev/yylo-skills/blob/main/LICENSE
|
|
13
|
+
compatibility: Requires the `yy` CLI with the `ledger` and `artifact` groups installed.
|
|
14
|
+
Planning only - implementation, worktrees, push, deploy and production mutation
|
|
15
|
+
need a separate explicit request.
|
|
16
|
+
argument-hint: '[Required Features] [Constraints] [Acceptance Criteria]'
|
|
17
|
+
enable-shell-directives: true
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
# Plan Kanban work
|
|
21
|
+
|
|
22
|
+
1. Read the project instructions and relevant product code from the integration or feature worktree. Read existing task/spec metadata through the canonical controller; do not assume `.juno_task/plan.md` exists.
|
|
23
|
+
2. Produce one concise PDR covering the goal, current behavior, scope, exclusions, risks, dependencies, acceptance criteria, and focused tests. Draft it in a fresh external file; do not place it in the product tree or a task body.
|
|
24
|
+
3. Preflight `yy ledger --help` and `yy ledger artifact --help`. Capture the PDR as a local immutable `report` Artifact Record with task/request provenance, then verify its ID, digest, size, retention, retrieval, and history. If the artifact API is unavailable, stop with the external draft intact and request an upgrade; never fall back to product `docs/`, task bodies/responses, new `.juno_task/specs`, or direct store edits.
|
|
25
|
+
4. Split only when pieces can be implemented and validated independently. Concurrent tasks must have explicit path ownership and dependencies.
|
|
26
|
+
5. Create tasks through routed `yy ledger` commands. Put concise durable requirements and acceptance criteria in each task body, record the PDR artifact ID in supported task fields/provenance, and relate follow-ups instead of reopening archived IDs.
|
|
27
|
+
6. Product documentation is only documentation shipped with the product. Never create controller-private tasks, ledger, state, artifacts, objects, specs, or receipts inside a product or feature worktree.
|
|
28
|
+
7. Do not start implementation, create worktrees, push, deploy, or mutate production unless the user separately asks.
|
|
29
|
+
|
|
30
|
+
Use `--id`, not legacy `--ID`, for Kanban mutations. Return the task IDs and a short dependency/order summary.
|
|
31
|
+
|
|
32
|
+
$ARGUMENTS
|
|
33
|
+
|
|
34
|
+
## When to Use
|
|
35
|
+
|
|
36
|
+
- The user explicitly asks to plan or register work in the YYLO Ledger.
|
|
37
|
+
- You need a concise Product Development Requirement (PDR) plus implementation-sized Ledger tasks with dependencies.
|
|
38
|
+
|
|
39
|
+
## Limitations
|
|
40
|
+
|
|
41
|
+
- Planning only: never start implementation, create worktrees, push, deploy, or mutate production from this skill.
|
|
42
|
+
- Requires the installed `yy ledger artifact` API; if unavailable, stop with the external PDR draft intact - never fall back to product `docs/`, task bodies, or direct store edits.
|
|
43
|
+
- Concurrent tasks need explicit path ownership and dependencies; relate follow-ups instead of reopening archived IDs.
|
|
44
|
+
|
|
45
|
+
### Example
|
|
46
|
+
|
|
47
|
+
```bash
|
|
48
|
+
yy ledger --help
|
|
49
|
+
yy ledger artifact --help
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
> Adapted from [yylo-dev/yylo-skills](https://github.com/yylo-dev/yylo-skills) (MIT) - v2.0.1; frontmatter, When to Use/Limitations, and safety boundaries added for upstream compliance.
|