Skip to content

Commit 3982397

Browse files
ofriwclaude
andcommitted
Add PlanningStrategyComparison visual component for lesson 3
🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
1 parent b9d6302 commit 3982397

File tree

3 files changed

+440
-0
lines changed

3 files changed

+440
-0
lines changed

website/docs/methodology/lesson-3-high-level-methodology.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ title: 'Four-Phase Workflow'
55
---
66

77
import WorkflowCircle from '@site/src/components/VisualElements/WorkflowCircle';
8+
import PlanningStrategyComparison from '@site/src/components/VisualElements/PlanningStrategyComparison';
89

910
The hardest part of working with AI agents isn't learning new tools or writing better prompts. It's letting go.
1011

@@ -78,6 +79,8 @@ For domain knowledge, ArguSeek pulls information from Google directly and effici
7879

7980
With research complete, you now plan the change. Planning isn't a single approach—it's a strategic choice based on whether you know the solution or need to discover it.
8081

82+
<PlanningStrategyComparison />
83+
8184
**Exploration Planning:** Use this when the solution space is unclear or you need to discover the best approach. Rather than dictating a solution, frame the problem space and steer the agent to research your codebase patterns (via ChunkHound) and domain knowledge (via ArguSeek), explore alternatives, and iterate with you through reasoning-action cycles. You're discovering the approach together.
8285

