diff --git a/src/lib/features/database/jobs/JobSkillEditPane.svelte b/src/lib/features/database/jobs/JobSkillEditPane.svelte
new file mode 100644
index 00000000..b7c88023
--- /dev/null
+++ b/src/lib/features/database/jobs/JobSkillEditPane.svelte
@@ -0,0 +1,216 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {#if skill && imageId}
+
+
+
+ {/if}
+
+
+
diff --git a/src/lib/features/database/jobs/openJobSkillEditSidebar.ts b/src/lib/features/database/jobs/openJobSkillEditSidebar.ts
new file mode 100644
index 00000000..1839e0e3
--- /dev/null
+++ b/src/lib/features/database/jobs/openJobSkillEditSidebar.ts
@@ -0,0 +1,25 @@
+import { sidebar } from '$lib/stores/sidebar.svelte'
+import JobSkillEditPane from './JobSkillEditPane.svelte'
+import type { JobSkill } from '$lib/types/api/entities'
+
+interface OpenJobSkillEditOptions {
+ jobId: string
+ skill?: JobSkill
+ onSaved?: () => void
+}
+
+export function openJobSkillEditSidebar(options: OpenJobSkillEditOptions) {
+ const { jobId, skill, onSaved } = options
+ const title = skill ? 'Edit Skill' : 'New Skill'
+
+ sidebar.openWithComponent(
+ title,
+ JobSkillEditPane,
+ {
+ jobId,
+ skill,
+ onSaved
+ },
+ { scrollable: true }
+ )
+}
diff --git a/src/routes/(app)/database/jobs/[granblueId]/+page.svelte b/src/routes/(app)/database/jobs/[granblueId]/+page.svelte
index bbb768f8..7eecbf3e 100644
--- a/src/routes/(app)/database/jobs/[granblueId]/+page.svelte
+++ b/src/routes/(app)/database/jobs/[granblueId]/+page.svelte
@@ -98,7 +98,7 @@
{:else if currentTab === 'skills'}
-
+
{:else if currentTab === 'images'}
{/if}