Site Pages Content Calendar logo

Site Pages Content Calendar

Organization
pnp
site-pages-content-calendar

Build a full-size, interactive, visually rich HTML content calendar from a SharePoint Site Pages library, using real page metadata and safe status classification. Use when the user says: - "create an interactive content calendar for site pages" - "build a site pages calendar dashboard" - "make a SharePoint page publishing calendar" - "show drafts, published, and scheduled pages in a calendar" - "generate an HTML dashboard for page status and publish dates"

Overview

Publisherpnp
Repositorysharepoint-skills
Skill namesite-pages-content-calendar
Stars
141
Forks
60
Bundled files
Instructions only
LicenseMIT
Links
  • Markdown instructions

    A SKILL.md file the model loads on demand, so it only costs tokens when a request actually matches.

  • Works with any LLM

    AI skills are plain Markdown, not provider-specific code, so this works with GPT, Claude, Gemini, Grok, or a local model.

  • Self-contained

    Everything the model needs lives in the instructions — no extra files to sync.

  • Open source

    Published by pnp on GitHub. Read the source before you install it.

Installation

Install the Site Pages Content Calendar AI skill in TypingMind to use it with any LLM, or drop it into another agent that reads SKILL.md.

1

Install in TypingMind

TypingMind installs a skill straight from its GitHub folder — it reads SKILL.md, bundles the resource files, and stores the result locally.

  1. Open the app and go to Plugins → Skills.
  2. Choose "Install from GitHub".
  3. Paste the skill folder URL below and confirm.
    https://github.com/pnp/sharepoint-skills/tree/main/Skills/site-pages-content-calendar/site-pages-content-calendar
  4. Enable the skill in any chat where you want it available.
Plugins → Skills → Add skill → From GitHub URL, then paste the folder URL and press Continue.
2

Install in another agent

Any agent that reads the Agent Skills format can use this skill — copy the folder into that agent's skills directory.

Claude Code — .claude/skills
git clone --depth 1 https://github.com/pnp/sharepoint-skills.git /tmp/sharepoint-skills
mkdir -p .claude/skills
cp -r /tmp/sharepoint-skills/Skills/site-pages-content-calendar/site-pages-content-calendar .claude/skills/site-pages-content-calendar
Restart Claude Code after copying so it picks up the new skill.

Use it in TypingMind

Enable Site Pages Content Calendar in any TypingMind chat and the model takes it from there. Its name and description sit in the system prompt, and the moment a request matches, the model loads the full instructions itself — you never invoke it by hand, and it costs no tokens until it is actually used.

The model loads Site Pages Content Calendar on its own as soon as a request matches it.

Works with any AI model

AI skills are plain Markdown instructions rather than provider-specific code, so Site Pages Content Calendar is not tied to the model it was written for. Install it once in TypingMind and use it with GPT-5, Claude, Gemini, Grok, DeepSeek, Mistral, Llama, or a local model you run yourself — all on your own API keys.

  • Loaded only when it is needed

    The system prompt carries just the name and description. The instructions are fetched on the first matching request, so an idle skill costs nothing.

  • Switch models mid-chat

    Because the skill is instructions rather than code, changing model does not break it — the next model reads the same SKILL.md.

Skill instructions

This is the SKILL.md content the model loads. Read it before installing — a skill is instructions your model will follow.

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

  1. 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, and File_x0020_Type.
  2. List the Site Pages items with list_items.
    • Use rowLimit large enough for the whole library.
    • Use viewFields with the verified internal names.
    • Filter to actual pages where possible: File_x0020_Type = aspx.
    • If hasMore is true, process the returned dataRef, not the inline preview.
  3. Classify status without guessing.
    • Scheduled: only when _ScheduledVersion is non-empty or _ModerationStatus explicitly contains “Scheduled”.
    • Do not classify pages as scheduled just because _PublishStartDate exists; it can be defaulted/populated without a scheduled page.
    • Draft: _ModerationStatus contains “Draft” or item URL indicates draft.
    • Published: _ModerationStatus contains “Approved/Published” or item URL indicates published.
    • Unknown: no reliable status signal returned.
  4. Choose calendar placement date.
    • Scheduled pages: _PublishStartDate if available; otherwise Created with a label saying scheduled date unavailable.
    • Published pages: FirstPublishedDate if 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.
  5. 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.
  6. Show page titles directly in calendar cells.
    • Each date cell must make the page title visible for pages on that date, using Title when present and falling back to FileLeafRef/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.
  7. 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.
  8. 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.
  9. Generate the HTML using execute_code with outputDataRef: true.
    • Keep all CSS and JavaScript inline.
    • Do not reference external scripts, fonts, or images.
  10. Save the dashboard with create_file as .html using contentDataRef; omit contentDataPath for raw HTML output from execute_code.

