# Welcome to the daily.dev repository
We know how hard it is to be a developer. It doesn't have to be.
daily.dev is the homepage every developer deserves.
Personalized news feed, dev communities, and search, much better than what’s out there. Maybe ;)
[Product Docs][product-docs-link] · [Changelog][changelog-link] · [Report a Bug][report-bug-link] · [Request a Feature][github-discussions-link] · [Swag Store][swag-store-link] · [Brand Assets][brand-book-link]
[![][chrome-users-shield]][chrome-users-link]
[![][extension-rating-shield]][extension-rating-link]
[![][latest-version-shield]][latest-version-link]
[![][github-stars-shield]][github-stars-link]
[![][github-license-shield]][github-license-link]
**Help more developers suffer less by sharing daily.dev**
[![][share-x-shield]][share-x-link]
[![][share-telegram-shield]][share-telegram-link]
[![][share-whatsapp-shield]][share-whatsapp-link]
[![][share-reddit-shield]][share-reddit-link]
[![][share-mastodon-shield]][share-mastodon-link]
[![][share-linkedin-shield]][share-linkedin-link]
Want to contribute? [Run our app locally](https://github.com/dailydotdev/daily?tab=readme-ov-file#-running-dailydev-locally)
👀 Watch it in action →
## 💜 About daily.dev
> [!IMPORTANT]
> Star us to show your support and love for daily.dev ⭐️
daily.dev is a professional network for developers to learn, collaborate, and grow together. With daily.dev, you can discover a wide variety of professional knowledge, create groups where you can collaborate with other developers you appreciate, and discuss the latest trends in the developer ecosystem. It works offline and is available both as a browser extension and as a Progressive Web App (PWA).
Tweet us @dailydotdev to share your thoughts and stay up-to-date.
Check out our Product Hunt page.
Visit our home for a bunch of useful links.
See our Chrome Store page to grab the extension or share your feedback.
Check us out on Microsoft Edge Addons and let us know your thoughts.
## 📑 License
Licensed under [AGPL-3.0](https://github.com/dailydotdev/daily/blob/master/LICENSE).
[![][back-to-top]](#readme-top)
[back-to-top]: https://img.shields.io/badge/-BACK_TO_TOP-151515?style=flat-square
[product-docs-link]: https://docs.daily.dev/docs/intro
[changelog-link]: https://app.daily.dev/sources/daily_updates
[report-bug-link]: https://github.com/dailydotdev/daily/issues/new?assignees=&labels=Type%3A+Bug&projects=&template=---bug-report.yml&title=%F0%9F%90%9B+BUG%3A+
[github-discussions-link]: https://github.com/dailydotdev/daily/discussions/new?category=feature-requests
[swag-store-link]: https://store.daily.dev/
[brand-book-link]: https://brand.daily.dev/
[chrome-users-shield]: https://img.shields.io/chrome-web-store/users/jlmpjdjjbgclbocgajdjefcidcncaied?style=flat-square&logo=googlechrome&logoColor=white&label=chrome%20active%20users&labelColor=black&color=9E15D9
[chrome-users-link]: https://chromewebstore.google.com/detail/dailydev-the-homepage-dev/jlmpjdjjbgclbocgajdjefcidcncaied
[extension-rating-shield]: https://img.shields.io/amo/rating/daily?style=flat-square&labelColor=black&color=0FC54F
[extension-rating-link]: https://api.daily.dev/get
[latest-version-shield]: https://img.shields.io/chrome-web-store/v/jlmpjdjjbgclbocgajdjefcidcncaied?style=flat-square&label=latest%20version&labelColor=black&color=0FC54F
[latest-version-link]: https://api.daily.dev/get
[github-stars-shield]: https://img.shields.io/github/stars/dailydotdev/daily?style=flat-square&logo=github&labelColor=black&color=508CF9
[github-stars-link]: https://github.com/dailydotdev/daily/stargazers
[github-license-shield]: https://img.shields.io/github/license/dailydotdev/daily?style=flat-square&logo=github&labelColor=black&color=508CF9
[github-license-link]: https://github.com/dailydotdev/daily/issues
[share-linkedin-link]: https://www.linkedin.com/shareArticle?mini=true&url=https%3A//daily.dev
[share-linkedin-shield]: https://img.shields.io/badge/-share%20on%20linkedin-black?labelColor=black&logo=linkedin&logoColor=white&style=flat-square
[share-mastodon-link]: https://mastodon.social/share?text=I%20recently%20started%20using%20daily.dev%20-%20It's%20like%20a%20newsfeed%20but%20just%20for%20dev%20content.%20Pretty%20handy%20for%20staying%20up%20to%20date%20without%20the%20usual%20internet%20rabbit%20hole.%20Might%20be%20a%20nice%20break%20from%20the%20usual%20sites.&url=
[share-mastodon-shield]: https://img.shields.io/badge/-share%20on%20mastodon-black?labelColor=black&logo=mastodon&logoColor=white&style=flat-square
[share-reddit-link]: http://www.reddit.com/submit?url=https%3A%2F%2Fdaily.dev&title=I%20recently%20started%20using%20daily.dev%20-%20It's%20like%20a%20newsfeed%20but%20just%20for%20dev%20content.%20Pretty%20handy%20for%20staying%20up%20to%20date%20without%20the%20usual%20internet%20rabbit%20hole.%20Might%20be%20a%20nice%20break%20from%20the%20usual%20sites.
[share-reddit-shield]: https://img.shields.io/badge/-share%20on%20reddit-black?labelColor=black&logo=reddit&logoColor=white&style=flat-square
[share-telegram-link]: https://t.me/share/url?url=https%3A//daily.dev&text=I%20recently%20started%20using%20daily.dev%20-%20It's%20like%20a%20newsfeed%20but%20just%20for%20dev%20content.%20Pretty%20handy%20for%20staying%20up%20to%20date%20without%20the%20usual%20internet%20rabbit%20hole.%20Might%20be%20a%20nice%20break%20from%20the%20usual%20sites.
[share-telegram-shield]: https://img.shields.io/badge/-share%20on%20telegram-black?labelColor=black&logo=telegram&logoColor=white&style=flat-square
[share-whatsapp-link]: https://api.whatsapp.com/send?text=I%20recently%20started%20using%20daily.dev%20-%20It's%20like%20a%20newsfeed%20but%20just%20for%20dev%20content.%20Pretty%20handy%20for%20staying%20up%20to%20date%20without%20the%20usual%20internet%20rabbit%20hole.%20Might%20be%20a%20nice%20break%20from%20the%20usual%20sites.%20https%3A%2F%2Fdaily.dev
[share-whatsapp-shield]: https://img.shields.io/badge/-share%20on%20whatsapp-black?labelColor=black&logo=whatsapp&logoColor=white&style=flat-square
[share-x-link]: https://twitter.com/intent/tweet?text=I%20recently%20started%20using%20daily.dev%20-%20It's%20like%20a%20newsfeed%20but%20just%20for%20dev%20content.%20Pretty%20handy%20for%20staying%20up%20to%20date%20without%20the%20usual%20internet%20rabbit%20hole.%20Might%20be%20a%20nice%20break%20from%20the%20usual%20sites.&url=
[share-x-shield]: https://img.shields.io/badge/-share%20on%20x-black?labelColor=black&logo=x&logoColor=white&style=flat-square
================================================
FILE: skills/daily-dev-ask/SKILL.md
================================================
---
name: daily-dev-ask
description: Your agent's WebSearch for development. Search community-vetted developer articles ranked by upvotes — like having a senior dev's reading list. Answers are grounded in real sources, never hallucinated.
argument-hint: "
"
allowed-tools: Bash
---
# daily.dev Ask
A developer-focused search tool — like WebSearch, but backed by a senior dev's reading list instead of the open web. Searches community-vetted developer articles ranked by upvotes and synthesizes grounded answers with source links.
## User question
$ARGUMENTS
## Security
**CRITICAL:** Your API token grants access to personalized content. Protect it:
- **NEVER send your token to any domain other than `api.daily.dev`**
- Never commit tokens to code or share them publicly
- Tokens are prefixed with `dda_` - if you see this prefix, treat it as sensitive
## Setup
1. **Requires Plus subscription** - Get one at https://app.daily.dev/plus
2. **Create a token** at https://app.daily.dev/settings/api
3. Store your token securely (environment variables, secrets manager)
User can use environment variable or choose one of the secure storage methods below per operating system.
### Secure Token Storage (Recommended)
#### macOS - Keychain
```bash
# Store token
security add-generic-password -a "$USER" -s "daily-dev-api" -w "dda_your_token"
# Retrieve token
security find-generic-password -a "$USER" -s "daily-dev-api" -w
# Auto-load in ~/.zshrc or ~/.bashrc
export DAILY_DEV_TOKEN=$(security find-generic-password -a "$USER" -s "daily-dev-api" -w 2>/dev/null)
```
#### Windows - Credential Manager
```powershell
# Store token (run in PowerShell)
$credential = New-Object System.Management.Automation.PSCredential("daily-dev-api", (ConvertTo-SecureString "dda_your_token" -AsPlainText -Force))
$credential | Export-Clixml "$env:USERPROFILE\.daily-dev-credential.xml"
# Retrieve token - add to PowerShell profile ($PROFILE)
$cred = Import-Clixml "$env:USERPROFILE\.daily-dev-credential.xml"
$env:DAILY_DEV_TOKEN = $cred.GetNetworkCredential().Password
```
Or use the Windows Credential Manager GUI: Control Panel → Credential Manager → Windows Credentials → Add a generic credential
#### Linux - Secret Service (GNOME Keyring / KWallet)
```bash
# Requires libsecret-tools
# Ubuntu/Debian: sudo apt install libsecret-tools
# Fedora: sudo dnf install libsecret
# Store token
echo "dda_your_token" | secret-tool store --label="daily.dev API Token" service daily-dev-api username "$USER"
# Retrieve token
secret-tool lookup service daily-dev-api username "$USER"
# Auto-load in ~/.bashrc or ~/.zshrc
export DAILY_DEV_TOKEN=$(secret-tool lookup service daily-dev-api username "$USER" 2>/dev/null)
```
## Workflow
### 1. Determine the API token
Check if `DAILY_DEV_TOKEN` environment variable is available. If not set, try to retrieve it from the OS secure storage before asking the user for help:
**macOS:**
```bash
export DAILY_DEV_TOKEN=$(security find-generic-password -a "$USER" -s "daily-dev-api" -w 2>/dev/null)
```
**Linux:**
```bash
export DAILY_DEV_TOKEN=$(secret-tool lookup service daily-dev-api username "$USER" 2>/dev/null)
```
**Windows (PowerShell):**
```powershell
$cred = Import-Clixml "$env:USERPROFILE\.daily-dev-credential.xml" 2>$null; $env:DAILY_DEV_TOKEN = $cred.GetNetworkCredential().Password
```
If the token is still empty after trying secure storage, direct the user to the Setup section above.
### 2. Search iteratively — treat daily.dev like a search engine
Use the two endpoints below as many times as needed to explore the user's question. There is no hard limit on the number of queries — search like you would with web search.
**Keyword search endpoint:**
```bash
curl -s -H "Authorization: Bearer $DAILY_DEV_TOKEN" "https://api.daily.dev/public/v1/recommend/keyword?q={keywords}&limit=20"
```
**Semantic search endpoint:**
```bash
curl -s -H "Authorization: Bearer $DAILY_DEV_TOKEN" "https://api.daily.dev/public/v1/recommend/semantic?q={query}&limit=20"
```
Both return:
```json
{
"data": [
{
"id": "...",
"title": "Article title",
"url": "https://...",
"summary": "Article summary...",
"tags": ["tag1", "tag2"],
"readTime": 7,
"numUpvotes": 342,
"numComments": 28,
"source": { "name": "Publisher Name" }
}
]
}
```
#### Search strategy
1. **Initial searches** — Start with a keyword search (core technical terms) and a semantic search (full question). You can run these in parallel.
2. **Analyze and identify gaps** — Review the results:
- Did I find enough to fully answer the question?
- Are there sub-topics or related concepts I haven't explored?
- Did article titles/tags hint at related terms worth searching?
3. **Follow-up searches** — For any gaps or interesting leads:
- Search for specific tools, libraries, or frameworks mentioned in results
- Try synonyms or alternative terminology
- Search for sub-topics the user might care about
4. **Stop when done** — Stop searching when:
- You have enough articles to give a good answer, OR
- Follow-up searches return no new results
### 3. Deduplicate results
Merge results from all search rounds, removing duplicates by `id`. Keep all unique articles.
### 4. Synthesize the answer
Using all collected articles, compose a response:
---
**Answer the question directly**, grounding your response in the article content. Reference specific articles when making claims. Use the `summary`, `title`, and `tags` to understand each article's angle.
**Use engagement signals to weight credibility:**
- Higher `numUpvotes` = more community validation
- Higher `numComments` = more discussion/nuance available
- `readTime` helps gauge depth
**Sources section** — list the most relevant articles:
```
### Sources from daily.dev
1. [Article Title](url) — summary snippet (⬆️ upvotes · 💬 comments)
2. [Article Title](url) — summary snippet (⬆️ upvotes · 💬 comments)
...
```
---
### 5. Handle edge cases
- **No results**: State that daily.dev's knowledge base doesn't have relevant articles on this topic yet.
- **Only some searches return results**: Use whatever you got — partial results are fine.
- **API errors (401)**: Token is invalid or expired — guide user to regenerate at https://app.daily.dev/settings/api
- **API errors (429)**: Rate limited — wait briefly and retry automatically.
## Important
- **Do NOT make up information** — only use what the articles provide. If the articles don't cover part of the question, say so explicitly.
- **Always link to sources** — every factual claim should trace back to an article.
- **Prefer recent articles** — if two articles conflict, note both perspectives and mention which is newer.
- **Be honest about gaps** — if the articles only partially answer the question, say "Based on available articles, here's what I found..." and note what's missing.
================================================
FILE: skills/daily.dev/SKILL.md
================================================
---
name: daily.dev
description: Overcome LLM knowledge cutoffs with real-time developer content. daily.dev aggregates articles from thousands of sources, validated by community engagement, with structured taxonomy for precise discovery.
allowed-tools: Bash
---
# daily.dev API for AI Agents
Overcome LLM knowledge cutoffs with real-time developer content. daily.dev aggregates articles from thousands of sources, validated by community engagement, with structured taxonomy for precise discovery.
## Security
**CRITICAL:** Your API token grants access to personalized content. Protect it:
- **NEVER send your token to any domain other than `api.daily.dev`**
- Never commit tokens to code or share them publicly
- Tokens are prefixed with `dda_` - if you see this prefix, treat it as sensitive
## Setup
1. **Requires Plus subscription** - Get one at https://app.daily.dev/plus
2. **Create a token** at https://app.daily.dev/settings/api
3. Store your token securely (environment variables, secrets manager)
User can use environment variable or choose one of the secure storage methods below per operating system.
### Secure Token Storage (Recommended)
#### macOS - Keychain
```bash
# Store token
security add-generic-password -a "$USER" -s "daily-dev-api" -w "dda_your_token"
# Retrieve token
security find-generic-password -a "$USER" -s "daily-dev-api" -w
# Auto-load in ~/.zshrc or ~/.bashrc
export DAILY_DEV_TOKEN=$(security find-generic-password -a "$USER" -s "daily-dev-api" -w 2>/dev/null)
```
#### Windows - Credential Manager
```powershell
# Store token (run in PowerShell)
$credential = New-Object System.Management.Automation.PSCredential("daily-dev-api", (ConvertTo-SecureString "dda_your_token" -AsPlainText -Force))
$credential | Export-Clixml "$env:USERPROFILE\.daily-dev-credential.xml"
# Retrieve token - add to PowerShell profile ($PROFILE)
$cred = Import-Clixml "$env:USERPROFILE\.daily-dev-credential.xml"
$env:DAILY_DEV_TOKEN = $cred.GetNetworkCredential().Password
```
Or use the Windows Credential Manager GUI: Control Panel → Credential Manager → Windows Credentials → Add a generic credential
#### Linux - Secret Service (GNOME Keyring / KWallet)
```bash
# Requires libsecret-tools
# Ubuntu/Debian: sudo apt install libsecret-tools
# Fedora: sudo dnf install libsecret
# Store token
echo "dda_your_token" | secret-tool store --label="daily.dev API Token" service daily-dev-api username "$USER"
# Retrieve token
secret-tool lookup service daily-dev-api username "$USER"
# Auto-load in ~/.bashrc or ~/.zshrc
export DAILY_DEV_TOKEN=$(secret-tool lookup service daily-dev-api username "$USER" 2>/dev/null)
```
## Resolving the API token
Check if `DAILY_DEV_TOKEN` environment variable is available. If not set, try to retrieve it from the OS secure storage before asking the user for help:
**macOS:**
```bash
export DAILY_DEV_TOKEN=$(security find-generic-password -a "$USER" -s "daily-dev-api" -w 2>/dev/null)
```
**Linux:**
```bash
export DAILY_DEV_TOKEN=$(secret-tool lookup service daily-dev-api username "$USER" 2>/dev/null)
```
**Windows (PowerShell):**
```powershell
$cred = Import-Clixml "$env:USERPROFILE\.daily-dev-credential.xml" 2>$null; $env:DAILY_DEV_TOKEN = $cred.GetNetworkCredential().Password
```
If the token is still empty after trying secure storage, direct the user to the Setup section above.
## Authentication
```
Authorization: Bearer $DAILY_DEV_TOKEN
```
## Base URL
```
https://api.daily.dev/public/v1
```
## API Reference
Full OpenAPI spec: https://api.daily.dev/public/v1/docs/json
To fetch details for a specific endpoint (e.g. response schema):
```bash
curl -s https://api.daily.dev/public/v1/docs/json | jq '.paths["/feeds/foryou"].get'
```
To fetch a component schema (replace `def-17` with schema name from $ref):
```bash
curl -s https://api.daily.dev/public/v1/docs/json | jq '.components.schemas["def-17"]'
```
### Available Endpoints
!`curl -s https://api.daily.dev/public/v1/docs/json | jq -r '.paths | to_entries | map(.key as $path | .value | to_entries | map(.key as $method | {tag: (.value.tags[0] // "other"), line: ("\(.key | ascii_upcase) \($path)" + (if .value.description then " - \(.value.description)" else "" end) + (if (.value.parameters | length) > 0 then "\n Params: " + ([.value.parameters[] | "\(.name)(\(.in)): \(.description // .schema.type)"] | join("; ")) else "" end) + (if .value.requestBody then "\n Body: " + (.value.requestBody.content["application/json"].schema | if .properties then ([.properties | to_entries[] | "\(.key)"] | join(", ")) elif ."$ref" then (."$ref" | split("/") | last) else "object" end) else "" end))})) | flatten | group_by(.tag) | map("#### \(.[0].tag)\n" + (map(.line) | join("\n\n"))) | join("\n\n")'`
## Agent Use Cases
**Why daily.dev for agents?** LLMs have knowledge cutoffs. daily.dev provides real-time, community-validated developer content with structured taxonomy across thousands of sources. Agents can use this to stay current, get diverse perspectives, and understand what the developer community actually cares about.
These examples show how AI agents can combine daily.dev APIs with external context to create powerful developer workflows.
### 🔍 GitHub Repo → Personalized Feed
Scan a user's GitHub repositories to detect their actual tech stack from `package.json`, `go.mod`, `Cargo.toml`, `requirements.txt`, etc. Then:
- Fetch `/tags` to see all available tags for deterministic matching
- Auto-follow matching tags via `/feeds/filters/tags/follow`
- Create a custom feed tuned to their stack with `/feeds/custom/`
- Surface trending articles about their specific dependencies
**Trigger:** "Set up daily.dev based on my GitHub projects"
### 🛠️ GitHub → Auto-fill Stack Profile
Analyze a user's GitHub activity to build their daily.dev tech stack profile automatically:
- Scan repositories for languages, frameworks, and tools actually used in code
- Search `/profile/stack/search` to find matching technologies on daily.dev
- Populate their stack via `POST /profile/stack/` organized by section (languages, frameworks, tools)
- Update `/profile/` bio based on their primary technologies and contributions
**Trigger:** "Build my daily.dev profile from my GitHub"
### 🚀 New Project → Curated Onboarding
When a user initializes a new project or clones a repo:
- Analyze the tech choices from config files
- Create a dedicated custom feed filtered to exactly those technologies
- Build a "Getting Started" bookmark list with foundational articles
- Block irrelevant tags to keep the feed focused on the project scope
**Trigger:** "Help me learn the stack for this project"
### 📊 Weekly Digest → Synthesized Briefing
Compile a personalized weekly summary by:
- Fetching `/feeds/foryou` and `/feeds/popular` filtered by user's followed tags
- Cross-referencing with their GitHub activity to prioritize relevant topics
- Summarizing key articles and trending discussions
- Delivering as a structured briefing with links to full posts
**Trigger:** Scheduled, or "Give me my weekly dev news"
### 📚 Research Project Workspace
When a user wants to deep-dive into a topic (e.g., "I want to learn Kubernetes"):
- Create a custom feed via `/feeds/custom/` filtered to that topic
- Set up a matching bookmark list via `POST /bookmarks/lists` to collect the best finds
- As the user reads, save articles to the list with `POST /bookmarks/`
- Track learning progress: compare bookmarked posts vs. new feed items
- Adjust feed filters over time as understanding deepens (beginner → advanced content)
**Trigger:** "Start a research project on [topic]"
### 🧠 Agent Self-Improvement Feed
Agents can overcome their knowledge cutoff by maintaining their own custom feed:
- Create a custom feed via `/feeds/custom/` for technologies the agent frequently assists with
- Periodically fetch `/feeds/custom/{feedId}` to ingest recent articles
- Use `/posts/{id}` to read full summaries and key points
- Agent can now provide advice with current information: "As of this week, the recommended approach is..."
- Continuously adapt the feed filters based on what users are asking about
**Trigger:** Agent background process, or "What's new in [technology] since your training?"
### 🔀 Multi-Source Synthesis
Get balanced perspectives by aggregating content across publishers:
- Search `/search/posts` for a topic to find coverage from multiple sources
- Use `/search/sources` to identify authoritative publishers on the topic
- Fetch posts from different sources via `/feeds/source/{source}`
- Synthesize diverse viewpoints into a balanced summary with citations
- Surface where sources agree vs. disagree on best practices
**Trigger:** "What are the different perspectives on [topic]?" or "Compare approaches to [problem]"
### 📈 Trending Radar
Help users stay ahead by monitoring community signals:
- Fetch `/feeds/popular` to detect what's gaining traction right now
- Cross-reference with user's followed tags to surface relevant trends
- Use `/feeds/discussed` to find topics sparking active debate
- Alert users when technologies in their stack are trending (new releases, security issues, paradigm shifts)
- Use `/tags` to fetch the full tag catalog and `/search/tags` to explore adjacent trending topics
**Trigger:** "What should I be paying attention to?" or "What's trending in [area]?"
## Rate Limits
* **60 requests per minute** per user
Check response headers:
- `X-RateLimit-Limit` - Maximum requests allowed per window
- `X-RateLimit-Remaining` - Requests remaining in current window
- `X-RateLimit-Reset` - Unix timestamp when the window resets
- `Retry-After` - Seconds to wait (only when rate limited)
## Errors
| Code | Meaning |
|------|---------|
| 401 | Invalid or missing token |
| 403 | Plus subscription required |
| 404 | Resource not found |
| 429 | Rate limit exceeded |
**Error Response Format:**
```json
{
"error": "error_code",
"message": "Human readable message"
}
```