Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx skills add pnp/sharepoint-skills --skill site-pages-content-calendargit clone --depth 1 https://github.com/pnp/sharepoint-skillsWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/pnp/sharepoint-skills/site-pages-content-calendar)<a href="https://agentmods.dev/skills/pnp/sharepoint-skills/site-pages-content-calendar"><img src="https://agentmods.dev/badge/skills/pnp/sharepoint-skills/site-pages-content-calendar/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/pnp/sharepoint-skills/site-pages-content-calendar"><img src="https://agentmods.dev/badge/skills/pnp/sharepoint-skills/site-pages-content-calendar.svg" alt="Reviewed on agentmods" width="80" height="20"></a>- NVIDIA SkillSpector pass
What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00097 | $0.01381 |
| Opus 5 | $0.00048 | $0.00691 |
| Sonnet 5 | $0.00019 | $0.00276 |
| Haiku 4.5 | $0.00010 | $0.00138 |
Grade A, and why
site-pages-content-calendar scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 12d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 82 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Build Site Pages Content Calendar
When to use
Use this skill when the user wants an interactive HTML calendar/dashboard for SharePoint Site Pages, especially with page names, published/draft/scheduled status, dates, and click-through detail views. The generated calendar should be full-size by default, using the available browser viewport and content area instead of a small embedded or fixed-height calendar.
Inputs
- Current SharePoint site URL.
- Site Pages library/list ID if available from context. If not available, discover or resolve it before querying.
- Optional user preferences for destination file name, folder, colors, or layout.
Steps
- Inspect the Site Pages schema with
get_list_schema.- Include hidden and read-only fields so status fields are visible.
- Confirm internal names for:
FileLeafRef,FileRef,Title,Created,Modified,FirstPublishedDate,_PublishStartDate,_ScheduledVersion,_ModerationStatus,_UIVersionString,_Level,Author,Editor,PageLayoutType,Description, andFile_x0020_Type.
- List the Site Pages items with
list_items.- Use
rowLimitlarge enough for the whole library. - Use
viewFieldswith the verified internal names. - Filter to actual pages where possible:
File_x0020_Type = aspx. - If
hasMoreis true, process the returneddataRef, not the inline preview.
- Use
- Classify status without guessing.
- Scheduled: only when
_ScheduledVersionis non-empty or_ModerationStatusexplicitly contains “Scheduled”. - Do not classify pages as scheduled just because
_PublishStartDateexists; it can be defaulted/populated without a scheduled page. - Draft:
_ModerationStatuscontains “Draft” or item URL indicates draft. - Published:
_ModerationStatuscontains “Approved/Published” or item URL indicates published. - Unknown: no reliable status signal returned.
- Scheduled: only when
- Choose calendar placement date.
- Scheduled pages:
_PublishStartDateif available; otherwise Created with a label saying scheduled date unavailable. - Published pages:
FirstPublishedDateif available; otherwise Created with a label saying published date unavailable. - Draft pages: Created date, labeled as draft placement.
- Never invent missing dates; display “Not available” where absent.
- Scheduled pages:
- Render the calendar at full size.
- Make the main calendar fill the available page width and height, using responsive layout such as
min-height: 100vh, flexible columns/rows, and no narrow fixed-width wrapper around the calendar. - Use a full-width dashboard shell and let the calendar grid expand to the browser viewport.
- Avoid small embedded previews, constrained cards, or fixed-height containers that make the calendar look miniaturized.
- Make the main calendar fill the available page width and height, using responsive layout such as
- Show page titles directly in calendar cells.
- Each date cell must make the page title visible for pages on that date, using
Titlewhen present and falling back toFileLeafRef/file name. - Keep titles compact with truncation, wrapping, or a visible “+N more” affordance if the cell has many pages.
- Do not hide all titles behind counts only; counts may supplement titles but must not replace them.
- Each date cell must make the page title visible for pages on that date, using
- Open a true right-side overlay drawer when a page title is clicked.
- Clicking a visible page title in the calendar cell must open a fixed-position drawer that slides in from the right side of the browser viewport.
- Implement the drawer with CSS such as
position: fixed; top: 0; right: 0; height: 100vh; z-index: ...; transform: translateX(...), plus an overlay/backdrop and close button. - Do not render details below the calendar, below the selected date, or as an inline panel that appears after the calendar.
- The drawer should overlay the page or sit above the calendar without causing the calendar to collapse into a compact widget.
- The drawer should show all available metadata for the clicked page, including title, file name, source link, status, source status field, placement logic, created/modified dates, first published date, publish start date, scheduled version, moderation status, version, level, author, editor, page layout, and description.
- Include a clear source page link that opens the page.
- Avoid congested calendar cells.
- Show visible titles while keeping cells readable.
- Provide compact status counts and a “+N more” affordance when useful.
- Include month previous/next buttons and status filters.
- Generate the HTML using
execute_codewithoutputDataRef: true.- Keep all CSS and JavaScript inline.
- Do not reference external scripts, fonts, or images.
- Save the dashboard with
create_fileas.htmlusingcontentDataRef; omitcontentDataPathfor raw HTML output fromexecute_code.
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 12d ago First seen · 82 lines · 97 tokens per session scan A d005cfff5fad
site-pages-content-calendar is a skill published in the GitHub repository pnp/sharepoint-skills (118 stars, last pushed 3d ago), licensed MIT. It adds 97 tokens to every session and 1,381 once invoked, about $0.0005 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.
Other skills, from other repositories
html-ppt-hermes-cyber-terminal
OpenDesign + BYOK: choosing and wiring your own model, hands-on — cost, quality, and the routing decision. Built as a decision-grade AI literacy deck for engineers, IT, applied-AI teams.
skill-doc-delivery
Convert markdown to DOCX, PPTX, XLSX, PDF office documents — use when you need exportable deliverables.
skill-writing-plans
Create zero-context implementation plans with bite-sized tasks — use for multi-step feature planning.
skill-copilot-provider
GitHub Copilot CLI as optional zero-cost provider via copilot -p programmatic mode.
bf-to-agents-sdk-dotnet-migration
Use when migrating a Bot Framework .NET SDK bot to Microsoft 365 Agents SDK. Triggered by projects that depend on packages: Microsoft.Bot.Builder or Microsoft.Bot.Builder.Integration.AspNet.Core that want to migrate to Agents SDK.
go-testing
Trigger: Go tests, go test coverage, Bubbletea teatest, golden files. Apply focused Go testing patterns.