8386
This approach has higher cost and time investment, but it discovers better solutions, catches architectural issues early, and helps you build a clearer mental model before committing to implementation.
Lines changed: 258 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,258 @@
1+
.container {
2+
margin: 2rem auto;
3+
padding: 1.5rem;
4+
border-radius: 8px;
5+
background: var(--visual-bg-decision);
6+
border: 1px solid var(--visual-decision);
7+
max-width: 800px;
8+
animation: fadeIn 0.6s ease-in-out;
9+
}
10+
11+
.container.compact {
12+
margin: 6rem auto;
13+
padding: 1rem;
14+
max-width: 700px;
15+
}
16+
17+
@keyframes fadeIn {
18+
from {
19+
opacity: 0;
20+
transform: translateY(10px);
21+
}
22+
to {
23+
opacity: 1;
24+
transform: translateY(0);
25+
}
26+
}
27+
28+
.svg {
29+
width: 100%;
30+
height: auto;
31+
display: block;
32+
margin: 0 auto;
33+
overflow: visible;
34+
}
35+
36+
/* Titles */
37+
.title {
38+
fill: var(--ifm-font-color-base);
39+
font-size: 20px;
40+
font-weight: 700;
41+
font-family: var(--ifm-font-family-base);
42+
letter-spacing: 1px;
43+
text-transform: uppercase;
44+
}
45+
46+
/* Labels (Start/Goal) */
47+
.label {
48+
fill: var(--ifm-color-emphasis-700);
49+
font-size: 15px;
50+
font-weight: 600;
51+
font-family: var(--ifm-font-family-base);
52+
text-transform: uppercase;
53+
letter-spacing: 0.5px;
54+
}
55+
56+
/* Context labels */
57+
.contextLabel {
58+
fill: var(--ifm-font-color-base);
59+
font-size: 14px;
60+
font-weight: 600;
61+
font-family: var(--ifm-font-family-base);
62+
}
63+
64+
/* Trade-off labels */
65+
.tradeoffLabel {
66+
fill: var(--ifm-color-emphasis-600);
67+
font-size: 11px;
68+
font-family: var(--ifm-font-family-base);
69+
font-style: italic;
70+
}
71+
72+
/* ===== EXPLORATION SIDE (LEFT) ===== */
73+
74+
.explorationGroup {
75+
animation: slideInLeft 0.5s ease-in-out backwards;
76+
}
77+
78+
@keyframes slideInLeft {
79+
from {
80+
opacity: 0;
81+
transform: translateX(-20px);
82+
}
83+
to {
84+
opacity: 1;
85+
transform: translateX(0);
86+
}
87+
}
88+
89+
.explorationNode {
90+
fill: var(--ifm-background-surface-color);
91+
stroke: var(--visual-workflow);
92+
stroke-width: 2;
93+
}
94+
95+
.explorationNodeEnd {
96+
fill: var(--visual-workflow);
97+
stroke: var(--visual-workflow);
98+
stroke-width: 2;
99+
}
100+
101+
.explorationPath {
102+
stroke: var(--visual-workflow);
103+
stroke-width: 2;
104+
fill: none;
105+
stroke-linecap: round;
106+
opacity: 0.8;
107+
}
108+
109+
.arrowMarkerExploration polygon {
110+
fill: var(--visual-workflow);
111+
opacity: 0.8;
112+
}
113+
114+
/* ===== EXACT SIDE (RIGHT) ===== */
115+
116+
.exactGroup {
117+
animation: slideInRight 0.5s ease-in-out 0.1s backwards;
118+
}
119+
120+
@keyframes slideInRight {
121+
from {
122+
opacity: 0;
123+
transform: translateX(20px);
124+
}
125+
to {
126+
opacity: 1;
127+
transform: translateX(0);
128+
}
129+
}
130+
131+
.exactNode {
132+
fill: var(--ifm-background-surface-color);
133+
stroke: var(--visual-capability);
134+
stroke-width: 2.5;
135+
}
136+
137+
.exactNodeEnd {
138+
fill: var(--visual-capability);
139+
stroke: var(--visual-capability);
140+
stroke-width: 2.5;
141+
}
142+
143+
.exactPath {
144+
stroke: var(--visual-capability);
145+
stroke-width: 3;
146+
fill: none;
147+
stroke-linecap: round;
148+
}
149+
150+
.exactPathMarker {
151+
fill: var(--visual-capability);
152+
opacity: 0.4;
153+
}
154+
155+
.arrowMarkerExact polygon {
156+
fill: var(--visual-capability);
157+
}
158+
159+
/* ===== CENTER DIVIDER ===== */
160+
161+
.dividerLine {
162+
stroke: var(--ifm-color-emphasis-300);
163+
stroke-width: 1;
164+
stroke-dasharray: 4, 4;
165+
opacity: 0.5;
166+
}
167+
168+
.dividerText {
169+
fill: var(--ifm-color-emphasis-600);
170+
font-size: 11px;
171+
font-weight: 500;
172+
font-family: var(--ifm-font-family-base);
173+
font-style: italic;
174+
letter-spacing: 0.3px;
175+
}
176+
177+
/* Description text */
178+
.description {
179+
margin: 1.5rem 0 0 0;
180+
font-size: 0.95rem;
181+
line-height: 1.6;
182+
color: var(--ifm-color-emphasis-700);
183+
text-align: center;
184+
padding: 0 1rem;
185+
border-top: 1px solid var(--ifm-color-emphasis-300);
186+
padding-top: 1rem;
187+
}
188+
189+
/* Responsive adjustments */
190+
@media (max-width: 768px) {
191+
.container {
192+
padding: 1rem;
193+
}
194+
195+
.title {
196+
font-size: 18px;
197+
}
198+
199+
.label {
200+
font-size: 13px;
201+
}
202+
203+
.contextLabel {
204+
font-size: 13px;
205+
}
206+
207+
.tradeoffLabel {
208+
font-size: 10px;
209+
}
210+
211+
.dividerText {
212+
font-size: 10px;
213+
}
214+
215+
.description {
216+
font-size: 0.85rem;
217+
padding: 0 0.5rem;
218+
padding-top: 0.75rem;
219+
}
220+
}
221+
222+
@media (max-width: 480px) {
223+
.title {
224+
font-size: 16px;
225+
letter-spacing: 0.5px;
226+
}
227+
228+
.label {
229+
font-size: 12px;
230+
}
231+
232+
.contextLabel {
233+
font-size: 12px;
234+
}
235+
236+
.tradeoffLabel {
237+
font-size: 9px;
238+
}
239+
240+
.explorationPath,
241+
.exactPath {
242+
stroke-width: 1.5;
243+
}
244+
245+
.explorationNode,
246+
.exactNode {
247+
stroke-width: 1.5;
248+
}
249+
}
250+
251+
/* Reduced motion for accessibility */
252+
@media (prefers-reduced-motion: reduce) {
253+
.container,
254+
.explorationGroup,
255+
.exactGroup {
256+
animation: none;
257+
}
258+
}

0 commit comments

Comments
 (0)