@wbern/claude-instructions 1.20.0 → 2.0.0

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.
Files changed (79) hide show
  1. package/README.md +5 -25
  2. package/bin/cli.js +345 -196
  3. package/package.json +2 -3
  4. package/src/README.md +279 -0
  5. package/src/fragments/aaa-pattern.md +7 -0
  6. package/src/fragments/beads-awareness.md +1 -0
  7. package/src/fragments/beads-integration.md +8 -0
  8. package/{downloads/without-beads/commit.md → src/fragments/commit-process.md} +0 -17
  9. package/src/fragments/consistency-check.md +1 -0
  10. package/src/fragments/discovery-phase.md +22 -0
  11. package/src/fragments/fallback-arguments-beads.md +3 -0
  12. package/src/fragments/fallback-arguments.md +1 -0
  13. package/src/fragments/fullwidth-dollar-note.md +1 -0
  14. package/src/fragments/gap-beads.md +1 -0
  15. package/src/fragments/git-host-detection.md +19 -0
  16. package/src/fragments/github-issue-fetch.md +10 -0
  17. package/src/fragments/peeping-tom-warning.md +9 -0
  18. package/src/fragments/plan-beads-context-hint.md +1 -0
  19. package/src/fragments/plan-beads-details.md +49 -0
  20. package/src/fragments/plan-beads-integration.md +2 -0
  21. package/src/fragments/summarize-beads.md +8 -0
  22. package/{downloads/without-beads/summarize.md → src/fragments/summarize-structure.md} +0 -20
  23. package/{downloads/without-beads/tdd.md → src/fragments/tdd-fundamentals.md} +0 -21
  24. package/src/fragments/test-quality-criteria.md +24 -0
  25. package/src/fragments/universal-guidelines.md +6 -0
  26. package/{downloads/without-beads → src/sources}/add-command.md +11 -25
  27. package/{downloads/without-beads → src/sources}/ask.md +11 -6
  28. package/{downloads/without-beads → src/sources}/beepboop.md +7 -6
  29. package/{downloads/without-beads → src/sources}/busycommit.md +9 -36
  30. package/{downloads/without-beads → src/sources}/code-review.md +16 -30
  31. package/src/sources/commit.md +20 -0
  32. package/src/sources/cycle.md +23 -0
  33. package/{downloads/without-beads → src/sources}/gap.md +11 -8
  34. package/src/sources/green.md +23 -0
  35. package/src/sources/issue.md +42 -0
  36. package/{downloads/without-beads → src/sources}/kata.md +10 -9
  37. package/{downloads/without-beads → src/sources}/plan.md +18 -39
  38. package/{downloads/without-beads → src/sources}/pr.md +10 -6
  39. package/src/sources/red.md +26 -0
  40. package/src/sources/refactor.md +27 -0
  41. package/{downloads/without-beads → src/sources}/ship.md +11 -6
  42. package/{downloads/without-beads → src/sources}/show.md +11 -6
  43. package/src/sources/spike.md +23 -0
  44. package/src/sources/summarize.md +23 -0
  45. package/{downloads/without-beads → src/sources}/tdd-review.md +11 -31
  46. package/src/sources/tdd.md +24 -0
  47. package/{downloads/without-beads → src/sources}/worktree-add.md +13 -31
  48. package/{downloads/without-beads → src/sources}/worktree-cleanup.md +9 -27
  49. package/downloads/with-beads/add-command.md +0 -159
  50. package/downloads/with-beads/ask.md +0 -144
  51. package/downloads/with-beads/beepboop.md +0 -47
  52. package/downloads/with-beads/busycommit.md +0 -78
  53. package/downloads/with-beads/code-review.md +0 -263
  54. package/downloads/with-beads/commands-metadata.json +0 -155
  55. package/downloads/with-beads/commit.md +0 -49
  56. package/downloads/with-beads/cycle.md +0 -95
  57. package/downloads/with-beads/gap.md +0 -38
  58. package/downloads/with-beads/green.md +0 -95
  59. package/downloads/with-beads/issue.md +0 -152
  60. package/downloads/with-beads/kata.md +0 -444
  61. package/downloads/with-beads/plan.md +0 -186
  62. package/downloads/with-beads/pr.md +0 -82
  63. package/downloads/with-beads/red.md +0 -103
  64. package/downloads/with-beads/refactor.md +0 -105
  65. package/downloads/with-beads/ship.md +0 -98
  66. package/downloads/with-beads/show.md +0 -114
  67. package/downloads/with-beads/spike.md +0 -95
  68. package/downloads/with-beads/summarize.md +0 -54
  69. package/downloads/with-beads/tdd-review.md +0 -102
  70. package/downloads/with-beads/tdd.md +0 -94
  71. package/downloads/with-beads/worktree-add.md +0 -357
  72. package/downloads/with-beads/worktree-cleanup.md +0 -250
  73. package/downloads/without-beads/commands-metadata.json +0 -155
  74. package/downloads/without-beads/cycle.md +0 -90
  75. package/downloads/without-beads/green.md +0 -90
  76. package/downloads/without-beads/issue.md +0 -140
  77. package/downloads/without-beads/red.md +0 -98
  78. package/downloads/without-beads/refactor.md +0 -100
  79. package/downloads/without-beads/spike.md +0 -90
