@@ -100,6 +100,26 @@ paths:
100100 expect ( result . exitCode ) . toBe ( 0 ) ;
101101 expect ( result . stdout ) . toContain ( 'AI DevKit initialized successfully' ) ;
102102 } ) ;
103+
104+ it ( 'should save template registries to config' , ( ) => {
105+ const templatePath = join ( projectDir , 'template.yaml' ) ;
106+ const templateContent = `environments:
107+ - claude
108+ phases:
109+ - requirements
110+ registries:
111+ my-org/skills: https://github.com/my-org/skills.git
112+ ` ;
113+ require ( 'fs' ) . writeFileSync ( templatePath , templateContent ) ;
114+
115+ const result = run ( `init -t "${ templatePath } "` , { cwd : projectDir } ) ;
116+ expect ( result . exitCode ) . toBe ( 0 ) ;
117+
118+ const config = JSON . parse ( readFileSync ( join ( projectDir , '.ai-devkit.json' ) , 'utf-8' ) ) ;
119+ expect ( config . registries ) . toEqual ( {
120+ 'my-org/skills' : 'https://github.com/my-org/skills.git'
121+ } ) ;
122+ } ) ;
103123} ) ;
104124
105125describe ( 'lint command' , ( ) => {
@@ -302,16 +322,17 @@ describe('install command', () => {
302322 expect ( result . exitCode ) . not . toBe ( 0 ) ;
303323 } ) ;
304324
305- it ( 'should install when skills is an object with installed array (issue #62) ' , ( ) => {
325+ it ( 'should install when config has registries and skills ' , ( ) => {
306326 writeConfigFile ( projectDir , {
307327 version : '1.0.0' ,
308328 environments : [ 'claude' ] ,
309329 phases : [ 'requirements' ] ,
310- skills : {
311- installed : [
312- { registry : 'codeaholicguy/ai-devkit' , name : 'dev-lifecycle' }
313- ]
330+ registries : {
331+ 'codeaholicguy/ai-devkit' : 'https://github.com/codeaholicguy/ai-devkit.git'
314332 } ,
333+ skills : [
334+ { registry : 'codeaholicguy/ai-devkit' , name : 'dev-lifecycle' }
335+ ] ,
315336 createdAt : new Date ( ) . toISOString ( ) ,
316337 updatedAt : new Date ( ) . toISOString ( )
317338 } ) ;
@@ -348,11 +369,9 @@ describe('skill command', () => {
348369 version : '1.0.0' ,
349370 environments : [ 'claude' ] ,
350371 phases : [ ] ,
351- skills : {
352- installed : [
353- { registry : 'codeaholicguy/ai-devkit' , name : 'dev-lifecycle' }
354- ]
355- } ,
372+ skills : [
373+ { registry : 'codeaholicguy/ai-devkit' , name : 'dev-lifecycle' }
374+ ] ,
356375 createdAt : new Date ( ) . toISOString ( ) ,
357376 updatedAt : new Date ( ) . toISOString ( )
358377 } ) ;
@@ -369,21 +388,19 @@ describe('skill command', () => {
369388
370389 // .ai-devkit.json should no longer list the skill
371390 const config = JSON . parse ( readFileSync ( join ( projectDir , '.ai-devkit.json' ) , 'utf-8' ) ) ;
372- const installed = ( config . skills ?. installed ?? config . skills ?? [ ] ) as Array < { name : string } > ;
373- expect ( installed . some ( ( s ) => s . name === 'dev-lifecycle' ) ) . toBe ( false ) ;
391+ const skills = ( config . skills ?? [ ] ) as Array < { name : string } > ;
392+ expect ( skills . some ( ( s ) => s . name === 'dev-lifecycle' ) ) . toBe ( false ) ;
374393 } ) ;
375394
376395 it ( 'should preserve remaining skills in .ai-devkit.json when removing one' , ( ) => {
377396 writeConfigFile ( projectDir , {
378397 version : '1.0.0' ,
379398 environments : [ 'claude' ] ,
380399 phases : [ ] ,
381- skills : {
382- installed : [
383- { registry : 'codeaholicguy/ai-devkit' , name : 'dev-lifecycle' } ,
384- { registry : 'codeaholicguy/ai-devkit' , name : 'memory' }
385- ]
386- } ,
400+ skills : [
401+ { registry : 'codeaholicguy/ai-devkit' , name : 'dev-lifecycle' } ,
402+ { registry : 'codeaholicguy/ai-devkit' , name : 'memory' }
403+ ] ,
387404 createdAt : new Date ( ) . toISOString ( ) ,
388405 updatedAt : new Date ( ) . toISOString ( )
389406 } ) ;
@@ -394,9 +411,9 @@ describe('skill command', () => {
394411 run ( 'skill remove dev-lifecycle' , { cwd : projectDir } ) ;
395412
396413 const config = JSON . parse ( readFileSync ( join ( projectDir , '.ai-devkit.json' ) , 'utf-8' ) ) ;
397- const installed = ( config . skills ?. installed ?? config . skills ?? [ ] ) as Array < { name : string } > ;
398- expect ( installed . some ( ( s ) => s . name === 'dev-lifecycle' ) ) . toBe ( false ) ;
399- expect ( installed . some ( ( s ) => s . name === 'memory' ) ) . toBe ( true ) ;
414+ const skills = ( config . skills ?? [ ] ) as Array < { name : string } > ;
415+ expect ( skills . some ( ( s ) => s . name === 'dev-lifecycle' ) ) . toBe ( false ) ;
416+ expect ( skills . some ( ( s ) => s . name === 'memory' ) ) . toBe ( true ) ;
400417 } ) ;
401418 } ) ;
402419} ) ;
0 commit comments