A VS Code extension that provides seamless integration with PowerSchool's Custom Page Management (CPM) system. Browse, edit, publish, and manage your PowerSchool custom pages and plugin files directly from VS Code.
For best results, install the companion PowerSchool plugin:
The companion plugin provides meta data about PowerSchool plugins to enrich the file tree. With it installed, files owned by PowerSchool plugins will display the plugin name and enabled status in their tooltips, and will be color-coded differently from built-in CPM files. Without it the extension still works fully — file browsing, downloading, and publishing all operate through the standard CPM API regardless.
- Go to the releases page and download the
vscode_cpm.zipplugin file - Log in to your PowerSchool admin panel
- Navigate to System > System Settings > Plugin Management Configuration
- Click Install and upload the
.zipfile - Enable the plugin after installation
Download the latest .vsix file from the releases page, then install it from the terminal:
code --install-extension ps-vscode-cpm-5.0.0.vsixReplace ps-vscode-cpm-5.0.0.vsix with the actual filename you downloaded.
To verify the installation:
code --list-extensions | grep ps-vscode-cpm- VS Code 1.104.0 or higher
- Access to a PowerSchool instance with Custom Page Management enabled
- A Service Account with admin access to Custom Page Management
- Network access to your PowerSchool server
- Install the Extension from a VSIX file (see above).
- Open your workspace: Open your plugin folder in VS Code. For plugin development, the workspace will usually be your plugin root (the folder containing
plugin.xmlandweb_root/). - Configure Server Settings: Open the Command Palette (
Ctrl+Shift+P/Cmd+Shift+P) and runps-vscode-cpm: Configure Server Settings, or go to VS Code Settings and search forps-vscode-cpm - Set your Plugin Web Root: Run
ps-vscode-cpm: Setup Plugin Web Root Directoryto tell the extension where yourweb_rootorquery_rootandplugin.xmllives relative to the workspace
| Setting | Default | Description |
|---|---|---|
ps-vscode-cpm.serverUrl |
"" |
PowerSchool server URL (must use https://, e.g., https://pstest.yourschool.org) |
ps-vscode-cpm.username |
"" |
PowerSchool admin username |
ps-vscode-cpm.password |
"" |
PowerSchool admin password |
ps-vscode-cpm.allowInsecureSsl |
false |
Disable TLS certificate verification. Set true only if your server uses a self-signed or internal CA certificate. |
ps-vscode-cpm.pluginWebRoot |
"web_root" |
Path to web_root relative to workspace root |
ps-vscode-cpm.autoSync |
true |
Automatically sync file tree when workspace opens |
ps-vscode-cpm.maxDepth |
5 |
Maximum folder depth to sync from PowerSchool |
| Value | Resolved Path |
|---|---|
"" |
<workspace>/ (workspace is the web root) |
"web_root" |
<workspace>/web_root/ |
"src" |
<workspace>/src/web_root/ |
"src/web_root" |
<workspace>/src/web_root/ |
Click the PowerSchool icon in the activity bar to access five panels:
- PowerSchool Files — Browse the remote file tree. Files are color-coded by type (built-in vs. custom)
- Commands — Quick access to common extension actions
- Server Info — View connection status and server details
- Templates — Insert pre-built page templates
- Snippets — Insert common PowerSchool code patterns
| Command | Description |
|---|---|
| Download File | Download a remote file to your local workspace |
| Publish to PowerSchool | Upload a local file to PowerSchool (inline button or context menu) |
| Publish Current File | Publish the file currently open in the editor |
| Publish New File to PowerSchool | Upload a new file that doesn't yet exist on the server |
| Delete from PowerSchool | Remove a custom file from the server |
| Show File Path Info | Display the resolved local and remote paths for the current file |
| Command | Description |
|---|---|
| Package Plugin as ZIP | Package your plugin directory as a ZIP ready for PowerSchool import |
| Setup Plugin Web Root Directory | Configure which folder maps to web_root |
| Configure Server Settings | Open the settings UI for server URL and credentials |
| Test JSON Endpoint | Test a custom API endpoint on your PowerSchool server |
| Refresh | Reload the remote file tree |
Quickly scaffold new pages via the Templates panel or Command Palette:
- Admin Page
- Admin Student Page
- Teacher Page
- Teacher Backpack Page
- Parent Portal Page
Insert common PowerSchool patterns via the Snippets panel or ps-vscode-cpm: Insert Code Snippet:
- Box-Round Div
- Date Picker Widget
- Dialog Link
- Dynamic Tabs
- jQuery Function Block
- PowerSchool Form
- Data Table
- TList SQL Block
- Collapsible Box
- If/Else Block
- Student Info Tags
- Breadcrumb Navigation
- On workspace open, the extension reads your VS Code settings to locate the server and credentials
- It authenticates with PowerSchool using your admin username and password
- The remote CPM file tree is fetched and displayed in the PowerSchool Files panel
- Local files are compared against the remote structure — icons indicate sync status
- Editing and saving a file locally pre-fetches the remote content ID to speed up publishing
- Publishing pushes the local file contents directly to PowerSchool via the CPM API
-
For New Plugins
- Create the file structure and file stubs
- Install the basic plugin on PowerSchool
- Download the remote files instead of opening the local files (this caches the remote file id and insures a quicker publishing experience)
-
For Existing Plugins
- Ensure the plugin Web Root setting is correct
- Start with a clean workspace
- Download the files you need to work with from the PowerSchool Server.
For plugin development, your workspace should look like:
your-plugin/
├── plugin.xml
└── web_root/ # <-- set pluginWebRoot to "web_root"
├── admin/
├── guardian/
├── student/
├── teacher/
└── ...
- Binary files are not supported for upload; only text-based files can be published
Enjoy seamless PowerSchool custom page development!