opencode-agile-agent 1.0.1
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/README.md +71 -0
- package/bin/cli.js +434 -0
- package/bin/validate-templates.js +58 -0
- package/package.json +52 -0
- package/templates/.opencode/ARCHITECTURE.md +368 -0
- package/templates/.opencode/README.md +391 -0
- package/templates/.opencode/agents/api-designer.md +312 -0
- package/templates/.opencode/agents/backend-specialist.md +214 -0
- package/templates/.opencode/agents/code-archaeologist.md +260 -0
- package/templates/.opencode/agents/database-architect.md +212 -0
- package/templates/.opencode/agents/debugger.md +302 -0
- package/templates/.opencode/agents/developer.md +523 -0
- package/templates/.opencode/agents/devops-engineer.md +253 -0
- package/templates/.opencode/agents/documentation-writer.md +247 -0
- package/templates/.opencode/agents/explorer-agent.md +239 -0
- package/templates/.opencode/agents/feature-lead.md +302 -0
- package/templates/.opencode/agents/frontend-specialist.md +186 -0
- package/templates/.opencode/agents/game-developer.md +391 -0
- package/templates/.opencode/agents/mobile-developer.md +264 -0
- package/templates/.opencode/agents/orchestrator.md +463 -0
- package/templates/.opencode/agents/penetration-tester.md +256 -0
- package/templates/.opencode/agents/performance-optimizer.md +292 -0
- package/templates/.opencode/agents/pr-reviewer.md +468 -0
- package/templates/.opencode/agents/product-manager.md +225 -0
- package/templates/.opencode/agents/product-owner.md +264 -0
- package/templates/.opencode/agents/project-planner.md +248 -0
- package/templates/.opencode/agents/qa-automation-engineer.md +276 -0
- package/templates/.opencode/agents/security-auditor.md +260 -0
- package/templates/.opencode/agents/seo-specialist.md +266 -0
- package/templates/.opencode/agents/system-analyst.md +428 -0
- package/templates/.opencode/agents/test-engineer.md +229 -0
- package/templates/.opencode/config.template.json +129 -0
- package/templates/.opencode/rules/coding-standards.md +250 -0
- package/templates/.opencode/rules/git-conventions.md +149 -0
- package/templates/.opencode/skills/api-patterns/SKILL.md +162 -0
- package/templates/.opencode/skills/brainstorming/SKILL.md +255 -0
- package/templates/.opencode/skills/clean-code/SKILL.md +351 -0
- package/templates/.opencode/skills/code-philosophy/SKILL.md +512 -0
- package/templates/.opencode/skills/frontend-design/SKILL.md +237 -0
- package/templates/.opencode/skills/intelligent-routing/SKILL.md +195 -0
- package/templates/.opencode/skills/parallel-agents/SKILL.md +274 -0
- package/templates/.opencode/skills/plan-writing/SKILL.md +251 -0
- package/templates/.opencode/skills/systematic-debugging/SKILL.md +210 -0
- package/templates/.opencode/skills/testing-patterns/SKILL.md +252 -0
- package/templates/.opencode/workflows/brainstorm.md +110 -0
- package/templates/.opencode/workflows/create.md +108 -0
- package/templates/.opencode/workflows/debug.md +128 -0
- package/templates/.opencode/workflows/deploy.md +160 -0
- package/templates/.opencode/workflows/enhance.md +253 -0
- package/templates/.opencode/workflows/orchestrate.md +130 -0
- package/templates/.opencode/workflows/plan.md +163 -0
- package/templates/.opencode/workflows/review.md +135 -0
- package/templates/.opencode/workflows/status.md +102 -0
- package/templates/.opencode/workflows/test.md +146 -0
- package/templates/AGENTS.template.md +426 -0
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Explore options and clarify requirements before implementation. Use when requirements are unclear or you need to explore possibilities.
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
# /brainstorm Workflow
|
|
6
|
+
|
|
7
|
+
Explore options, clarify requirements, and discover the best approach.
|
|
8
|
+
|
|
9
|
+
## When to Use
|
|
10
|
+
|
|
11
|
+
- Requirements are vague or incomplete
|
|
12
|
+
- Multiple approaches are possible
|
|
13
|
+
- You need to understand the problem space
|
|
14
|
+
- Starting a new feature or project
|
|
15
|
+
|
|
16
|
+
## Workflow Steps
|
|
17
|
+
|
|
18
|
+
### Step 1: Understand the Request
|
|
19
|
+
|
|
20
|
+
```
|
|
21
|
+
Ask clarifying questions:
|
|
22
|
+
1. What problem are you trying to solve?
|
|
23
|
+
2. Who is this for?
|
|
24
|
+
3. What are the constraints?
|
|
25
|
+
4. What does success look like?
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
### Step 2: Explore Options
|
|
29
|
+
|
|
30
|
+
```
|
|
31
|
+
Generate multiple approaches:
|
|
32
|
+
- Option A: [description]
|
|
33
|
+
- Option B: [description]
|
|
34
|
+
- Option C: [description]
|
|
35
|
+
|
|
36
|
+
For each option, consider:
|
|
37
|
+
- Pros and cons
|
|
38
|
+
- Effort required
|
|
39
|
+
- Risks involved
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
### Step 3: Narrow Down
|
|
43
|
+
|
|
44
|
+
```
|
|
45
|
+
Apply constraints to filter options:
|
|
46
|
+
- Must-have requirements
|
|
47
|
+
- Timeline constraints
|
|
48
|
+
- Technical limitations
|
|
49
|
+
- Resource availability
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
### Step 4: Recommend
|
|
53
|
+
|
|
54
|
+
```
|
|
55
|
+
Based on analysis, recommend:
|
|
56
|
+
- Best approach
|
|
57
|
+
- Why it's recommended
|
|
58
|
+
- Trade-offs to accept
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
### Step 5: Validate
|
|
62
|
+
|
|
63
|
+
```
|
|
64
|
+
Confirm with user:
|
|
65
|
+
"Based on our discussion, I recommend [approach].
|
|
66
|
+
This will [benefit].
|
|
67
|
+
The trade-offs are [trade-offs].
|
|
68
|
+
Should we proceed with this approach?"
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
## Example
|
|
72
|
+
|
|
73
|
+
```
|
|
74
|
+
User: /brainstorm user authentication
|
|
75
|
+
|
|
76
|
+
Agent: I'll help you explore authentication options.
|
|
77
|
+
|
|
78
|
+
**Clarifying Questions:**
|
|
79
|
+
1. What type of users? (consumers, employees, both?)
|
|
80
|
+
2. What security level is required? (basic, MFA, enterprise?)
|
|
81
|
+
3. Any existing auth system to integrate?
|
|
82
|
+
|
|
83
|
+
User: Consumers, basic security, no existing system
|
|
84
|
+
|
|
85
|
+
Agent: **Options:**
|
|
86
|
+
|
|
87
|
+
**Option A: Email/Password**
|
|
88
|
+
- Pros: Simple, familiar to users
|
|
89
|
+
- Cons: Password management, security concerns
|
|
90
|
+
- Effort: Medium
|
|
91
|
+
|
|
92
|
+
**Option B: Social Login (Google, GitHub)**
|
|
93
|
+
- Pros: No password management, faster signup
|
|
94
|
+
- Cons: Dependency on providers, privacy concerns
|
|
95
|
+
- Effort: Low
|
|
96
|
+
|
|
97
|
+
**Option C: Magic Links**
|
|
98
|
+
- Pros: No passwords, secure
|
|
99
|
+
- Cons: Email deliverability, less familiar
|
|
100
|
+
- Effort: Medium
|
|
101
|
+
|
|
102
|
+
**Recommendation:** Option B (Social Login) with Option A as fallback.
|
|
103
|
+
This gives you the best UX with minimal security overhead.
|
|
104
|
+
|
|
105
|
+
Proceed with this approach?
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
---
|
|
109
|
+
|
|
110
|
+
**End with clear direction, not endless exploration.**
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Create new features, components, or projects. Use when building something new.
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
# /create Workflow
|
|
6
|
+
|
|
7
|
+
Build new features, components, or entire projects with structured approach.
|
|
8
|
+
|
|
9
|
+
## When to Use
|
|
10
|
+
|
|
11
|
+
- Creating a new feature
|
|
12
|
+
- Building a new component
|
|
13
|
+
- Starting a new project
|
|
14
|
+
- Adding significant new functionality
|
|
15
|
+
|
|
16
|
+
## Workflow Steps
|
|
17
|
+
|
|
18
|
+
### Step 1: Gather Requirements
|
|
19
|
+
|
|
20
|
+
```
|
|
21
|
+
Understand what to create:
|
|
22
|
+
- What are you building?
|
|
23
|
+
- What are the requirements?
|
|
24
|
+
- Any design specifications?
|
|
25
|
+
- Technical constraints?
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
### Step 2: Plan the Approach
|
|
29
|
+
|
|
30
|
+
```
|
|
31
|
+
Break down the task:
|
|
32
|
+
1. What files need to be created?
|
|
33
|
+
2. What files need to be modified?
|
|
34
|
+
3. What dependencies are needed?
|
|
35
|
+
4. What's the order of operations?
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
### Step 3: Select Agent(s)
|
|
39
|
+
|
|
40
|
+
```
|
|
41
|
+
Based on the task, select appropriate agent(s):
|
|
42
|
+
- Frontend work → frontend-specialist
|
|
43
|
+
- Backend work → backend-specialist
|
|
44
|
+
- Database work → database-architect
|
|
45
|
+
- Multiple domains → orchestrator for coordination
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
### Step 4: Implement
|
|
49
|
+
|
|
50
|
+
```
|
|
51
|
+
Execute the plan:
|
|
52
|
+
1. Create/modify files
|
|
53
|
+
2. Follow project conventions
|
|
54
|
+
3. Add appropriate error handling
|
|
55
|
+
4. Include necessary tests
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
### Step 5: Verify
|
|
59
|
+
|
|
60
|
+
```
|
|
61
|
+
Quality checks:
|
|
62
|
+
- [ ] Code compiles/builds
|
|
63
|
+
- [ ] Linting passes
|
|
64
|
+
- [ ] Tests pass
|
|
65
|
+
- [ ] Feature works as expected
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
### Step 6: Document
|
|
69
|
+
|
|
70
|
+
```
|
|
71
|
+
Document what was created:
|
|
72
|
+
- Summary of changes
|
|
73
|
+
- How to use the new feature
|
|
74
|
+
- Any important notes
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
## Example
|
|
78
|
+
|
|
79
|
+
```
|
|
80
|
+
User: /create user profile page
|
|
81
|
+
|
|
82
|
+
Agent: I'll help you create a user profile page.
|
|
83
|
+
|
|
84
|
+
**Requirements Check:**
|
|
85
|
+
- Display user info: name, email, avatar
|
|
86
|
+
- Allow editing profile
|
|
87
|
+
- Show activity history
|
|
88
|
+
- Responsive design
|
|
89
|
+
|
|
90
|
+
**Plan:**
|
|
91
|
+
1. Create ProfilePage component
|
|
92
|
+
2. Create ProfileForm component
|
|
93
|
+
3. Create ActivityList component
|
|
94
|
+
4. Add API endpoints
|
|
95
|
+
5. Add tests
|
|
96
|
+
|
|
97
|
+
**Agents:** frontend-specialist + backend-specialist
|
|
98
|
+
|
|
99
|
+
Proceed with this plan?
|
|
100
|
+
|
|
101
|
+
User: Yes
|
|
102
|
+
|
|
103
|
+
Agent: [Implementation proceeds...]
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
---
|
|
107
|
+
|
|
108
|
+
**Create with purpose, verify with care.**
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Systematically debug and fix issues. Use when encountering errors, bugs, or unexpected behavior.
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
# /debug Workflow
|
|
6
|
+
|
|
7
|
+
Systematically identify and fix bugs, errors, and unexpected behavior.
|
|
8
|
+
|
|
9
|
+
## When to Use
|
|
10
|
+
|
|
11
|
+
- Application is crashing
|
|
12
|
+
- Feature not working as expected
|
|
13
|
+
- Error messages appearing
|
|
14
|
+
- Performance issues
|
|
15
|
+
- Unexpected behavior
|
|
16
|
+
|
|
17
|
+
## Workflow Steps
|
|
18
|
+
|
|
19
|
+
### Step 1: Reproduce
|
|
20
|
+
|
|
21
|
+
```
|
|
22
|
+
Document the issue:
|
|
23
|
+
1. What is the expected behavior?
|
|
24
|
+
2. What is the actual behavior?
|
|
25
|
+
3. What are the exact steps to reproduce?
|
|
26
|
+
4. What environment? (browser, OS, version)
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
### Step 2: Gather Information
|
|
30
|
+
|
|
31
|
+
```
|
|
32
|
+
Collect evidence:
|
|
33
|
+
- Error messages and stack traces
|
|
34
|
+
- Logs and console output
|
|
35
|
+
- Recent code changes
|
|
36
|
+
- Environment differences
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
### Step 3: Hypothesize
|
|
40
|
+
|
|
41
|
+
```
|
|
42
|
+
Generate possible causes:
|
|
43
|
+
1. [Hypothesis 1] - Why it might be happening
|
|
44
|
+
2. [Hypothesis 2] - Alternative explanation
|
|
45
|
+
3. [Hypothesis 3] - Another possibility
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
### Step 4: Test Hypotheses
|
|
49
|
+
|
|
50
|
+
```
|
|
51
|
+
For each hypothesis:
|
|
52
|
+
1. Design a test to verify/falsify
|
|
53
|
+
2. Run the test
|
|
54
|
+
3. Document results
|
|
55
|
+
4. Narrow down root cause
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
### Step 5: Fix Root Cause
|
|
59
|
+
|
|
60
|
+
```
|
|
61
|
+
Once root cause is identified:
|
|
62
|
+
1. Implement the fix
|
|
63
|
+
2. Address the underlying issue, not just symptoms
|
|
64
|
+
3. Add safeguards to prevent recurrence
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
### Step 6: Verify Fix
|
|
68
|
+
|
|
69
|
+
```
|
|
70
|
+
Ensure the fix works:
|
|
71
|
+
1. Test the original reproduction steps
|
|
72
|
+
2. Test edge cases
|
|
73
|
+
3. Check for regressions
|
|
74
|
+
4. Run existing tests
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
### Step 7: Document
|
|
78
|
+
|
|
79
|
+
```
|
|
80
|
+
Record the fix:
|
|
81
|
+
- What was the issue?
|
|
82
|
+
- What was the root cause?
|
|
83
|
+
- What was the fix?
|
|
84
|
+
- How to prevent in future?
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
## Example
|
|
88
|
+
|
|
89
|
+
```
|
|
90
|
+
User: /debug login returns 500 error
|
|
91
|
+
|
|
92
|
+
Agent: I'll help you debug the login error.
|
|
93
|
+
|
|
94
|
+
**Step 1: Reproduce**
|
|
95
|
+
- Navigate to /login
|
|
96
|
+
- Enter valid credentials
|
|
97
|
+
- Click login
|
|
98
|
+
- Error: "500 Internal Server Error"
|
|
99
|
+
|
|
100
|
+
**Step 2: Gather Information**
|
|
101
|
+
- Stack trace points to auth.service.ts:45
|
|
102
|
+
- Recent commit modified password hashing
|
|
103
|
+
- Error: "Cannot read property 'hash' of undefined"
|
|
104
|
+
|
|
105
|
+
**Step 3: Hypothesize**
|
|
106
|
+
1. Password object is undefined
|
|
107
|
+
2. Hash function signature changed
|
|
108
|
+
3. Missing null check
|
|
109
|
+
|
|
110
|
+
**Step 4: Test**
|
|
111
|
+
- Checked password hashing library update
|
|
112
|
+
- Found: hash() now returns Promise, was sync
|
|
113
|
+
|
|
114
|
+
**Step 5: Fix**
|
|
115
|
+
- Added await to hash() call
|
|
116
|
+
- Added null check for password
|
|
117
|
+
|
|
118
|
+
**Step 6: Verify**
|
|
119
|
+
- Login works correctly
|
|
120
|
+
- Tests pass
|
|
121
|
+
- No regressions
|
|
122
|
+
|
|
123
|
+
**Fixed:** Added await to async password hashing function.
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
---
|
|
127
|
+
|
|
128
|
+
**Debug systematically, fix root causes, not symptoms.**
|
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Deploy application to production or staging. Use when ready to release.
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
# /deploy Workflow
|
|
6
|
+
|
|
7
|
+
Deploy applications to production, staging, or other environments.
|
|
8
|
+
|
|
9
|
+
## When to Use
|
|
10
|
+
|
|
11
|
+
- Ready to release to production
|
|
12
|
+
- Deploying to staging for testing
|
|
13
|
+
- Rolling out a new version
|
|
14
|
+
- Setting up CI/CD
|
|
15
|
+
|
|
16
|
+
## Workflow Steps
|
|
17
|
+
|
|
18
|
+
### Step 1: Pre-Deployment Check
|
|
19
|
+
|
|
20
|
+
```
|
|
21
|
+
Verify readiness:
|
|
22
|
+
- [ ] All tests pass
|
|
23
|
+
- [ ] Code reviewed and approved
|
|
24
|
+
- [ ] Changelog updated
|
|
25
|
+
- [ ] Environment variables configured
|
|
26
|
+
- [ ] Database migrations ready (if needed)
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
### Step 2: Build
|
|
30
|
+
|
|
31
|
+
```
|
|
32
|
+
Prepare the build:
|
|
33
|
+
1. Install dependencies
|
|
34
|
+
2. Run build command
|
|
35
|
+
3. Verify build output
|
|
36
|
+
4. Check bundle size
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
### Step 3: Deploy
|
|
40
|
+
|
|
41
|
+
```
|
|
42
|
+
Execute deployment:
|
|
43
|
+
1. Choose deployment target
|
|
44
|
+
2. Deploy to environment
|
|
45
|
+
3. Monitor deployment progress
|
|
46
|
+
4. Verify deployment success
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
### Step 4: Post-Deployment Verification
|
|
50
|
+
|
|
51
|
+
```
|
|
52
|
+
Verify the deployment:
|
|
53
|
+
1. Health check endpoints
|
|
54
|
+
2. Smoke tests
|
|
55
|
+
3. Key user flows
|
|
56
|
+
4. Error monitoring
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
### Step 5: Monitor
|
|
60
|
+
|
|
61
|
+
```
|
|
62
|
+
Watch for issues:
|
|
63
|
+
- Error rates
|
|
64
|
+
- Response times
|
|
65
|
+
- Resource usage
|
|
66
|
+
- User feedback
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
## Deployment Targets
|
|
70
|
+
|
|
71
|
+
### Vercel
|
|
72
|
+
|
|
73
|
+
```bash
|
|
74
|
+
# Install CLI
|
|
75
|
+
npm i -g vercel
|
|
76
|
+
|
|
77
|
+
# Deploy
|
|
78
|
+
vercel --prod
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
### Docker
|
|
82
|
+
|
|
83
|
+
```bash
|
|
84
|
+
# Build image
|
|
85
|
+
docker build -t app:latest .
|
|
86
|
+
|
|
87
|
+
# Run container
|
|
88
|
+
docker run -p 3000:3000 app:latest
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
### Kubernetes
|
|
92
|
+
|
|
93
|
+
```bash
|
|
94
|
+
# Apply manifests
|
|
95
|
+
kubectl apply -f k8s/
|
|
96
|
+
|
|
97
|
+
# Verify deployment
|
|
98
|
+
kubectl get pods
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
### AWS
|
|
102
|
+
|
|
103
|
+
```bash
|
|
104
|
+
# Deploy to ECS
|
|
105
|
+
aws ecs update-service --cluster prod --service app --force-new-deployment
|
|
106
|
+
|
|
107
|
+
# Or use SAM/CDK
|
|
108
|
+
sam deploy --guided
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
## Rollback Plan
|
|
112
|
+
|
|
113
|
+
```
|
|
114
|
+
If deployment fails:
|
|
115
|
+
1. Identify the issue
|
|
116
|
+
2. Rollback to previous version
|
|
117
|
+
3. Investigate in development
|
|
118
|
+
4. Fix and redeploy
|
|
119
|
+
|
|
120
|
+
Rollback commands:
|
|
121
|
+
- Vercel: vercel rollback
|
|
122
|
+
- Docker: docker tag app:previous app:latest
|
|
123
|
+
- K8s: kubectl rollout undo deployment/app
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
## Example
|
|
127
|
+
|
|
128
|
+
```
|
|
129
|
+
User: /deploy to production
|
|
130
|
+
|
|
131
|
+
Agent: I'll help you deploy to production.
|
|
132
|
+
|
|
133
|
+
**Pre-Deployment Check:**
|
|
134
|
+
- [x] All tests pass
|
|
135
|
+
- [x] Code reviewed
|
|
136
|
+
- [x] Changelog updated
|
|
137
|
+
- [x] Environment configured
|
|
138
|
+
|
|
139
|
+
**Build:**
|
|
140
|
+
- Installing dependencies...
|
|
141
|
+
- Building application...
|
|
142
|
+
- Bundle size: 245KB (within budget)
|
|
143
|
+
|
|
144
|
+
**Deploy:**
|
|
145
|
+
- Target: Vercel
|
|
146
|
+
- Environment: production
|
|
147
|
+
- Deploying...
|
|
148
|
+
|
|
149
|
+
**Verification:**
|
|
150
|
+
- Health check: ✅
|
|
151
|
+
- Smoke tests: ✅
|
|
152
|
+
- Key flows: ✅
|
|
153
|
+
|
|
154
|
+
**Deployed Successfully!**
|
|
155
|
+
URL: https://app.example.com
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
---
|
|
159
|
+
|
|
160
|
+
**Deploy with confidence, rollback with ease.**
|