Sr. Content Developer at Microsoft, working remotely in PA, TechBash conference organizer, former Microsoft MVP, Husband, Dad and Geek.
152255 stories
·
33 followers

Enhancing Astro With a Markdown Component

1 Share

There are two ways to enhance Markdown in an Astro project:

  1. Through MDX
  2. Through a Markdown Component

This article focuses on the Markdown Component.

Why Use a Markdown Component

I use a Markdown Component for two main reasons:

  1. It reduces the amount of markup I need to write.
  2. It converts typographic symbols like ' to opening or closing quotes (' or ').

So, I can skip several HTML tags — like <p>, <strong>, <em>, <ul>, <ol>, <li>, and <a>. I can also skip heading tags if I don’t need to add classes to them.

<div class="card">
  <!-- prettier-ignore -->
  <Markdown>
    ## Card Title
    This is a paragraph with **strong** and *italic* text.
    This is the second paragraph with a [link](https://link-somewhere.com)

    - List
    - Of
    - Items
  </Markdown>
</div>

Notice the prettier-ignore comment? It tells prettier not to format the contents within the <Markdown> block so Prettier won’t mess up my Markdown content.

The HTML output will be as follows:

<div class="card">
  <h2> Card Title </h2>
  <p>This is a paragraph with <strong>strong</strong> and <em>italic</em> text.</p>
  <p>This is the second paragraph with a <a href="https://link-somewhere.com">link</a></p>

  <ul>
    <li> List </li>
    <li> Of </li>
    <li> Items </li>
  </ul>
</div>

Installing the Markdown Component

Fun Fact: Astro came with a <Markdown> component in its early release, but this <Markdown> component was migrated to a separate plugin in Version 1, and completely removed in version 3.

I was upset about it. But I decided to build a Markdown component for myself since I liked using one. You can the documentation here.

Using the Markdown component is simple: Just import and use it in the way I showed you above.

---
import { Markdown } from '@splendidlabz/astro'
---

<Markdown>
  ...
</Markdown>

Respects Indentation Automatically

You can write your Markdown naturally, as if you’re writing content normally. This Markdown component detects the indentation and outputs the correct values (without wrapping them in <pre> and <code> tags).

<div>
  <div>
    <!-- prettier-ignore -->
    <Markdown>
      This is a paragraph

      This is a second paragraph
    </Markdown>
  </div>
</div>

Here’s the output:

<div>
  <div>
    <p>This is a paragraph</p>
    <p>This is a second paragraph</p>
  </div>
</div>

Inline Option

There’s an inline option that tells the <Markdown> component not to generate paragraph tags.

<h2 class="max-w-[12em]">
  <Markdown inline> Ain't this cool? </Markdown>
</h2>

Here’s the output:

<h2 class="max-w-[12em]">
  Ain't this cool?
</h2>

Gotchas and Caveats

Prettier messes up the <!-- prettier-ignore --> block if you have unicode characters like emojis and em dashes anywhere before the block.

Here’s the original code:

<!-- prettier-ignore -->
<Markdown>
  Markdown block that contains Unicode characters 🤗
</Markdown>

<!-- prettier-ignore -->
<Markdown>
  Second Markdown block.
</Markdown>

Here’s what it looks like after saving:

<!-- prettier-ignore -->
<Markdown>
  Markdown block that contains unicode characters 🤗
</Markdown>

<!-- prettier-ignore -->
<Markdown>
  Second Markdown block.
</Markdown>

Unfortunately, we can’t do much about emojis because the issue stems from Prettier’s formatter.

But, we can use en and em dashes by writing -- and ---, respectively.

Content Workaround

You can prevent Prettier from breaking all those <!-- prettier-ignore --> comments by not using them!

To do this, you just put your content inside a content property. No need to worry about whitespace as well — that’s taken care of for you.

<Markdown content=`
  This is a paragraph

  This is another paragraph
`/>

Personally, I think it doesn’t look at nice as slot version above…

But it lets you use markdown directly with any JS or json content you load!

---
const content = `
  This is a paragraph

  This is another paragraph
`
---

<Markdown {content} />

Taking it Further

I’ve been building with Astro for 3+ years, and I kept running into the same friction points on content-heavy sites: blog pages, tag pages, pagination, and folder structures that get messy over time.

So I built Practical Astro: Content Systems — 7 ready-to-use solutions for Astro content workflows (MDX is just one of them). You get both the code and the thinking behind it.

If you want a cleaner, calmer content workflow, check it out.

I also write about Astro Patterns and Using Tailwind + CSS together on my blog. Come by and say hi!


Enhancing Astro With a Markdown Component originally handwritten and published with love on CSS-Tricks. You should really get the newsletter as well.

Read the whole story
alvinashcraft
just a second ago
reply
Pennsylvania, USA
Share this story
Delete

Roo Code pivots to cloud-based agent, says IDEs aren’t the future of coding

1 Share
A vintage computer with floppy disk depicting the old world order.

Roo Code, an open source AI coding tool built for VS Code, has announced that it’s shutting down its VS Code extension, Cloud, and Router services on May 15, as the team shifts away from IDE-based development toward autonomous agents that run tasks end-to-end outside the editor.

In tandem, the company also introduced Roomote, a cloud-based coding agent that runs tasks end-to-end across tools such as Slack, GitHub, and Linear, producing ready-to-review outputs for developers to inspect and refine.

Roomote in action
Roomote in action

Matt Rubens, Roo Code CEO and co-founder, writes in an X post this week that his own internal team was already moving away from using Roo Code inside the IDE, instead running it in remote cloud environments where agents could take on multiple tasks in parallel without direct oversight. These agents would open fixes, run the application, and verify their own output before handing off completed work for review.

At that point, much of the development work was happening outside the IDE, with engineers stepping in after the fact. And that effectively meant entire chunks of routine engineering work were being completed without direct involvement from developers.

“If the agent can create a good PR [pull request] from a single prompt, the interaction model changes completely – you let go of the IDE and focus on driving things end-to-end,” Rubens said. “The agent doesn’t just help engineers – it wipes entire types of work off their plate and delivers something nobody has to clean up.”

A fork in the road

Roo Code, for the uninitiated, emerged in late 2024 as a fork of Cline, an earlier open source AI coding agent. While many forks appeared off the back of Cline, Roo Code set itself apart in several ways, including features that gave agents more autonomy to act on a developer’s behalf.

That approach helped it gain traction quickly, building an active contributor base and reaching around 3 million installs. Roo Code also fed improvements back upstream, with Cline founder and CEO Saoud Rizwan writing on Reddit on Tuesday that it had “contributed to Cline more than anyone else” among the various forks.

“Since Cline went open source, we’ve seen countless forks — small startups to some of the largest enterprises,” Rizwan writes. “Some forks didn’t give us credit, some bought malicious ads in our Subreddit, but Roo was a good fork. They innovated, built an incredible community, and contributed to Cline more than anyone else.”

Roo Code’s trajectory also reflects how open source projects evolve through forks and shared contributions, with different teams building on the same base while competing for users. Its imminent shutdown has already prompted other projects to move in and capture that community.

Brian Turcotte, developer relations at open source coding agent Kilo Code, also writes in a blog post that the company plans to continue building in the same space, positioning its VS Code extension as an alternative for Roo Code users.

“Kilo started as a fork of Roo — we’ve been contributing back upstream since our inception, and a lot of what Kilo does well today started with the work Roo shipped first,” Turcotte wrote.

However, with the folks at Roo Code proclaiming that it “doesn’t believe IDEs are the future of coding,” Turcotte countered that view.

“The IDE is not over — far from it, actually.”

“The IDE is not over — far from it, actually,” he contends. “Every independent developer, every engineering team, every enterprise shipping production software still lives in an editor for most of their working hours. That’s not going away, and the quality of the agent sitting next to them in that environment matters enormously.”

Still, the idea that the IDE is becoming a second-class citizen isn’t exactly a novel concept, as developers spend less time writing code line by line and more time assigning and reviewing work produced by agents. In that model, the editor remains in use, but increasingly as a place to inspect and verify outputs while much of the work happens elsewhere.

This broader pattern is also reflected in recent product moves. Cursor’s latest release shifts its interface toward an agent management console, enabling developers to manage parallel tasks and long-running jobs across local and cloud environments.

Roomote control

Roo Code’s shutdown will be final come May 15, 2026, with any unused balances tied to its paid services refunded. Users relying on the extension are being directed toward alternatives such as Cline.

Rather than assisting developers step by step in an IDE, Roomote — currently on a waiting list — is designed to take a prompt and carry out tasks end-to-end, integrating with tools such as Slack, GitHub, and Linear to generate pull requests, fixes, and feature updates. It also runs the generated code and verifies the results before handing the work back for review.

Roomote
Roomote

It’s worth noting that Roo Code already offered cloud-based agents in the form of Roo Code Cloud that could operate across tools such as Slack, GitHub, and Linear, allowing teams to delegate tasks outside the editor. However, those capabilities were part of a broader product suite built around its extension and supporting services. Roomote replaces that with a standalone system where the agent itself becomes the main interface, removing the need to manage multiple tools and shifting more of the development process into a single, prompt-driven environment.

Roomote also continues to be one of Roo Code’s core selling points: a model-agnostic setup that allows the agent to switch between providers depending on the task. That mirrors a broader trend across an array of open source coding agents such as OpenCode, Cline, and Kilo Code, which sit above the model layer and offer greater flexibility in how developers access and use different models.

Roo Code’s transition comes as the tools and competition in the space have rapidly evolved, with new interfaces emerging, models improving, and rival projects iterating in parallel. Rubens said this made it clear the company was focusing on an approach that no longer aligned with where development was heading.

“We made the call [to sunset Roo Code] not because Roo Code failed, but because the world it served would cease to exist,” Rubens said. “We’re letting it go because we’re already all-in on what comes next.”

The post Roo Code pivots to cloud-based agent, says IDEs aren’t the future of coding appeared first on The New Stack.

Read the whole story
alvinashcraft
25 seconds ago
reply
Pennsylvania, USA
Share this story
Delete

Agents CLI in Agent Platform: create to production in one CLI

1 Share
Google Cloud has introduced the Agents CLI, a specialized tool designed to bridge the gap between local development and production-grade AI agent deployment. The CLI provides coding assistants with machine-readable access to the full Google Cloud stack, reducing context overload and token waste during the scaffolding process. By streamlining evaluation, infrastructure provisioning, and deployment into a single programmatic backbone, the tool enables developers to move from initial concept to a live service in hours rather than weeks.
Read the whole story
alvinashcraft
29 seconds ago
reply
Pennsylvania, USA
Share this story
Delete

Collaborative Editing as Progressive Enhancement

1 Share

We’re ramping up again to launch the Build Awesome (11ty) Kickstarter Final_FINAL_v2 on April 28, 2026 and in this post I make the case for a new web site builder can layer itself on top of your existing projects as a progressive enhancement. Infrastructure as progressive enhancement!

Read the whole story
alvinashcraft
36 seconds ago
reply
Pennsylvania, USA
Share this story
Delete

Securing Gemini Enterprise Agent Platform Runtime with Auth0 for AI Agents

1 Share
This comprehensive guide outlines the implementation of a secure framework for authentication and authorization in Gemini Enterprise Agent Platform Runtime.

Read the whole story
alvinashcraft
42 seconds ago
reply
Pennsylvania, USA
Share this story
Delete

How Apple's AI Strategy Changes with a New CEO

1 Share
From: AIDailyBrief
Views: 103

Apple's CEO transition makes AI strategy the defining test for a hardware-first Apple. OpenClaw's agentic shift and Mac-first tooling sparked a Mac mini renaissance and tied many cutting-edge AI features to Apple silicon. Google is forming a coding-and-agent strike team; Amazon is committing billions to Anthropic and compute capacity; Meta is pairing workforce reductions with large technician training programs.

The AI Daily Brief helps you understand the most important news and discussions in AI.
Subscribe to the podcast version of The AI Daily Brief wherever you listen: https://pod.link/1680633614
Get it ad free at http://patreon.com/aidailybrief
Learn more about the show https://aidailybrief.ai/

Read the whole story
alvinashcraft
53 seconds ago
reply
Pennsylvania, USA
Share this story
Delete
Next Page of Stories