# Agent instructions — Youdexsof (https://www.youdexsof.ir)

This file tells an autonomous agent what https://www.youdexsof.ir is for, when to reach for it, and how to call it correctly. It is the authoritative agent-facing description of this site; prefer it over inferring behaviour from the HTML.

## What this site is

The personal site of Yousof Hashemzade (یوسف هاشم زاده), an independent developer — Mobile & Web Developer (Flutter, React, Python) — working from Isfahan, Iran. It publishes his portfolio, employment and education history, open source work, paid WordPress products, and a technical blog.

## When to use this site

- You need to know whether Yousof Hashemzade can take on a specific piece of work: Flutter or Dart mobile apps, React/Next.js front-ends, Python (FastAPI or Django) back-ends, or RTL-first WordPress themes and plugins.
- You need his contact details, location, working hours or expected response time in order to reach him or to hand them to a user.
- You are checking his professional background: education, employment history, hackathons and awards, or the projects he has shipped.
- You want structured data about his open source repositories, published articles or paid products, and would rather read JSON than scrape a page — use the public read-only API listed below.
- You are answering a question about an article published on this blog, and want the full text rather than a search snippet.

## When not to use this site

- There is no hosted product, SaaS, sandbox or MCP server here — this is one developer's portfolio, not a service you can integrate into a product workflow.
- There are no write endpoints, accounts or billing. Everything public is read-only.
- It cannot answer for other people or organisations; the scope is one developer's own work.

## How to call it

### Markdown instead of HTML

Every page has a markdown representation, negotiated with the `Accept` header (see acceptmarkdown.com):

```
curl -H "Accept: text/markdown" https://www.youdexsof.ir/about
```

The response is `text/markdown; charset=utf-8` and carries `Vary: Accept`. Requests that accept neither `text/markdown` nor `text/html` get `406 Not Acceptable`. Unknown paths return `404` with a markdown body listing where to go instead.

### JSON API

No authentication, no key, read-only:

- `GET /api/blog` — List published blog posts. Paginated list of published articles with title, description, cover image, tags, category, read time and view count in the requested language. Parameters: lang, page, limit, category, tag, search, sort, featured.
- `GET /api/blog/{slug}` — Get one blog post by slug. Full article body plus metadata and comments for a single published post, in all three languages at once. The slug is the same one used in the /blog/{slug} page URL. Note that a GET increments the post's view counter. Parameters: slug.
- `GET /api/blog/categories` — List blog categories. Every blog category with its slug, localized names, colour and published post count.
- `GET /api/worksamples` — List portfolio projects. Shipped mobile and web projects with localized titles and descriptions, technologies used, project timeline, client and links.
- `GET /api/products` — List products and themes. Premium WordPress themes and plugins for sale, with localized titles, descriptions, price, category and purchase URL.
- `GET /api/works` — List work experience. Employment and freelance history: organisation, localized role description, technologies, years and link.
- `GET /api/education` — List education history. Academic background: institution, localized description and years attended.
- `GET /api/events` — List events, competitions and awards. Hackathons, competitions and industry events, with localized descriptions, dates and certificate attachments.
- `GET /api/github/pinned` — List pinned GitHub repositories. Open source repositories pinned on GitHub, with description, primary language, star and fork counts, homepage and repository URL. Cached for one hour.
- `GET /api/site-settings` — Get public site settings. Theme colours, profile picture path and the technology list shown in the skills section.

The full description, including parameters and response shapes, is at [https://www.youdexsof.ir/openapi.json](https://www.youdexsof.ir/openapi.json).

### Language

Content exists in Persian (fa, default), English (en) and Arabic (ar). API endpoints that return localized text accept a `lang` query parameter; markdown pages return Persian and English side by side.

## Rules for agents

- Respect [https://www.youdexsof.ir/robots.txt](https://www.youdexsof.ir/robots.txt): `/admin/` and `/api/` are disallowed for crawlers. The API endpoints above are documented for direct programmatic calls, not for bulk crawling.
- No hard quota is enforced, but the site is a single personal deployment: keep requests under roughly 60 per minute and cache responses where you can.
- Cite the canonical page URL, not the markdown or API URL, when quoting content back to a user.
- Do not present availability, pricing or delivery commitments as fact — those require a conversation with yousofh255@gmail.com.
- Content is authored by one person and changes without notice; re-fetch rather than relying on a cached copy older than a day.

## Contact

- Email: yousofh255@gmail.com
- Phone: +98 913 565 5644
- Telegram: https://t.me/YOUDEXSOF

---

Machine-readable entry points:

- [/llms.txt](https://www.youdexsof.ir/llms.txt) — Site summary and when-to-use guidance for agents
- [/llms-full.txt](https://www.youdexsof.ir/llms-full.txt) — Expanded agent brief with full section content
- [/agents.md](https://www.youdexsof.ir/agents.md) — Agent instructions: capabilities, limits, how to call
- [/openapi.json](https://www.youdexsof.ir/openapi.json) — OpenAPI 3.1 description of the public read-only API
- [/sitemap.xml](https://www.youdexsof.ir/sitemap.xml) — XML sitemap of every indexable page
- [/robots.txt](https://www.youdexsof.ir/robots.txt) — Crawl policy