@@ -1,49 +0,0 @@
1
- ---
2
- description: Create a git commit following project standards
3
- argument-hint: [optional-commit-description]
4
- ---
5
-
6
- ## General Guidelines
7
-
8
- ### Output Style
9
-
10
- - **Never explicitly mention TDD** in code, comments, commits, PRs, or issues
11
- - Write natural, descriptive code without meta-commentary about the development process
12
- - The code should speak for itself - TDD is the process, not the product
13
-
14
- Beads is available for task tracking. Use `mcp__beads__*` tools to manage issues (the user interacts via `bd` commands).
15
-
16
- Create a git commit following project standards
17
-
18
- Include any of the following info if specified: $ARGUMENTS
19
-
20
- ## Commit Message Rules
21
-
22
- Follows [Conventional Commits](https://www.conventionalcommits.org/) standard.
23
-
24
- 1. **Format**: `type(#issue): description`
25
- - Use `#123` for local repo issues
26
- - Use `owner/repo#123` for cross-repo issues
27
- - Common types: `feat`, `fix`, `docs`, `refactor`, `test`, `chore`
28
-
29
- 2. **AI Credits**: **NEVER include AI credits in commit messages**
30
- - No "Generated with Claude Code"
31
- - No "Co-Authored-By: Claude" or "Co-Authored-By: Happy"
32
- - Focus on the actual changes made, not conversation history
33
-
34
- 3. **Content**: Write clear, concise commit messages describing what changed and why
35
-
36
- ## Process
37
-
38
- 1. Run `git status` and `git diff` to review changes
39
- 2. Run `git log --oneline -5` to see recent commit style
40
- 3. Stage relevant files with `git add`
41
- 4. Create commit with descriptive message
42
- 5. Verify with `git status`
43
-
44
- ## Example
45
-
46
- ```bash
47
- git add <files>
48
- git commit -m "feat(#123): add validation to user input form"
49
- ```
@@ -1,95 +0,0 @@
1
- ---
2
- description: Execute complete TDD cycle - Red, Green, and Refactor phases in sequence
3
- argument-hint: <feature or requirement description>
4
- ---
5
-
6
- RED+GREEN+REFACTOR (one cycle) PHASE! Apply the below to the info given by user input here:
7
-
8
- $ARGUMENTS
9
-
10
- ## General Guidelines
11
-
12
- ### Output Style
13
-
14
- - **Never explicitly mention TDD** in code, comments, commits, PRs, or issues
15
- - Write natural, descriptive code without meta-commentary about the development process
16
- - The code should speak for itself - TDD is the process, not the product
17
-
18
- Beads is available for task tracking. Use `mcp__beads__*` tools to manage issues (the user interacts via `bd` commands).
19
-
20
- (If there was no info above, fallback to:
21
-
22
- 1. Context of the conversation, if there's an immediate thing
23
- 2. `bd ready` to see what to work on next and start from there)
24
-
25
- ## TDD Fundamentals
26
-
27
- ### The TDD Cycle
28
-
29
- The foundation of TDD is the Red-Green-Refactor cycle:
30
-
31
- 1. **Red Phase**: Write ONE failing test that describes desired behavior
32
-
33
- - The test must fail for the RIGHT reason (not syntax/import errors)
34
- - Only one test at a time - this is critical for TDD discipline
35
- - Exception: For browser-level tests or expensive setup (e.g., Storybook `*.stories.tsx`), group multiple assertions within a single test block to avoid redundant setup - but only when adding assertions to an existing interaction flow. If new user interactions are required, still create a new test. Split files by category if they exceed ~1000 lines.
36
- - **Adding a single test to a test file is ALWAYS allowed** - no prior test output needed
37
- - Starting TDD for a new feature is always valid, even if test output shows unrelated work
38
- - For DOM-based tests, use `data-testid` attributes to select elements rather than CSS classes, tag names, or text content
39
- - Avoid hard-coded timeouts both in form of sleep() or timeout: 5000 etc; use proper async patterns (`waitFor`, `findBy*`, event-based sync) instead and rely on global test configs for timeout settings
40
-
41
- 2. **Green Phase**: Write MINIMAL code to make the test pass
42
-
43
- - Implement only what's needed for the current failing test
44
- - No anticipatory coding or extra features
45
- - Address the specific failure message
46
-
47
- 3. **Refactor Phase**: Improve code structure while keeping tests green
48
- - Only allowed when relevant tests are passing
49
- - Requires proof that tests have been run and are green
50
- - Applies to BOTH implementation and test code
51
- - No refactoring with failing tests - fix them first
52
-
53
- ### Core Violations
54
-
55
- 1. **Multiple Test Addition**
56
-
57
- - Adding more than one new test at once
58
- - Exception: Initial test file setup or extracting shared test utilities
59
-
60
- 2. **Over-Implementation**
61
-
62
- - Code that exceeds what's needed to pass the current failing test
63
- - Adding untested features, methods, or error handling
64
- - Implementing multiple methods when test only requires one
65
-
66
- 3. **Premature Implementation**
67
- - Adding implementation before a test exists and fails properly
68
- - Adding implementation without running the test first
69
- - Refactoring when tests haven't been run or are failing
70
-
71
- ### Critical Principle: Incremental Development
72
-
73
- Each step in TDD should address ONE specific issue:
74
-
75
- - Test fails "not defined" → Create empty stub/class only
76
- - Test fails "not a function" → Add method stub only
77
- - Test fails with assertion → Implement minimal logic only
78
-
79
- ### Optional Pre-Phase: Spike Phase
80
-
81
- In rare cases where the problem space, interface, or expected behavior is unclear, a **Spike Phase** may be used **before the Red Phase**.
82
- This phase is **not part of the regular TDD workflow** and must only be applied under exceptional circumstances.
83
-
84
- - The goal of a Spike is **exploration and learning**, not implementation.
85
- - The code written during a Spike is **disposable** and **must not** be merged or reused directly.
86
- - Once sufficient understanding is achieved, all spike code is discarded, and normal TDD resumes starting from the **Red Phase**.
87
- - A Spike is justified only when it is impossible to define a meaningful failing test due to technical uncertainty or unknown system behavior.
88
-
89
- ### General Information
90
-
91
- - Sometimes the test output shows as no tests have been run when a new test is failing due to a missing import or constructor. In such cases, allow the agent to create simple stubs. Ask them if they forgot to create a stub if they are stuck.
92
- - It is never allowed to introduce new logic without evidence of relevant failing tests. However, stubs and simple implementation to make imports and test infrastructure work is fine.
93
- - In the refactor phase, it is perfectly fine to refactor both test and implementation code. That said, completely new functionality is not allowed. Types, clean up, abstractions, and helpers are allowed as long as they do not introduce new behavior.
94
- - Adding types, interfaces, or a constant in order to replace magic values is perfectly fine during refactoring.
95
- - Provide the agent with helpful directions so that they do not get stuck when blocking them.
@@ -1,38 +0,0 @@
1
- ---
2
- description: Analyze conversation context for unaddressed items and gaps
3
- argument-hint: [optional additional info]
4
- ---
5
-
6
- ## General Guidelines
7
-
8
- ### Output Style
9
-
10
- - **Never explicitly mention TDD** in code, comments, commits, PRs, or issues
11
- - Write natural, descriptive code without meta-commentary about the development process
12
- - The code should speak for itself - TDD is the process, not the product
13
-
14
- Beads is available for task tracking. Use `mcp__beads__*` tools to manage issues (the user interacts via `bd` commands).
15
-
16
- Analyze the current conversation context and identify things that have not yet been addressed. Look for:
17
-
18
- 1. **Incomplete implementations** - Code that was started but not finished
19
- 2. **Unused variables/results** - Values that were captured but never used
20
- 3. **Missing tests** - Functionality without test coverage
21
- 4. **Open issues** - Beads issues that are still open or in progress
22
-
23
- 5. **User requests** - Things the user asked for that weren't fully completed
24
- 6. **TODO comments** - Any TODOs mentioned in conversation
25
- 7. **Error handling gaps** - Missing error cases or edge cases
26
- 8. **Documentation gaps** - Undocumented APIs or features
27
- 9. **Consistency check** - Look for inconsistent patterns, naming conventions, or structure across the codebase
28
-
29
- Present findings as a prioritized list with:
30
-
31
- - What the gap is
32
- - Why it matters
33
- - Suggested next action
34
-
35
- If there are no gaps, confirm that everything discussed has been addressed.
36
-
37
- Additional info:
38
- $ARGUMENTS
@@ -1,95 +0,0 @@
1
- ---
2
- description: Execute TDD Green Phase - write minimal implementation to pass the failing test
3
- argument-hint: <implementation description>
4
- ---
5
-
6
- GREEN PHASE! Apply the below to the info given by user input here:
7
-
8
- $ARGUMENTS
9
-
10
- ## General Guidelines
11
-
12
- ### Output Style
13
-
14
- - **Never explicitly mention TDD** in code, comments, commits, PRs, or issues
15
- - Write natural, descriptive code without meta-commentary about the development process
16
- - The code should speak for itself - TDD is the process, not the product
17
-
18
- Beads is available for task tracking. Use `mcp__beads__*` tools to manage issues (the user interacts via `bd` commands).
19
-
20
- (If there was no info above, fallback to:
21
-
22
- 1. Context of the conversation, if there's an immediate thing
23
- 2. `bd ready` to see what to work on next and start from there)
24
-
25
- ## TDD Fundamentals
26
-
27
- ### The TDD Cycle
28
-
29
- The foundation of TDD is the Red-Green-Refactor cycle:
30
-
31
- 1. **Red Phase**: Write ONE failing test that describes desired behavior
32
-
33
- - The test must fail for the RIGHT reason (not syntax/import errors)
34
- - Only one test at a time - this is critical for TDD discipline
35
- - Exception: For browser-level tests or expensive setup (e.g., Storybook `*.stories.tsx`), group multiple assertions within a single test block to avoid redundant setup - but only when adding assertions to an existing interaction flow. If new user interactions are required, still create a new test. Split files by category if they exceed ~1000 lines.
36
- - **Adding a single test to a test file is ALWAYS allowed** - no prior test output needed
37
- - Starting TDD for a new feature is always valid, even if test output shows unrelated work
38
- - For DOM-based tests, use `data-testid` attributes to select elements rather than CSS classes, tag names, or text content
39
- - Avoid hard-coded timeouts both in form of sleep() or timeout: 5000 etc; use proper async patterns (`waitFor`, `findBy*`, event-based sync) instead and rely on global test configs for timeout settings
40
-
41
- 2. **Green Phase**: Write MINIMAL code to make the test pass
42
-
43
- - Implement only what's needed for the current failing test
44
- - No anticipatory coding or extra features
45
- - Address the specific failure message
46
-
47
- 3. **Refactor Phase**: Improve code structure while keeping tests green
48
- - Only allowed when relevant tests are passing
49
- - Requires proof that tests have been run and are green
50
- - Applies to BOTH implementation and test code
51
- - No refactoring with failing tests - fix them first
52
-
53
- ### Core Violations
54
-
55
- 1. **Multiple Test Addition**
56
-
57
- - Adding more than one new test at once
58
- - Exception: Initial test file setup or extracting shared test utilities
59
-
60
- 2. **Over-Implementation**
61
-
62
- - Code that exceeds what's needed to pass the current failing test
63
- - Adding untested features, methods, or error handling
64
- - Implementing multiple methods when test only requires one
65
-
66
- 3. **Premature Implementation**
67
- - Adding implementation before a test exists and fails properly
68
- - Adding implementation without running the test first
69
- - Refactoring when tests haven't been run or are failing
70
-
71
- ### Critical Principle: Incremental Development
72
-
73
- Each step in TDD should address ONE specific issue:
74
-
75
- - Test fails "not defined" → Create empty stub/class only
76
- - Test fails "not a function" → Add method stub only
77
- - Test fails with assertion → Implement minimal logic only
78
-
79
- ### Optional Pre-Phase: Spike Phase
80
-
81
- In rare cases where the problem space, interface, or expected behavior is unclear, a **Spike Phase** may be used **before the Red Phase**.
82
- This phase is **not part of the regular TDD workflow** and must only be applied under exceptional circumstances.
83
-
84
- - The goal of a Spike is **exploration and learning**, not implementation.
85
- - The code written during a Spike is **disposable** and **must not** be merged or reused directly.
86
- - Once sufficient understanding is achieved, all spike code is discarded, and normal TDD resumes starting from the **Red Phase**.
87
- - A Spike is justified only when it is impossible to define a meaningful failing test due to technical uncertainty or unknown system behavior.
88
-
89
- ### General Information
90
-
91
- - Sometimes the test output shows as no tests have been run when a new test is failing due to a missing import or constructor. In such cases, allow the agent to create simple stubs. Ask them if they forgot to create a stub if they are stuck.
92
- - It is never allowed to introduce new logic without evidence of relevant failing tests. However, stubs and simple implementation to make imports and test infrastructure work is fine.
93
- - In the refactor phase, it is perfectly fine to refactor both test and implementation code. That said, completely new functionality is not allowed. Types, clean up, abstractions, and helpers are allowed as long as they do not introduce new behavior.
94
- - Adding types, interfaces, or a constant in order to replace magic values is perfectly fine during refactoring.
95
- - Provide the agent with helpful directions so that they do not get stuck when blocking them.
@@ -1,152 +0,0 @@
1
- ---
2
- description: Analyze GitHub issue and create TDD implementation plan
3
- argument-hint: [optional-issue-number]
4
- ---
5
-
6
- Analyze GitHub issue and create TDD implementation plan.
7
-
8
- ## General Guidelines
9
-
10
- ### Output Style
11
-
12
- - **Never explicitly mention TDD** in code, comments, commits, PRs, or issues
13
- - Write natural, descriptive code without meta-commentary about the development process
14
- - The code should speak for itself - TDD is the process, not the product
15
-
16
- Beads is available for task tracking. Use `mcp__beads__*` tools to manage issues (the user interacts via `bd` commands).
17
-
18
- Process:
19
-
20
- 1. Get Issue Number
21
-
22
- - Either from branch name use that issue number
23
- - Patterns: issue-123, 123-feature, feature/123, fix/123
24
- - Or from this bullet point with custom info: $ARGUMENTS
25
- - If not found: ask user
26
-
27
- 1. Fetch Issue
28
-
29
- Try to fetch the issue using GitHub MCP (mcp__github__issue_read tool).
30
-
31
- If GitHub MCP is not configured, show:
32
-
33
- ```
34
- GitHub MCP not configured!
35
- See: https://github.com/modelcontextprotocol/servers/tree/main/src/github
36
- Trying GitHub CLI fallback...
37
- ```
38
-
39
- Then try using `gh issue view [ISSUE_NUMBER] --json` as fallback.
40
-
41
- 1. Analyze and Plan
42
-
43
- Summarize the issue and requirements, then:
44
-
45
- ## Discovery Phase
46
-
47
- Understand the requirement by asking (use AskUserQuestion if needed):
48
-
49
- **Problem Statement**
50
-
51
- - What problem does this solve?
52
- - Who experiences this problem?
53
- - What's the current pain point?
54
-
55
- **Desired Outcome**
56
-
57
- - What should happen after this is built?
58
- - How will users interact with it?
59
- - What does success look like?
60
-
61
- **Scope & Constraints**
62
-
63
- - What's in scope vs. out of scope?
64
- - Any technical constraints?
65
- - Dependencies on other systems/features?
66
-
67
- **Context Check**
68
-
69
- - Search codebase for related features/modules
70
- - Check for existing test files that might be relevant
71
-
72
- ### Beads Integration
73
-
74
- Use Beads MCP to:
75
-
76
- - Track work with `bd ready` to find next task
77
- - Create issues with `bd create "description"`
78
- - Track dependencies with `bd dep add`
79
-
80
- See <https://github.com/steveyegge/beads> for more information.
81
-
82
- ## TDD Fundamentals
83
-
84
- ### The TDD Cycle
85
-
86
- The foundation of TDD is the Red-Green-Refactor cycle:
87
-
88
- 1. **Red Phase**: Write ONE failing test that describes desired behavior
89
-
90
- - The test must fail for the RIGHT reason (not syntax/import errors)
91
- - Only one test at a time - this is critical for TDD discipline
92
- - Exception: For browser-level tests or expensive setup (e.g., Storybook `*.stories.tsx`), group multiple assertions within a single test block to avoid redundant setup - but only when adding assertions to an existing interaction flow. If new user interactions are required, still create a new test. Split files by category if they exceed ~1000 lines.
93
- - **Adding a single test to a test file is ALWAYS allowed** - no prior test output needed
94
- - Starting TDD for a new feature is always valid, even if test output shows unrelated work
95
- - For DOM-based tests, use `data-testid` attributes to select elements rather than CSS classes, tag names, or text content
96
- - Avoid hard-coded timeouts both in form of sleep() or timeout: 5000 etc; use proper async patterns (`waitFor`, `findBy*`, event-based sync) instead and rely on global test configs for timeout settings
97
-
98
- 2. **Green Phase**: Write MINIMAL code to make the test pass
99
-
100
- - Implement only what's needed for the current failing test
101
- - No anticipatory coding or extra features
102
- - Address the specific failure message
103
-
104
- 3. **Refactor Phase**: Improve code structure while keeping tests green
105
- - Only allowed when relevant tests are passing
106
- - Requires proof that tests have been run and are green
107
- - Applies to BOTH implementation and test code
108
- - No refactoring with failing tests - fix them first
109
-
110
- ### Core Violations
111
-
112
- 1. **Multiple Test Addition**
113
-
114
- - Adding more than one new test at once
115
- - Exception: Initial test file setup or extracting shared test utilities
116
-
117
- 2. **Over-Implementation**
118
-
119
- - Code that exceeds what's needed to pass the current failing test
120
- - Adding untested features, methods, or error handling
121
- - Implementing multiple methods when test only requires one
122
-
123
- 3. **Premature Implementation**
124
- - Adding implementation before a test exists and fails properly
125
- - Adding implementation without running the test first
126
- - Refactoring when tests haven't been run or are failing
127
-
128
- ### Critical Principle: Incremental Development
129
-
130
- Each step in TDD should address ONE specific issue:
131
-
132
- - Test fails "not defined" → Create empty stub/class only
133
- - Test fails "not a function" → Add method stub only
134
- - Test fails with assertion → Implement minimal logic only
135
-
136
- ### Optional Pre-Phase: Spike Phase
137
-
138
- In rare cases where the problem space, interface, or expected behavior is unclear, a **Spike Phase** may be used **before the Red Phase**.
139
- This phase is **not part of the regular TDD workflow** and must only be applied under exceptional circumstances.
140
-
141
- - The goal of a Spike is **exploration and learning**, not implementation.
142
- - The code written during a Spike is **disposable** and **must not** be merged or reused directly.
143
- - Once sufficient understanding is achieved, all spike code is discarded, and normal TDD resumes starting from the **Red Phase**.
144
- - A Spike is justified only when it is impossible to define a meaningful failing test due to technical uncertainty or unknown system behavior.
145
-
146
- ### General Information
147
-
148
- - Sometimes the test output shows as no tests have been run when a new test is failing due to a missing import or constructor. In such cases, allow the agent to create simple stubs. Ask them if they forgot to create a stub if they are stuck.
149
- - It is never allowed to introduce new logic without evidence of relevant failing tests. However, stubs and simple implementation to make imports and test infrastructure work is fine.
150
- - In the refactor phase, it is perfectly fine to refactor both test and implementation code. That said, completely new functionality is not allowed. Types, clean up, abstractions, and helpers are allowed as long as they do not introduce new behavior.
151
- - Adding types, interfaces, or a constant in order to replace magic values is perfectly fine during refactoring.
152
- - Provide the agent with helpful directions so that they do not get stuck when blocking them.