Skip to content
Back to skills

Portal

ASecurity

Prime on Eidet's Portal before changing it — the per-repo generated HTML state view behind GET /api/eidet/portal, PortalRenderer's one-fetch section loop, the IPortalSection contract and its five v1 sections (Identity, Architecture, Procedures, Heuristics, Health), PortalMarkup citation anchors and escaping, and the augment=off liveness model. Use when the task touches a Portal section, portal rendering or citations, or the Web UI's portal view. Not for the approve-a-page curation loop (see c...

  • 4 stars
  • 0 votes
  • 0 copies
  • 3 views
  • Added September 3, 2026
ai-agentsgoapi

Works with

  • api
  • mcp

Security analysis

A100/100

Scanned September 3, 2026

npx -y skills add stevehansen/eidet --skill portal --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Portal?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Portal
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/stevehansen-portal/badge)](https://www.skillsdirectory.com/skills/stevehansen-portal)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: portal
description: Prime on Eidet's Portal before changing it — the per-repo generated HTML state view behind GET /api/eidet/portal, PortalRenderer's one-fetch section loop, the IPortalSection contract and its five v1 sections (Identity, Architecture, Procedures, Heuristics, Health), PortalMarkup citation anchors and escaping, and the augment=off liveness model. Use when the task touches a Portal section, portal rendering or citations, or the Web UI's portal view. Not for the approve-a-page curation loop (see canon), not for ranked agent-facing retrieval (see recall).
---

# Portal — priming

**Canonical spec:** `docs/domains/portal.md` — read it for the section rules, all invariants, key files,
and gotchas. Terms of record: `UBIQUITOUS_LANGUAGE.md` § Canon (for the Canon/Portal distinction).

A read-only projection of live memories into cited HTML sections: "what has this agent actually learned
here?", auditable by a human. Human surface only — no MCP tool, on purpose.

## Core invariants (get these right)

- **Every claim is a citation** — render through `PortalMarkup.Cite` (anchor to `#memory/<id>` with
  `data-mid`). A section must never state something it can't hyperlink.
- **Escape everything** via `PortalMarkup.Esc`; memory content is agent-written and unescaped.
- **Selection rules are deterministic and total** — first-match precedence, ties broken on id, so two
  renders of the same corpus agree.
- **Sections read only `PortalContext`** — the renderer pre-fetches once; a section issuing its own query
  breaks that contract.
- **v1 renders live and caches nothing**; `augment` is hardcoded `"off"` (the field exists so the API
  shape survives augmentation landing).
- **Normalize the repo id once at the top** — `BrowseAsync` normalizes internally, `GetCountsByTypeAsync`
  doesn't.

## Key files / reuse

- `src/Eidet.Core/Portal/PortalRenderer.cs` — the facade + the default section list.
- `src/Eidet.Core/Portal/IPortalSection.cs` — implement this (it's `internal`) to add a section.
- `src/Eidet.Core/Portal/PortalMarkup.cs` — escaping, citations, ordering; never hand-roll HTML.
- `src/Eidet.Core/Portal/PortalContext.cs` — the only input a section gets.

## Gotchas

- The pre-fetch is bounded — a large repo renders a *partial* Portal with no warning.
- `AlwaysPresent` is a promise the section keeps itself; the renderer only drops nulls.
- Health metrics stick to what every memory carries (counts + a `CreatedAt` histogram).
- The Glossary section doesn't exist yet and is where Canon convergence is designed to land — don't
  bolt `canon:*` reads onto an existing section.
- Only one test file covers this domain (`PortalRendererTests`); a changed section rule needs a test in
  the same PR or nothing catches it.

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.