Surfkit is a command-line program aim at for creating high Miller index crystal slab, twisted bilayer and heterostructured slab 
and manipulating molecular adsorption at surface models to adapt especially for first principles calculations. 
This program contains functions as follows:
Find conventional cell
Redefinition of crystal cell
Creation of crystal slab
Merge slabs with twist angles
Search twist angles with small strain
Search for adsorption site
Absorb molecule to site
The program supports VASP POSCAR format as input or output. 
Using Surfkit you can get an output POSCAR file of crystal slab, 
twisted bilayer and heterostructured slab with molecular adsorption at surface models.

##########################################################################################
For compiled version for Windows, Mac and Linux system.
$tar -zvxf Surfkit_*.tar.gz
You can find Surfkit in bin folder as executable file. You can also find two folder exp for example, and doc for documents.
For source code version 
$tar -zvxf Surfkit_src.tar.gz
cd src
make
You can then find Surfkit in bin folder as executable file. You can also find three folders: src for source code, exp for example, and doc for documents.

#########################################################################################
>>how to run (see more definition in doc/Manual.pdf)
>>To find conventional cell:
--conv file1(INPOS) file2(OUTPOS)
>>To redefinition of crystal cell:
--proj -mat  [file1(In)] [file2(Out)] ah ak al bh bk bl ch ck cl
--proj -auto [file1(In)] [file2(Out)] ch ck cl
-–dup [file1(In)] [file2(Out)] ah bk cl
>>To cleavage of crystal slab:
--thick  [file1(In)] [file2(Out)] [slab   thickness]
--vacuum [file1(In)] [file2(Out)] [vacuum thickness]
>>To search twist angles with small strain:
–-match [file1(Slab)] [file2(Slab)] {[limit] [parameter]}...
>>To merge slabs with twist angles
--twist [file1(Slab)] [file2(Slab)] [file3(Output)] [twist angle]
>>To search for adsorption site
--site2D [file1(Slab)] [file2(Site List)] [Distance(2D)] [Max multiplicity]
-–site3D [file1(Slab)] [file2(Site List)] [Distance(3D)] [Max multiplicity]
>>To absorb molecule to site
--adsorb -ele  [file1(Slab)] [file2(Site List)] [file3(Output)] [Type] [ID] [Element]
--adsorb -file [file1(Slab)] [file2(Site List)] [file3(Output)] [Type] [ID] [file4(Molecular)] [Element] [Element ID]
--adsorb -file [file1(Slab)] [file2(Site List)] [file3(Output)] [Type] [ID] [file4(Molecular)] [Element] [Element ID] [M11] [M12] [M13] [M21] [M22] [M23] [M31] [M32] [M33]	
