Skip to content

feat: redesign homepage with code-forward developer experience#683

Open
ryanycoleman wants to merge 10 commits intostrands-agents:mainfrom
ryanycoleman:homepage_redo
Open

feat: redesign homepage with code-forward developer experience#683
ryanycoleman wants to merge 10 commits intostrands-agents:mainfrom
ryanycoleman:homepage_redo

Conversation

@ryanycoleman
Copy link
Member

@ryanycoleman ryanycoleman commented Mar 18, 2026

Big change to the homepage.

  • Split hero with headline + code snippet, copyable pip install
  • Steering section: problem/solution narrative with verified code and 100% accuracy stat from the steering blog post
  • Model-driven section with research agent example
  • 6 feature cards with code snippets verified against SDK docs
  • Copy button on all code blocks, dark/light theme-aware highlighting
  • Animated background curves with reduced opacity for legibility

Checklist

  • I have read the CONTRIBUTING document
  • My changes follow the project's documentation style
  • I have tested the documentation locally using npm run dev
  • Links in the documentation are valid and working

By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.

- Split hero with headline + code snippet, copyable pip install
- Steering section: problem/solution narrative with verified code
  and 100% accuracy stat from the steering blog post
- Model-driven section with research agent example
- 6 feature cards with code snippets verified against SDK docs
- Copy button on all code blocks, dark/light theme-aware highlighting
- Animated background curves with reduced opacity for legibility
@github-actions
Copy link
Contributor

Review Summary

Assessment: Comment (Approve with suggestions)

This is a well-executed homepage redesign with clean component architecture, comprehensive theme support, and strong accessibility practices. The code-forward approach effectively showcases the SDK's simplicity.

Review Categories
  • Code Quality: Clean component separation, good use of Astro's built-in Code component, proper CSS scoping with :global() where needed
  • Accessibility: Good ARIA labels on interactive elements (copy buttons, slider dots)
  • Theme Support: Thorough light/dark mode handling with CSS selectors on [data-theme]
  • Responsive Design: Comprehensive media queries for mobile breakpoints
  • Minor Issues: A few suggestions for link handling, code example completeness, and content that may become stale

The inline comments are suggestions to improve the PR, none are blocking. Nice work on this redesign! 🎉

@github-actions
Copy link
Contributor

github-actions bot commented Mar 18, 2026

Documentation Preview Ready

Your documentation preview has been successfully deployed!

Preview URL: https://d3ehv1nix5p99z.cloudfront.net/pr-cms-683/docs/user-guide/quickstart/overview/

Updated at: 2026-03-23T21:15:51.714Z

@github-actions
Copy link
Contributor

Follow-up Review

Thanks for the responsive layout fix! The new Header.astro changes look good — the narrower padding and font size for the 50-68.75rem breakpoint should help with navigation on smaller desktop screens.

Previous feedback status: The 4 inline suggestions from my earlier review are still open. They're all non-blocking recommendations, so feel free to address them or leave them as-is based on your judgment.

@github-actions
Copy link
Contributor

Follow-up Review (3rd pass)

Nice addition with the npm install widget! 🎉 This nicely demonstrates the multi-language support (Python + TypeScript) right in the hero section.

New changes look good:

  • hero-install-group wrapper with flexbox layout handles both widgets well
  • Script correctly updated to use querySelectorAll for multiple install widgets
  • Package name @strands-agents/sdk verified correct against existing documentation

Previous feedback status: 4 inline suggestions remain open - all non-blocking.

import CodeBlock from './CodeBlock.astro'

