Full-Stack & Agentic AI Engineer — Karachi, Pakistan
My personal site. Not built yet — this repository currently holds the files that have to sit at the root of the domain, ready for the build to land on top of them.
GitHub serves a repository at https://<user>.github.io/ only when the
repository is named exactly <user>.github.io. Every other repository is a
project page and gets served under a subpath, like
/agent-mcp-rag-projects/.
That distinction matters for two things a subpath cannot do:
robots.txt is only ever read from the root of a host. A file at
/some-project/robots.txt is ignored. So this repository is the only place
on the account that can declare sitemaps or crawl rules for any page on
abdul-kabir-jawed.github.io, including the project pages.sitemap.xml, for the same reason — it is the URL search
consoles expect by default.If this repository is ever renamed, both of those stop working and the site moves to a subpath. Don’t rename it.
| File | Purpose |
|---|---|
robots.txt |
Allows crawling and declares two sitemaps: this site’s, and the textbook’s at /agent-mcp-rag-projects/sitemap.xml |
sitemap.xml |
One <url> entry so far. Add a block per page as the site grows. |
entity-block.html |
A Person JSON-LD block with sameAs pointing at the GitHub and LinkedIn profiles. Paste it into the home page’s <head> when the real build lands. A copy is already live at the bottom of this file, so the served page carries it today. |
_config.yml |
Sets the page title and description. Without it the <title> led with the hostname instead of the name. |
googledc15661af8a2476b.html |
Google Search Console verification for the whole host. Do not delete it — removing it revokes verification for every page on the domain. |
entity-block.html is not a page — it is a snippet. GitHub strips <script>
tags out of rendered READMEs, so there is no way to state “the GitHub account
and the LinkedIn profile are the same person” in machine-readable form anywhere
on the GitHub profile itself. This site is the only place that can carry it,
which is most of the reason it is worth shipping.
It is now shipped: Jekyll renders this README into index.html and kramdown
passes raw HTML through, so the block at the bottom of this file reaches the
served page. Verify with curl -s https://abdul-kabir-jawed.github.io/ | grep
ld+json — expect two blocks, the theme’s WebSite and this Person.
robots.txt and sitemap.xml at the repository root. If the build
tool empties the root, move them into whatever directory it copies verbatim
(public/ for most frameworks, static/ for Docusaurus).entity-block.html into the home page <head>, and
delete the duplicate copy at the bottom of this file — two Person blocks
on one page is worse than one. Make sure the page also carries a visible
<h1>Abdul Kabir Jawed</h1> and the job title as text: structured data and
visible text should agree.https://abdul-kabir-jawed.github.io/robots.txt actually returns the file.https://abdul-kabir-jawed.github.io/ — which covers every
project page on the domain, so it does not need repeating per repository.
DNS verification is not available on a github.io subdomain; this used the
HTML-file method, which is why googledc15661af8a2476b.html must survive
every future build.Abdul Kabir Jawed — Full-Stack & Agentic AI Engineer, Karachi, Pakistan GitHub · LinkedIn · abdulkabirjawed@gmail.com