Output format

Reply with:

  • A markdown link to the created HTML dashboard.
  • A short note summarizing the status logic, especially that scheduled pages only use _ScheduledVersion or explicit scheduled status.
  • A short note that the calendar is rendered full-size to use the available page/viewport area.
  • A short note that page titles are visible on the calendar and clicking a title opens a true right-side overlay drawer.
  • If any status/date fields are missing, say what was unavailable instead of filling gaps.

Constraints

  • Don’t hallucinate status, dates, page names, or URLs.
  • Don’t treat _PublishStartDate alone as proof of a scheduled page.
  • Don’t use the inline preview for final counts if a dataRef is available.
  • Don’t constrain the calendar to a small fixed-size widget unless the user explicitly asks for an embedded compact view.
  • Don’t make page details accessible only through hover.
  • Don’t place details below the calendar; clicking a visible title must open a right-side overlay drawer.
  • If tool calls fail or return empty data, say so plainly and don’t invent content.

Frequently asked questions

What does the Site Pages Content Calendar AI skill do?

Build a full-size, interactive, visually rich HTML content calendar from a SharePoint Site Pages library, using real page metadata and safe status classification. Use when the user says: - "create an interactive content calendar for site pages" - "build a site pages calendar dashboard" - "make a SharePoint page publishing calendar" - "show drafts, published, and scheduled pages in a calendar" - "generate an HTML dashboard for page status and publish dates"

Why use Site Pages Content Calendar on TypingMind?

Because you install it once and use it with any model. Site Pages Content Calendar is plain Markdown rather than provider-specific code, so the same skill runs on GPT-5, Claude, Gemini, Grok, or a local model — and you can switch model mid-chat without it breaking. TypingMind runs on your own API keys, so you pay providers directly instead of a per-seat subscription, and your skills and chats stay in your own storage.

How do I install Site Pages Content Calendar in TypingMind?

Open Plugins → Skills → Install from GitHub in TypingMind and paste https://github.com/pnp/sharepoint-skills/tree/main/Skills/site-pages-content-calendar/site-pages-content-calendar. TypingMind reads its SKILL.md and installs it as a skill you can enable per chat.

Which AI models can use Site Pages Content Calendar?

Any model you connect in TypingMind. AI skills are plain Markdown instructions rather than provider-specific code, so GPT, Claude, Gemini, Grok, and local models can all load this skill when a request matches it.

How many AI models can I use with Site Pages Content Calendar?

As many as you like. As long as a model supports skills, you can use Site Pages Content Calendar with it — GPT, Claude, Gemini, Grok, DeepSeek, Mistral, Llama and more — all on TypingMind with your own API keys.

Is the Site Pages Content Calendar AI skill free?

Yes. It is published on GitHub by pnp under the MIT license. You only pay your own AI provider for the tokens you use.

What are AI skills?

An AI skill is a reusable instruction bundle that teaches an AI model how to do one specific task. It follows the open Agent Skills format: a SKILL.md file with a name and description, plus any scripts, templates or reference files the model may need. The model reads the instructions only when your request matches the skill, so an installed skill costs nothing until it is used.

How are AI skills different from plugins or MCP servers?

A plugin or MCP server gives a model new tools to call — code that runs somewhere and returns a result. An AI skill gives the model knowledge and process instead: how to approach a task, which steps to follow, what good output looks like. Skills are plain Markdown, so they need no server, no API key and no runtime, and they work with any model.

View all

Set up your own AI workspace now

Get notified about new features and future giveaways by subscribing to our newsletter 👇