const features = [
{
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nit - I'd prefer to see this as content (like authors.yaml) to keep components separate from the data/content

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LMK what you think of the new approach. I'm not sure we gain much but it's separate now.

</p>
<div class="features-grid">
{features.map((feature) => (
<div class="feature-card">
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The gaps here are a little off:

Image

Maybe aligning the code to the top would be better here? But the blank space between the text and the code seems odd

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

good eye. still not perfect but the latest commit makes this a lot better.

<div class="code-block" data-code={code}>
<div class="code-header">
{filename && <span class="code-filename">{filename}</span>}
<button class="copy-button" aria-label="Copy code">
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ideally we'd use the Code snippet from starlight, as noted here: https://starlight.astro.build/components/code/

That would allow us to get rid of most of this scaffolding I think. However, it looks like this config option is what prevents us from importing it, so if we found a way around that, it'd be a less code-heavy option

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yeah, that config option is blocking.

Beyond the config issue, the custom CodeBlock gives us control over the landing page aesthetic that Starlight's Code component wouldn't (e.g. the traffic-light dots, glass-morphism card styling, theme-aware copy button).

Open to revisiting in the future when we change up styling across the board?

@github-actions
Copy link
Contributor

Follow-up Review (4th pass)

Great work addressing all the feedback! 🎉

My Original Suggestions - All Resolved ✅

Issue Resolution
Blog link hardcoded Now uses pathWithBase()
Missing Path import Added to code example
"Python Function" title Changed to "Tools from Any Function"
Static GitHub stars Dynamic fetch via src/util/github.ts

New Additions Look Good

  • src/util/github.ts: Nice implementation combining star counts from both SDK repos with proper error handling and fallback
  • src/data/feature-cards.ts: Clean data separation from component (addresses @zastrowm's feedback)
  • CodeBlock floating copy button: Good solution for the blank header issue when no filename

Assessment: Ready to merge from my perspective. The remaining open comment from @zastrowm about feature card gaps/alignment is the only outstanding item.

@ryanycoleman ryanycoleman marked this pull request as ready for review March 20, 2026 22:33
@ryanycoleman ryanycoleman requested a review from zastrowm March 20, 2026 22:33
@github-actions
Copy link
Contributor

Review Status Update

No new commits since my last review. Current status:

Reviewer Status
My feedback ✅ All 4 suggestions resolved
@zastrowm's feedback 3 threads open with author responses

The PR looks good from my perspective. The remaining discussion between @ryanycoleman and @zastrowm on styling preferences (feature card gaps, data separation approach) can be resolved between them.

@github-actions
Copy link
Contributor

Follow-up Review (6th pass)

New commit: content: revise homepage messaging for developer focus

Messaging improvements look great! The changes make the value proposition clearer and more developer-focused:

Section Change
Hero tagline "Not orchestration graphs" → "Just write code"
Hero subtitle More direct: "No workflow DSLs. No graph definitions. No YAML pipelines..."
ModelDriven heading "Your model is smarter than your workflow" → "Write code, not pipelines"
Feature cards Added helpful inline comments (e.g., # Swap providers in one line)

Content-only changes, no technical issues. The messaging is now more concise and direct. 👍

@github-actions
Copy link
Contributor

Follow-up Review (7th pass)

New commit: content: hero headline 'Build AI agents you can actually steer'

Great messaging pivot! Leaning into "steering" as the key differentiator makes sense given it's a unique capability.

Changes Look Good

Section Update
Hero "Build AI agents you can actually steer" + concise subtitle
Steering problem "Your agent ignored your instructions again" (relatable!)
Steering solution "Middleware for the agent loop" (great analogy)
Code example Practical NoPricingLeaks handler preventing data leakage

One Item to Verify

The new steering code example shows a custom SteeringHandler base class:

from strands.vended_plugins.steering import (
    SteeringHandler, ToolSteeringAction,
)

class NoPricingLeaks(SteeringHandler):
    async def steer_before_tool(self, *, agent, tool_use, **kwargs):

The existing docs show LLMSteeringHandler being used directly. Could you confirm this custom handler pattern is documented/supported? If so, it might be worth linking to the relevant docs page for users who want to learn more.

@github-actions
Copy link
Contributor

Follow-up Review (8th pass)

New commit: content: bridge annotation uses 'recovery' not 'guardrails'

Minor wording refinement in ModelDrivenSection:

"When it makes a mistake, a plugin handles recovery."

Good change - "recovery" better describes what steering plugins do and creates a nice narrative bridge to the steering section that follows. 👍

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants